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.
4.7 KiB
Filbert review: row 108 round 1 (#1602): approve
Candidate manifest sha256 19ef7133db592787c24fa473357687a5741ccd7823627b970624c930a7611dbc (6 files), as named in request 28485. I rebuilt it in my own worktree at BASE 234121b30 with build.patch from packet a6e4fe747. All 6 hashes match, and git diff --check is clean. No manifest path has drifted from 234121b30 to HEAD. The patch's added lines have no dashes, bidi or control characters. All six paths are in the brief's file list.
The brief, item by item
- Drop-in guard. The existing loop over
systemd-analyze --user unit-pathsnow globsmosaic-bus@*.service.d,mosaic-.service.dandservice.din each directory, with the same refusals on an unreadable directory or file. Those are the only prefix drop-ins systemd applies tomosaic-bus@<b>.service: the name has one dash, so the only prefix ismosaic-. The new tests putWorkingDirectoryand thenExecStartin each inherited directory and get exit 1 with the file named and the old unit bytes unchanged. AnEnvironment=-only file is still allowed. A dangling directory symlink and a dangling.confsymlink both refuse before writing. - Header comment. The
renderandinstalllines now carry exactly the flags inUSAGE:--copy ID [--copies DIR],--pm,--dir,--no-reloadand--claude. - Dead
showarms. The packet says it removed them. The install fakes in host.test.mjs and stack-copy.test.mjs now answerlist-unitsandexit 99on anything else, so any unexpectedsystemctlcall by install now fails the test, which is stricter than before. The systemd 261 template-rejection arm stays in its test. If install ever ranshow [email protected]again, that arm would fail it, and so would thecallslog check. The status fake'sshowarm is reached bystatus. - Wrapper. The marker stays on line 2. Two comments follow it, naming the copy root and saying the Q81 lease probe answers at
mosaic-old. Then come the exact lease line and the final exec.$roothas already passedplain_path, so the comment can't break the file. A rerun stays idempotent: the marker is still on line 2, and the lease line still matches once undergrep -Fxc. The test asserts lines 2 to 4 and the last line, runs the lease, and showscheckpassing on the new wrapper. The foreign-wrapper case now has matching effective roots and a matching exec, so the marker alone refuses it. That is the fixture fix the packet records after the first marker mutant survived. - Install-script audit. I checked it independently. No file in
COPY_PATHSmentions@google/genai,esbuildorprotobufjs.PI_BINinpi-pin.mjsand pi'sbinboth selectdist/bundle/cli.js, and the bundle has no reference to@google/genaiorprotobufjs. Its onlyesbuildtext is undici'sesbuildDetectionvariable, not a load. The unbundledpi-aiGoogle providers do import@google/genai, but nothing on the copy's paths runs them. The README paragraph says the warning is expected and why, and that a new runtime loader needs a fresh audit. There is noallowScriptschange, so the row doesn't stop for Sage.
Mutants
The packet's seven mutants cover each new check: miss-prefix, miss-all-services, ignore-unreadable-directory, ignore-unreadable-file, omit-copy-comment, omit-lease-comment and accept-foreign-check-wrapper. I read mutants.py and the final out/mutants/*.txt. Each mutant is a unique string replacement restored in finally, and each fails the case written for it. Reading the tests, I'd expect each one to be killed for the stated reason. For example, with the file-read refusal removed, the dangling .conf reads as empty, install exits 0, and the test's status 1 fails.
Notes, no change needed
- The new template-261 assertion runs the fake
systemctldirectly. That tests the fixture, not bus-service.sh. It's harmless, and the arm still guards a regression as described in item 3. - The inherited-directory tests use the first lookup directory only. The glob list is inside the per-directory loop, and the existing two-directory test covers that loop.
- The render line in the header comment is padded past the column the other lines use.
What I ran
I ran the rebuild and the checks above. In my own worktree, with DOCKER_HOST pointing at a dead socket, I ran single test files without the slot: node --test packages/cli/tests/host.test.mjs passed 41 of 41, and packages/cli/tests/stack-copy.test.mjs passed 12 of 12. I did not rerun the mutants, the full CLI suite or the shell suites. Those counts are Rocko's receipts (CLI 187, 7 of 7 killed). The Docker-dependent steps Rocko skipped run in Sage's landing gate.
Verdict: approve.