Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
5.0 KiB
Filbert review, row 125 round 2: approve
Candidate manifest 71c55638fc1abe29024c4511e75b4c1e73fd9aa1a289c663d15d3600eb8388a8 (38 paths), build.patch (0efb5cb6...) applied with --index to 19fe85c3e. The manifest matched before and after every run. Against my round 1 manifest, the 36 shared paths changed in 7 files, and docs/TOOLS.md and packages/cli/README.md are new to the manifest. Those are the nine paths BUILD.md "Packet, round 2" lists.
Both of my round 1 changes are fixed. One doc-only follow-up is below.
Change 1, fixed: token limits at schema depth only
launch-settings.mjs:19:DEPTHandtokenLeaveswalk onlytokens.instances.X,tokens.providers.X,tokens.keys.Xandtokens.models.P.M.stamp(:40) setssinceonly on those leaves.reset(:52) accepts only a path that is exactly one of them.- An entry that isn't an object is left for the schema to refuse.
packages/bus/src/limits.mjs:32:limitLeavesuses the same table, so the core and the writer agree.- The shipped
token-limitcheck (index.mjs:24-33) reads the same four kinds at the same depths. - Tests:
token-limit-settings.test.mjs:61covers the four base-valid shapes from my table, token limits namedlimitbeside concurrency limits of the same name (stamped and reset), and a reset of a concurrency path or of a path above a token leaf (refused, with the file bytes unchanged).limit-checks.test.mjs:102coverslimitLeaves.:303covers a token limit for a provider namedlimitthat is counted and refuses a launch.
- Dewey reports that the round 1 candidate fails the new tests (
token-limit-settings3/4,limit-checks14/16); that was not my run. S08, S09 and L16 put the any-depth walk back, and each targets the right line.
Choosing the depth walk over reserved names keeps files that are valid on base valid, which is what I asked for. I accept the untested instance named limit: instances go through the same DEPTH walk, and a fixture for it would need a role of that name.
Change 2, fixed: the CLI docs
packages/cli/README.md:786 and docs/TOOLS.md:609 now cover where token limits sit, since, limits reset WORD..., not enforced, fail closed, and plain output that isn't JSON as a whole. I checked each against packages/cli/src/limits.mjs:42-82:
resetreads the revision, then sends oneresetpath.setandresetprint the same plain shape asview.
host.test.mjs, which reads the CLI README, passed 41/41.
Round 1 survivors and the no-source note
- f2:
limits-runtime.test.mjs:83, mutant R05. - f3:
limit-checks.test.mjs:176, mutant L17. - f4:
limits-browser.test.mjs, mutant W11. - No usage source under a limit of 1:
limits-runtime.test.mjs:68, mutant T12.
I read each test and each mutant in mutants.mjs; each mutant edits the line my survivor named.
Doc-only, follow-up
docs/TOOLS.md:621writeslimits reset WORD... --business IDwithout brackets, but the CLI andpackages/cli/README.md:811treat--businessas optional ([--business ID]). No test readsdocs/TOOLS.md(grep ofpackages/*/testsandscripts/test-*.sh), so under decision 137 this doesn't block.
Base drift
Row 129 (850484a7d) touches four of the 38 paths: bus.js, serve.mjs, shell.test.mjs and docs/TOOLS.md. I reviewed and ran on 19fe85c3e only, and did not try --3way at HEAD. Sage's landing gate covers this (sage-0829).
Ran by me
Slot from sage-0842. The busy check was CLEAR before each step. TMPDIR was in my own scratch, DOCKER_HOST was a dead socket, and the manifest was checked before and after.
-
Singles, 18:53:16Z to 18:54:11Z, one
node --testper file:- bus: limit-checks 16/16, limit-stop 5/5, limits-runtime 5/5, process 8/8, usage 14/14;
- business: token-limit-settings 4/4, launch-settings 8/8;
- cli: launch-limit-checks 4/4, launch-limits 1/1, limits-tokens 4/4, limits 4/4, host 41/41, thread-launch 10/10;
- harness: runner 26/26, tools 20/20;
- plugins: kinds 5/5, loader 17/17, token-limit 10/10;
- webui: limits-browser 1/1, limits-route 4/4, shell 5/5.
The awk sum is 212/212 over 21 files, 0 skipped.
-
Probe, 18:54:17Z, my round 1 probe (
launchSettings(...).seton a fixture business) with three more cases. On the round 2 candidate:{providers:{anthropic:3}},{providers:{limit:3}},{models:{limit:{m:2}}}and{models:{anthropic:{limit:2}}}all save as sent;{tokens:{providers:{limit:{limit:5}}}}saves withsince;- concurrency and token limits all named
limittogether save, and only the three token leaves getsince; {tokens:{providers:{anthropic:5}}}is refused (... must be a JSON object);{tokens:{roles:{...}}}is refused (unsupported ... tokens key: "roles").
I ran no mutants of my own this round.
Not mine
Dewey's round 2 run (BUILD.md "Runs, round 2"):
- the round 1 candidate failing the new tests;
- gate: 17 singles 145/145, 16 packages 2241/2241, 10 scripts rc=0;
- 81 of 81 mutants killed.
I read mutants.mjs and did not rerun it.