Skip to content

feat(queen): feed the swarm from the roadmap, with a brief that says what the game is - #4855

Merged
gHashTag merged 7 commits into
masterfrom
claude/peaceful-noether-dperdx
Sep 27, 2026
Merged

gHashTag merged 7 commits into
masterfrom
claude/peaceful-noether-dperdx

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner

Pull Request Checklist

Description

The Queen was healthy but idle.

This PR adds a feeder for the roadmap and a brief that tells every bee what the game is.

  • tools/queen/feed_roadmap.py files one port task per hand-written file, round robin across stages 1-7. Each task contains:
    • one Boundary: the specs/port/<repo>/<path>.t27 it creates;
    • the source, quoted verbatim behind a line-number gutter;
    • the six acceptance commands the stage-1 port issues use;
    • docs/ROADMAP_BRIEF.md;
    • the language and the instruments from docs/BEE_TOOLBELT.md.
  • The gutter is load-bearing. The Queen reads criteria as the bullets under any line starting with #. That would turn a quoted Python comment into a heading and a C comment line * ... into a bullet. The self-test quotes a hostile source and checks the body against twins of her boundary and criteria parsers.
  • docs/ROADMAP_BRIEF.md, the goal of the game:
    • law L0;
    • the nine stages, with their repositories and targets;
    • how progress is measured;
    • how one file moves from task to pull request;
    • the four ways a turn is lost.
  • docs/ROADMAP_BRIEF.md, how to rewrite code into .t27. Everything here was measured today with t27c test-report on Zig 0.16.0:
    • port the decision, not the plumbing;
    • a table mapping original constructs to .t27 idioms;
    • what compiles, and what does not together with the symptom it gives;
    • a complete example that passes 3/3.
  • Refusals, each with a stated reason:
    • stage 8, because t27c has no interface target;
    • stage 9, the endgame ([roadmap] Stage 9: Endgame: the browser and every dependency #4858), until stage 8 is done and its goal's questions are answered;
    • private repositories when no ROADMAP_READ_TOKEN is set (stages 3 and 4);
    • generated files and tests;
    • files with no decision: a todo!() stub, or code that only prints;
    • files with more than 8 functions or too big to quote;
    • targets that already exist or that an issue already names.

Changes

  • tools/queen/feed_roadmap.py: the feeder, with --self-test, --dry-run, --stage, --when-idle --runway auto and --issues-json (offline dry runs only)
  • Raid of the day (f5d0f29): one sector per UTC day, in turn over stages 1, 2, 5, 6 and 7, goes first in the feeder's round with two picks a turn (RAID_STAGES, raid_stage). The ROADMAP tab on the site draws the same raid, and both sides pin the list in their tests. The dry run today picked stage 6.
  • Stage 9, the endgame, is goal [roadmap] Stage 9: Endgame: the browser and every dependency #4858 (b5cb3db).
    • The feeder indexes it as refused, like stage 8, and the self-test pins the refused stages to 8 and 9.
    • The brief's row points at the goal and gives its measured figures:
      • BrowserOS dev is 5.48 MB of source;
      • the running services' lockfiles hold 2,187 npm packages, 650 crates and 35 Go modules.
    • Task bodies say "stage N of 9".
  • The endgame is measured (27fedf7).
    • BrowserOS pins Chromium 146.0.7680.31: its BASE_COMMIT is that tag's commit.

    • Chromium's src at that tag, and the V8 and Skia commits it pins, were read from the GitHub mirrors and counted by the rules of trinity's roadmap-stack.mjs:

      Part Size
      Chromium src 1,144.7 MB
      V8 145.6 MB
      Skia 51.4 MB
      Total 1,341.7 MB
    • That total is seven times the 192.2 MB the count holds for the whole stack.

    • Blink (132.4 MB outside its tests) and the 258 other DEPS repositories are not in it.

    • The brief, the NOW entry and [roadmap] Stage 9: Endgame: the browser and every dependency #4858 carry the figures.

  • Only code a test can check is filed (cadd1d9).
    • The first dry run of 14 chose seven tasks that no port could honestly finish:
      • three trios-doctor modules that are a single todo!();
      • two build scripts and a CLI command whose code only prints;
      • trinity's gen_vsa.zig, which says it was generated from specs/vsa_simple/vsa.tri and duplicates vsa.zig.
    • A file now needs a branch, a loop, a comparison, arithmetic or a deciding builtin. It is read without its comments, strings and tests. Rust #[cfg(test)] modules and Zig test blocks count as tests: gen_hash_sha256.zig returns 32 zero bytes and only its test compares anything.
    • "Generated from <spec>.tri" now counts as a generated header.
    • Verilog is exempt, because a module is wiring and has criteria of its own.
  • .github/workflows/queen-feed-roadmap.yml: runs hourly at :23; workflow_dispatch takes limit, stage and dry_run
  • docs/ROADMAP_BRIEF.md: the brief every roadmap task quotes
  • tools/queen/pusher.py: the new feeder joins FEEDERS, so it is dispatched when the swarm is out of fuel
  • scripts/ci/check_pr_branch_filters.py:
    • classifies the new workflow;
    • also classifies needs-boundary.yml and queen-export-push.yml. Master carries 26 unclassified workflows against a ceiling of 24; this brings the count back to 24.
  • tools/census/quiet.txt, shell.txt: re-blessed. The counts moved from 63 -> 64 workflow files, 84 -> 85 jobs and 278 -> 280 run steps, and 147 -> 150 "named a path but not quiet". Every change comes from the new workflow.
  • docs/now/...: the entry

Testing

python3 tools/queen/feed_roadmap.py --self-test         # PASS, 0 failures
python3 tools/queen/feed_roadmap.py --dry-run --stage 9 --issues-json empty.json
                                                        # "stage 9 (#4858) is not fed: opens after stage 8; ..."
python3 tools/queen/task_shape.py --self-test           # PASS
python3 tools/queen/pusher.py --self-test               # ok: 30 rule shapes
python3 -m pyflakes tools/queen/feed_roadmap.py         # clean
python3 scripts/ci/check_pr_branch_filters.py           # 24 unread at a ceiling of 24
tri census pin --gate                                   # the 3 pinned readings are unchanged
python3 tools/check_documented_commands_exist.py        # ok
PR_BASE_SHA=<master> python3 tools/check_now_entry_shape.py   # 1 entry added, well formed

A dry run over the real repositories, filed as #4893-#4906.

Criteria checked against real ports. I wrote a .t27 for one generated Zig task and for one Verilog task, and ran each task's six commands exactly as printed. Each printed what the task says it should. The brief's example passes t27c test-report 3/3.

Documentation

  • docs/ROADMAP_BRIEF.md (new)
  • docs/now/2026-09-27-the-roadmap-had-no-tasks-so-the-queen-had-nothing-to-choose.md

Review Notes

  • Stages 3 and 4 need a secret. 999-multibots-telegraf and vibee-gleam are private, so they are fed only once a ROADMAP_READ_TOKEN secret that can read them is set. Without it, each run names them and feeds the other stages.
  • Stage 2 pins a branch. It reads BrowserOS at fix/queen-worker-provider-and-prompt-size, the branch the api.t27.ai service deploys from. The default branch dev has no trios/.
  • One brief contradicts docs/BEE_TOOLBELT.md. The toolbelt says for i in 0..n is not the language, but with this compiler it compiles when n is usize. The brief says so, and I left the toolbelt alone.
  • Only 3 of the 35 existing specs/port/tools/*.t27 build. 7 do not parse, and 25 generate Zig that does not compile, although spec-status calls 24 of them IMPLEMENTED. That is why the brief insists that only test-report is proof.
  • This overlaps Feed the swarm from CI, with fuel that does not run out #3978. That PR is a draft since 2026-09-17, closes the same Run the swarm's feeder in CI, not on a laptop: port hand-written code to .t27 #3977, and adds tools/queen/queen_feed_port.py with a */5 workflow. It files ports for this repository's own files only, in the same issue shape.
    • Stage 1 here covers the same files. This PR also adds the other stages (sources in other repositories, quoted into the task), docs/ROADMAP_BRIEF.md and the pusher hook.
    • The two touch no common file, so merging both would not conflict. They would, however, file two issues for the same file, because each skips only targets that an existing issue names.
    • One of the two should be closed.
  • CI. gate-topology was red on master too; it is fixed here (6989b14). duplicate-bodies, Corpus ratchet, Documented t27c subcommands exist and coverage fail on master too, including its latest push b6beb8a (comment above).

🤖 Generated with Claude Code

https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY

…what the game is

The Queen answered "nothing to choose" against 497 open issues all day:
the roadmap's stages 2-8 (#4544-#4550) had no task filed against them,
and she files nothing herself. Tasks that pointed bees at files in other
repositories (#4813-#4832) came back as empty branches, because a bee
sees only this checkout.

tools/queen/feed_roadmap.py files one port task per hand-written file,
round robin across stages 1-7: one Boundary (the specs/port .t27 it
creates), the source quoted verbatim behind a line-number gutter so the
Queen cannot read a quoted comment as a heading or a criterion, the six
acceptance commands of the stage-1 port issues, and docs/ROADMAP_BRIEF.md:
the goal of the game (law L0, the eight stages, how progress is measured,
how a turn is lost) and how to rewrite code into .t27, measured today
with t27c test-report. Stage 8 is refused with its reason; stages 3 and
4 need ROADMAP_READ_TOKEN to read their private repositories.

Ledgers moved in this commit: the census counts one more workflow file
(63 -> 64), one more job (84 -> 85), two more run steps (278 -> 280;
runner-run 257 -> 259) and three more "named a path but not quiet"
(147 -> 150), all from queen-feed-roadmap.yml. check_pr_branch_filters
classifies it, and also needs-boundary.yml and queen-export-push.yml:
master carried 26 unclassified against a ceiling of 24. pusher.py
dispatches the new feeder with the other two when the swarm is out of fuel.

Closes #3977

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-27 05:08:55 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

Every roadmap task quotes this brief, so every bee now reads where the
game ends: after stage 8, the whole BrowserOS browser and every
third-party dependency the stack runs in another language, rewritten in
.t27. Not measured yet, and nothing is filed against it.

Refs #3977

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@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-27 05:45:50 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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).

#4787 replaced MERGE_CRITICAL with four new names and left the self-test
spelling gate-topology.yml and untrusted-input-gate.yml, which are no
longer in it. The probe tree never wrote those files, so "missing
classified guard fails" unlinked a file that did not exist and the
self-test crashed with FileNotFoundError on every tree, master included.
The probes now take their names from MERGE_CRITICAL; all nine pass.

Refs #3977

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@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-27 05:47:53 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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 commented Sep 27, 2026 •

Copy link
Copy Markdown
Owner Author

CI on this PR, as of 6989b14:

  • gate-topology: fixed in 6989b14. Five workflows believe they are required; four contexts are. coverage failed on 32 of the last 40 merged PRs #4787 replaced MERGE_CRITICAL with four new names, but the self-test in check_pr_branch_filters.py kept using gate-topology.yml and untrusted-input-gate.yml. The probe tree never wrote those two files, so the self-test crashed with FileNotFoundError on every tree, master (5793118) included. The probes now take their names from MERGE_CRITICAL, and all nine pass locally. The checker itself reads 24 unclassified workflows at a ceiling of 24, because this PR also classifies needs-boundary.yml and queen-export-push.yml.

  • Not this PR's. These four fail on each of the last five pushes to master (05:35Z, 05:02Z, 03:41Z, 03:33Z, and 18:44Z on 09-26):

    • duplicate-bodies
    • Corpus ratchet (expected-failure ledger)
    • Documented t27c subcommands exist
    • coverage (seal-coverage.yml)

    This PR adds no .t27 body, no spec and no seal. Run locally on this branch, check_documented_commands_exist.py reports every documented t27c subcommand present and 141 dead tri mentions at the recorded ceiling. I have no fix for the master failures to port. I cannot re-run jobs either: the app gets 403 on Actions in this repository.


Generated by Claude Code

One sector per UTC day, in turn over stages 1, 2, 5, 6 and 7, goes first
in the feeder's round and gets two picks a turn. The ROADMAP tab computes
the same sector from goals.json and draws the raid, and each side pins
RAID_STAGES in its own test, so the board never names a raid the feeder
is not running.

Refs #3977

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-27 06:14:32 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

The roadmap brief listed stage 9 as "not filed yet". Goal #4858 now holds
what is measured of it: BrowserOS dev is 5.48 MB of source, the browser is
Chromium 146.0.7680.31 fetched at build time, and the running services'
lockfiles hold 2,187 npm packages, 650 crates and 35 Go modules.

The feeder indexes stage 9 as refused, like stage 8, until stage 8 is done
and the goal's questions are answered. The self-test pins the refused
stages to 8 and 9, and task bodies now say "stage N of 9".

Refs #4858

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@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-27 07:50:57 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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).

