Skip to content

feat(queen): a pusher that reads the system on a schedule and files what stopped - #4283

Merged
gHashTag merged 1 commit into
masterfrom
feat/pusher-agent
Sep 20, 2026
Merged

gHashTag merged 1 commit into
masterfrom
feat/pusher-agent

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #4282

Every stall so far was a number nobody was reading. This reads them every 30 minutes, compares with the last reading (kept as JSON in its own issue), and files what stopped — with the command that would falsify each rule.

Self-test: 11 rule shapes, three of which a healthy system must not fire. Live dry run: 8 bees running, 0 claimed, one rule fired (nothing merged in six hours while 19 bee PRs are open).

🤖 Generated with Claude Code

…hat stopped

Three stalls, three causes, one shape: the evidence existed and nobody was
looking. The feeder fired twice in twelve hours instead of 36 (2026-09-17); the
batch merge failed every run for two days in three seconds on a model id, with
no log (2026-09-19); 71 issues sat held by attempts that had spent their
retries with 0 of 8 lanes running and 673 candidates refused (2026-09-20).
Each time the operator found out by asking.

The pusher takes the reading on a schedule, compares it with the previous one -
kept as JSON inside its own issue, so the history is public and no state file
is committed - and applies one rule per stall, each naming the command that
would falsify it. Its self-test covers eleven shapes, three of which a moving
system must NOT fire.

Verified against the live system: 8 bees running, 0 claimed, 673 open issues,
0 queued runs, and exactly one rule fired - "nothing merged in six hours while
19 bee pull requests are open", which is the conflicted-branch backlog.

Closes #4282

Gates: python3 tools/queen/pusher.py --self-test -> "ok: 11 rule shapes,
including three a moving system must NOT fire"; --dry-run against production
printed the reading and filed nothing; python3
scripts/ci/check_pr_branch_filters.py exits 0 with the new workflow classified.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) September 20, 2026 05:00
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-20 05:00:33 UTC

Summary

Status Count
Total Open PRs 39
PRs with Failing Checks 18
PRs with All Checks Green 21
READY 20
FAILING 18
PENDING 0
NO CHECKS YET 0

These columns do not partition: 20 + 18 + 0 + 0 = 38, and there are 39 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 1d5529b into master Sep 20, 2026
26 of 29 checks passed
gHashTag added a commit that referenced this pull request Sep 20, 2026
… path (#4304)

Three checks are red on master. Two are this loop's.

CENSUS. tools/census/quiet.txt pinned `workflow files read 51`; the tree holds
57. The six added since the pin are #4277, #4279, #4281, #4283, #4291 and
#4300, all merged by this loop, and cli-tri has been red since 2026-09-17.
What moved, explicitly: quiet 51 -> 57 workflow files and 123 -> 135 "named a
path but not quiet"; shell 51 -> 57 files, 72 -> 78 jobs, 249 -> 267 run-steps,
228 -> 246 steps the runner runs with `bash -eo pipefail`. The gates did not
change; the population grew.

HOME PATH. feed_defects.py carries a comment explaining that an absolute
`/Users/<name>/t27/target/release/t27c` once went into 137 open issues -- and
spells it out to say so, which is what the scan catches. It now reads
`.../t27/target/release/t27c`, same meaning, no home directory.

WORKTREES. That gate also failed in every worktree on a path no commit
contains: it excludes the `.git` DIRECTORY, and a worktree's `.git` is a FILE
holding `gitdir: /Users/...`. `--exclude=.git` joins `--exclude-dir=.git`. The
reviewer measures in a detached worktree and every bee works in one.

NOT FIXED HERE: `coverage` reports 544 stale seals and has no successful run in
its last 60 on master, reaching back past 2026-09-18. Re-sealing 544 specs
records what the compiler now produces -- a decision about the ledger, not a
repair.

Closes #4303

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Nothing watches the swarm: every stall so far was a number nobody was reading

1 participant