Repository navigation
fix(t27-worlds): the nightly scan writes the onboarding counts it measured - #1243
Merged
Merged
Conversation
…sured The world scan rebuilds public/t27/manifest.json, then check:onboarding compares specs/catalog/onboarding.t27's corpus counts with it and stops the scan when they differ. The corpus moves almost every night, and nothing wrote the new counts, so the 2026-10-02 scan stopped (1737 stated, 1771 measured) and the catalog -- including the Queen map's issue cells -- stopped refreshing. onboarding-from-spec.mjs gains --sync: it writes exactly the values corpusProblems asks for (measuredCounts, shared by both), dated with the day of the run, then regenerates /agents.t27 and /llms.txt. It refuses a value its declared type cannot hold and has no say over BACKENDS, so the gate still stops a refresh for those. The scan calls --sync before its gates and commits the spec and the two generated files with the rest of the catalog. scripts/onboarding-from-spec.test.mjs: a matching manifest changes nothing, a grown corpus fails the gate and passes it after --sync, a u8 overflow is refused, a new backend still fails. Website checks run it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
github-actions Bot
added a commit
that referenced
this pull request
Oct 2, 2026
fix(t27-worlds): the nightly scan writes the onboarding counts it measured (#1243) The world scan rebuilds public/t27/manifest.json, then check:onboarding compares specs/catalog/onboarding.t27's corpus counts with it and stops the scan when they differ. The corpus moves almost every night, and nothing wrote the new counts, so the 2026-10-02 scan stopped (1737 stated, 1771 measured) and the catalog -- including the Queen map's issue cells -- stopped refreshing. onboarding-from-spec.mjs gains --sync: it writes exactly the values corpusProblems asks for (measuredCounts, shared by both), dated with the day of the run, then regenerates /agents.t27 and /llms.txt. It refuses a value its declared type cannot hold and has no say over BACKENDS, so the gate still stops a refresh for those. The scan calls --sync before its gates and commits the spec and the two generated files with the rest of the catalog. scripts/onboarding-from-spec.test.mjs: a matching manifest changes nothing, a grown corpus fails the gate and passes it after --sync, a u8 overflow is refused, a new backend still fails. Website checks run it. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The nightly
t27 world scanstopped at Catalog gates on 2026-10-02 (run 36992363784):check:onboardingwas added to the scan after #1176 so that a refresh cannot publish counts that disagree with the manifest, which is right. But the corpus moves almost every night, and nothing in the scan wrote the new counts, so every refresh that moved them stopped. While it is stopped the Queen atlas does not change either: dmitrii-f-t27/trinity-memory still shows three red issue cells for #103, #105 and #107, which were closed as completed on 2026-10-01, half an hour after the snapshot was taken.Change
onboarding-from-spec.mjs --syncwrites into the spec exactly the valuescorpusProblemsasks for, taken from the manifest that is about to be published. Both read them from the newmeasuredCountsanddivergentSpecs, so the value the gate expects and the value the sync writes cannot drift apart. It dates them inMEASURED_AT, then regenerates/agents.t27and/llms.txt.BACKENDS, so the gate still stops a refresh for those.t27-world-scan.ymlruns--syncafter the atlas build and before the gates, and commitsspecs/catalog/onboarding.t27,public/agents.t27andpublic/llms.txtwith the rest of the catalog.scripts/onboarding-from-spec.test.mjs(4 tests) runs in Website checks next tocheck:onboarding.Checks
npm run test:onboarding-spec: 4 pass. Negative control: with the write removed fromsyncSpecCounts, the grown-corpus test fails.npm run check:onboarding: the committed spec and manifest still agree (no count changes in this PR).Work report
{ "version": 1, "head_sha": "5b1715b4cd3f7e576ab8c98c4174cdc78a53ef84", "summary": "The nightly t27 world scan stopped refreshing the catalog on 2026-10-02 because check:onboarding found the onboarding spec stating 1737 specs while the freshly built manifest measured 1771, and nothing in the scan wrote the new counts. The scan now writes the measured counts into specs/catalog/onboarding.t27 with a new --sync mode before its gates, so the catalog, the Queen atlas and its issue cells refresh again while the gate keeps refusing what the sync does not own.", "changes": [ "onboarding-from-spec.mjs: measuredCounts and divergentSpecs are extracted so the gate and the sync read the same measured values from the manifest.", "onboarding-from-spec.mjs: --sync writes those counts into the spec constants, dates them with MEASURED_AT, refuses a value its declared unsigned type cannot hold, and then regenerates agents.t27 and llms.txt.", "t27-world-scan.yml: the scan step runs the sync after the atlas build, the gate comment says what can still stop a refresh, and the catalog commit now includes the spec and the two generated files.", "onboarding-from-spec.test.mjs: four node tests cover an unchanged manifest, a grown corpus, a u8 overflow and a new backend; website-checks.yml runs them next to check:onboarding." ], "tests": [ { "command": "npm run test:onboarding-spec", "result": "four tests pass on the committed spec and manifest", "status": "passed", "evidence": "node test runner reported pass 4 and fail 0" }, { "command": "npm run check:onboarding", "result": "the committed spec still agrees with the committed manifest and the generated files are current", "status": "passed", "evidence": "onboarding-from-spec reported up to date with all ten spec tests holding" }, { "command": "node --test with the write line removed from syncSpecCounts", "result": "the grown-corpus test fails as intended, so the test detects a sync that writes nothing", "status": "passed", "evidence": "negative control run reported pass 3 and fail 1 on that one test" }, { "command": "t27 world scan workflow on main after merge", "result": "the next scheduled run is the end to end check of the new step and has not happened yet", "status": "not_run", "evidence": "the 2026-10-02 run 36992363784 failed at Catalog gates before this change" } ], "limitations": [ "BACKENDS is still written by hand on purpose, so a new code generator will stop the scan until someone names it in the spec.", "MEASURED_AT takes the date of the scan run because the manifest carries no timestamp of its own.", "The Queen site at app.t27.ai serves the atlas pinned by QUEEN_REF, so a refreshed catalog reaches it only with the next release." ], "tags": [ "#ci", "#catalog", "#queen" ], "blog": { "title": "The nightly catalog scan stopped on a number it was not allowed to write", "summary": "A safety gate compared the published onboarding counts with the freshly measured manifest and stopped the nightly refresh whenever the corpus grew, which was almost every night, so the map kept showing work that had already been closed.", "outline": [ "The t27 world scan rebuilds the catalog manifest every night from fourteen repositories, and the Queen map draws its worlds, specs and open issues from that snapshot.", "After an earlier refresh broke publishing, a gate was added that compares the counts stated in the onboarding spec with the manifest and stops the scan when they differ.", "The corpus grows almost every night, and nothing in the scan wrote the new counts, so the gate stopped the refresh and three issues closed on 2026-10-01 stayed red on the map.", "The fix gives the generator a sync mode that writes the measured counts into the spec before the gate runs, using the same function the gate uses to compute what it expects.", "The gate is still there for what the sync does not own, such as a new backend name or a count that no longer fits its declared type, and four tests hold that boundary." ] } }Dmitrii Fedorov (@dmitrii-f-t27)