Measured 2026-09-23: the last queen-* branch reached GitHub at 10:33 on 09-22, pushed under a personal token from a machine, while 59 open issues carried an accept whose work had never left the container. The Queen skips those as "the work already landed", so they hold their files, the delegatable backlog empties, and the swarm sits at 0 of 20 lanes with a queue of finished work nobody can see. A dry run of the publisher confirms it: no commits=75, already a PR=342, issue not open=137, published=0 - there is nothing on GitHub left to publish.
The container holds no push credential by design (a checkout the agents can write is one whose git config they control). It exports instead: GET /queen/export lists what is ahead of the base, GET /queen/export/<issue> returns that branch as a base64 git bundle. Nothing in the cloud consumed that.
Fix
tools/queen/export_push.py plus .github/workflows/queen-export-push.yml: every 20 minutes, read the list, fetch each bundle, push the branch. Never --force: a remote that has commits the bundle lacks is a bee's work, and that is a person's decision. queen-publish.yml already runs on a push to queen-*, so the pull request follows by itself.
Needs one repository secret, QUEEN_EXPORT_TOKEN, set to the agent server's TRIOS_API_TOKEN (the export endpoint is guarded). Without it the job prints a warning naming the secret and does nothing.
Boundary
tools/queen/export_push.py
.github/workflows/queen-export-push.yml
Measured 2026-09-23: the last
queen-*branch reached GitHub at 10:33 on 09-22, pushed under a personal token from a machine, while 59 open issues carried anacceptwhose work had never left the container. The Queen skips those as "the work already landed", so they hold their files, the delegatable backlog empties, and the swarm sits at 0 of 20 lanes with a queue of finished work nobody can see. A dry run of the publisher confirms it:no commits=75, already a PR=342, issue not open=137, published=0- there is nothing on GitHub left to publish.The container holds no push credential by design (a checkout the agents can write is one whose git config they control). It exports instead:
GET /queen/exportlists what is ahead of the base,GET /queen/export/<issue>returns that branch as a base64 git bundle. Nothing in the cloud consumed that.Fix
tools/queen/export_push.pyplus.github/workflows/queen-export-push.yml: every 20 minutes, read the list, fetch each bundle, push the branch. Never--force: a remote that has commits the bundle lacks is a bee's work, and that is a person's decision.queen-publish.ymlalready runs on a push toqueen-*, so the pull request follows by itself.Needs one repository secret,
QUEEN_EXPORT_TOKEN, set to the agent server'sTRIOS_API_TOKEN(the export endpoint is guarded). Without it the job prints a warning naming the secret and does nothing.Boundary
tools/queen/export_push.py
.github/workflows/queen-export-push.yml