BrowserOS pins Chromium 146.0.7680.31: its BASE_COMMIT is that tag's commit.
Chromium's src at that tag, and the V8 and Skia commits it pins, were read
from the GitHub mirrors and counted by the rules of trinity's
roadmap-stack.mjs:

- Chromium src: 1,144.7 MB
- V8: 145.6 MB
- Skia: 51.4 MB

That is 1,341.7 MB in all, seven times the 192.2 MB the count holds for the
whole stack. Blink (132.4 MB outside its tests) sits under the skipped
third_party/, and the 258 other DEPS repositories are not counted.

Refs #4858

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@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-27 08:10:13 UTC

Summary

Status Count
Total Open PRs 37
PRs with Failing Checks 33
PRs with All Checks Green 4
READY 3
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 33 + 0 + 0 = 36, and there are 37 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).

@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-27 11:15:41 UTC

Summary

Status Count
Total Open PRs 39
PRs with Failing Checks 35
PRs with All Checks Green 4
READY 3
FAILING 35
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 35 + 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 force-pushed the claude/peaceful-noether-dperdx branch from d102f08 to 02b75b3 Compare September 27, 2026 11:18
@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-27 11:18:38 UTC

Summary

Status Count
Total Open PRs 39
PRs with Failing Checks 35
PRs with All Checks Green 4
READY 3
FAILING 35
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 35 + 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).

