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.8 KiB
Filbert review, row 162 (D1) round 1: approve
Candidate manifest 091693c51d137e4cd31e75ee22aef4f22c307e15abce6f91f6c518e3ff78fdd6 (5 paths). I applied r1/build.patch (f5d28a75...) with --index to cfde62f9f. All 5 manifest lines matched, and git diff --check was clean.
This was a static review, per sage-0873. I read all of scripts/stack-release.sh, the stack-copy.sh diff, the brief section (blob cfc468c9df88), bus-service.sh install_guard, the hard-look tests and both doc diffs. I ran no tests, mutants or probes.
Hard-look items, checked
- PM journal check (ruling 2, T10b).
pm_launched(stack-release.sh:387) readsjournalctl --user -u BUS --since @START_EPOCH -o cat. That is an epoch, so the CDT reading of a bare time can't hit it. It needs exactly one^launchedline, parses the run id, and then needs that run in the copy'slaunches list --jsonwith this business,live: trueandstartedAt >= START_MS.- The pattern fits what the bus prints,
packages/cli/src/cli.mjs:503:launched ${pm.instance}: run ${pm.run}, ${pm.harness} ${pm.model}. The fixture line (test:63) has the same shape. - T10b (
:475) covers all eight failure reasons, one subtest each, plus a pass case that checks the--sinceargument is@<digits>.
- The pattern fits what the bus prints,
- The store read (T22, T23).
STORE_JS(:223) opens a stopped store with?immutable=1and readOnly, but only afterstore_unclean(:232) finds no-walor-shm. While the bus holds the store, it uses a plain readOnly open. That is the sage-0739 rule and the probe result in BUILD.md.- T22 (
:716): a-walor-shmleft by the stop refusesstore-unclean, and the bus directory at the restart matches the stop snapshot. On a clean store, onlybus.sqliteis there. - T23 (
:626):--planon a stopped store and on a held store leaves the data tree, the units, the wrapper and the store sha unchanged, writes no log or lock, and leaves onlybus.sqlitewhen stopped.
- T22 (
- Rollback after a
--restoreswap (T14b, T14c).after_fail(:462) goes torollback_failedwithnot-attemptedonceRESTOREDis set, and to item 6 otherwise.- T14b (
:552): exit 2, both units inactive, a single start pair, and the message names the rollback set, the backup and the post-attempt store. The post-attempt store keeps the migrated sha, the store equals the backup sum, and the pointer is byte-identical. - T14c (
:566): without--restore, item 6 runs, the result isgate-failedwith rollbackok, the old copy is active, and the fingerprint is unchanged.
- T14b (
migration steps:(plan_steps, T27). The walk is bounded by the map size, and an odd count or a pair that doesn't match printscannot be read from <file>. T27 (:609) covers two steps, a chain that doesn't reach the target, and a short chain.- The real
packages/bus/src/store.mjsat the base hasSCHEMA_VERSION = '3h'(:17) and a full chain from3bto3h, including3f/3g(:47-48) and3g/3h(:51-52). So the3f to 3g, 3g to 3hline in Darkwing'sscratch-plan-8e7ea89a1.txtmatches the source.
- The real
I also checked:
migrate-schema.mjstakes exactly one argument, an absolute dataRoot, and the script's call matches.- The scratch plans at
606fafd43and8e7ea89a1both say3f to 3hwith--migrateand the Jason line, and list 112 and 92 commits. Both are scratch roots with a hand-written pointer, as their headers say.
Non-blocking notes
drop_in_override(:503) is laxer thaninstall_guard. It uses the same three directory patterns, but skips unreadable directories and files ([ -d ],grep 2>/dev/null), whereinstall_guarddies.- Effect: a drop-in that is there but can't be read gets past the precheck.
install_guardthen refuses after the stop, so the run goes through item 6. That fails closed, but the live stack stops for nothing. - A follow-up could refuse an unreadable path in the precheck.
- Effect: a drop-in that is there but can't be read gets past the precheck.
- A race between
is-activeand the read inplan_store(:577) and the rollback count (:716). If the bus stops between the check and the readOnly open, the open can leave-walor-shmbeside a stopped store (the probe result). The next run then refusesstore-unclean. That fails closed and the window is small. - The
copy-checkgate step (:374) runsstack-copy.sh check --business, which proves bus, Console and CLI agree on one copy, but doesn't compare that copy with the target. Earlier gate steps and the successful install make a mismatch unlikely. Passing the expected id would close it. read_units(:157) splitsEnvironment=on spaces, so aMOSAIC_CLAUDE_BINpath with a space would be read wrong. Today's pin has none.- Brief item 8 (
:180-185) says the plan reads the schema "with no store read". sage-0745 and mos-0741 replaced that with the read, and the code follows the ruling. The brief text can be re-pinned later.
docs/TOOLS.md "Pinned stack update" and the packages/cli/README.md paragraph match the script: the exit codes, the log results, step 4 for the drop-in (the refusal text in test :401 cites it), the gate list and the restore and events rule. Two packet notes:
- BUILD.md
:312and:610place thelaunchedline atcli.mjs:476and:479. Atcfde62f9fit is at:503. The packet isn't in the manifest, so this doesn't block. - BUILD.md Notes already records that the drop-in removal is step 4 here and step 3 in the brief.
Ran by me
Nothing. I used no slot this round.
Not mine
Darkwing's round 1 runs (BUILD.md "Candidate round 1 checks", 19:25:10Z to 19:46:14Z):
stack-release.test.mjs58/58 andstack-copy.test.mjs12/12, each run singly;- 47 mutants killed, then M41, M45b, M46 and M47 to M49 killed;
- the two scratch-root
--planruns.
I read the tests and the mutant table, but did not rerun them. The full gate is Sage's at landing, and the live --plan is Mos's window.