Conversation
The feeder ran on a laptop scheduled task and fired twice between 18:03 and 05:43 instead of 36 times: the machine was asleep, and the bees idled all night. It also fed from a pool that is nearly empty — 24 files of empty function bodies left, about fifteen minutes of swarm work. This runs the feeder on GitHub's cron every five minutes, and feeds it from the project's own goal instead: 870 hand-written Python, Rust, TypeScript and C files that have no .t27 counterpart. bootstrap/ is excluded — it is stage-0 and compiler.rs sits under the FROZEN_HASH seal. The criteria it writes are structural and cannot express correctness; the review-side oracle remains the judge of that. Refs #3977 Co-Authored-By: Claude Code <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
|
Do not merge yet — converted to draft. Measured after opening this PR:
The fuel works as fuel: the queue filled and the lanes saturated. It does not work as work — the bees claim these issues and refuse them, silently (no comment on the issue, and The difference between the issues that produce branches and the ones that do not is that the empty-bodies issues name a boundary file that exists, while every port issue names Merging this on a |
|
Correction to the comment above, and the measurement that replaces it. That comment said the bees refuse these issues and blamed the boundary naming a file that does not exist. Both halves were wrong.
A tick that found work and had no free lane. The swarm was working the whole time, and the HTTP 429s that seemed to confirm a dead provider were the swarm saturating its own account's concurrency — with the pool idle, all five keys answered on the first try. So the line could finally be judged on its own, against a control created the same hour:
47 of the 60 port issues got a branch and 45 of those branches are empty. Two carry a real file — The line works about once every thirty dispatches. That is the issue format, not the swarm: porting a whole module into a new file is a far larger turn than filling one empty function body in a file that already exists. Staying a draft until the format is worth the lanes it would occupy. Worth trying first: one function per issue instead of one file, and a worked example of a ported function in the body. |
Closes #3977
Why
The feeder ran on the operator's laptop. Between 18:03 and 05:43 on 2026-09-16/17 it fired twice instead of 36 times — the machine was asleep — and the swarm idled through the night. A feeder that sleeps is not a feeder.
It also fed from a pool with a bottom: 24 uncovered files of empty function bodies remain, roughly fifteen minutes of swarm work at the measured rate.
What changes
.github/workflows/queen-feed.yml—*/5cron plusworkflow_dispatch,permissions: {contents: read, issues: write}, aqueen-feedconcurrency group so two runs cannot double-create. It needs no compiler: the feeder only walks the checkout and reads the issue list.tools/queen/queen_feed_port.py— generates one issue per hand-written source file: quotes its function signatures verbatim and asks forspecs/port/<path>.t27with a test per function.--top-up Nmaintains a backlog of N dispatchable issues rather than reacting to an empty queue. It asks/queen/statuswhat the Queen is actually blocked on (claimed, completed-but-open, file conflicts, incomplete) and subtracts that from the open boundary-carrying issues — counting the raw number instead reads as a full queue while the lanes starve. If the status endpoint is unreachable it stops rather than sizing a backlog blind.Measured, not assumed
6e8a494Scope limits
bootstrap/is excluded: stage-0, andcompiler.rsis under theFROZEN_HASHseal (FROZEN.md §5).The acceptance criteria are structural — file present, same function names, no codegen panic, no parser recovery, a test per function. They cannot express correctness; the review-side oracle compiles the generated Zig and runs its tests, and that remains the judge.
Validation
#3974, #3975 and #3976 were created from this generator as a probe. All three were picked up and dispatched, confirming the Queen accepts a
## Boundarynaming a file that does not exist yet.Note: scheduled workflows only run from the default branch, so the cron starts firing once this is merged.
🤖 Generated with Claude Code