A dry run of 14 tasks chose seven that no port could honestly finish:
- three trios-doctor modules that are a single todo!() (check, heal and
  report);
- two build scripts whose main only prints, and a cli command (lang.rs)
  whose run only prints;
- trinity's gen_vsa.zig, which says it was generated from
  specs/vsa_simple/vsa.tri and is the same code as vsa.zig, filed
  beside it.

A file is now passed over as "no decision" when its code, without
comments, strings and tests, has no branch, loop, comparison,
arithmetic or deciding builtin. Rust #[cfg(test)] modules and Zig test
blocks are cut first: gen_hash_sha256.zig returns 32 zero bytes and
only its test compares anything. "Generated from <spec>.tri" now
counts as a generated header. Verilog is exempt, since a module is
wiring and has criteria of its own.

The same dry run now passes over 91 files as having no decision and 10
as generated, and its 14 picks all hold logic a test can assert on.
They are filed as #4893-#4906.

Refs #3977

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011vMJx1ZWk2hq58jyEecRBY
@gHashTag
gHashTag force-pushed the claude/peaceful-noether-dperdx branch from 02b75b3 to cadd1d9 Compare September 27, 2026 11:23
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-27 11:23:40 UTC

Summary

Status Count
Total Open PRs 39
PRs with Failing Checks 35
PRs with All Checks Green 4
READY 3
FAILING 35
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 35 + 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).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

This was referenced Sep 27, 2026
@gHashTag
gHashTag marked this pull request as ready for review September 27, 2026 11:43
@gHashTag
gHashTag merged commit 0e8b779 into master Sep 27, 2026
28 of 32 checks passed
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.

2 participants