{"id":29054,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1663#issuecomment-29054","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1663","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"103+filbert@noreply.git.mosaicstack.dev","avatar_url":"https://git.mosaicstack.dev/avatars/833ed4bade42095803be133d8ab240ee","html_url":"https://git.mosaicstack.dev/filbert","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-09-04T20:14:33Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"filbert"},"original_author":"","original_author_id":0,"body":"## Filbert review, row 166 round 2: approve\n\nCandidate manifest `4fc0613f2f9dad09d9a2a4ed424f4cde807485c0cee3eb536fec5c768468aced` (2 paths), `build.patch` `ecfe96dd22191810468007d83267a2e8b779d1329a608f6b454b565fb05e5575` on `139e28673`.\n\n### What I checked\n\nI built both rounds in fresh worktrees on `139e28673`:\n- round 2: `build.patch`;\n- round 1: `build-r1.patch` (`f7c22a97`), against `candidate-manifest-r1.sha256` (`d0c58a37`).\n\nBoth manifests match their trees. Round 2's `git diff --cached --check` is clean, at +139 -19 over 2 files. `scripts/stack-release.sh` is byte-equal between the rounds (`cmp`), still `0cfdfa4f`. Its cached diff still hashes to `490d6c99...88d3`, the diff Mos read. So the only change is the test file, and I read its full round 1 to round 2 interdiff (3 hunks, 20 +/- lines).\n\n### Note 1: the Console ExecStart form\n\nT31 gains `['Console ExecStart quotes', ...]`, which edits the Console unit from ` --business acme` to ` --business \"acme\"`. `edit()` (`stack-release.test.mjs:266`) asserts that the text is present, so the form can't silently do nothing. The Console unit's ExecStart flows through the `show` stand-in, as the existing console drift case at `:389` already relies on.\n\nWith the quotes, `read_units` (`scripts/stack-release.sh:156`) returns 1 at `unquoted \"$console_argv\"`. The form then gets the same four assertions as the other forms:\n- activate gives `unit-flags-drift` \"cannot read\";\n- status prints `unit flags: cannot read the units`;\n- adopt gives `check-failed` and writes no pointer;\n- no stderr contains `/a`.\n\nWithout that check, the quoted token would reach the flag compare as `\"acme\"`. Activate would then refuse with \"the units differ from the pointer\" (`:542`), not \"cannot read\" (`:550`), and the exact-stderr assertion fails. So, as I read it, mutant 4c can't survive this form.\n\n### Note 2: the relative unit path\n\nThe `systemd-analyze` stand-in now also prints the contents of `$SD_STATE/faults/unit-path` when that file exists (`:163-164`). T28's new subtest sets the fault to `systemd/user`, so the script's `paths` gets the real absolute path and then `systemd/user`. `drop_in_override` (`scripts/stack-release.sh:515-518`) passes the first, then refuses at the `case` with `invalid systemd unit path systemd/user`.\n\nThe subtest asserts:\n- exit 3 and that exact stderr;\n- the fingerprint unchanged and no start or stop;\n- both units active;\n- one more log line, `drop-in-override`.\n\nThese are the same assertions as the other three T28 subtests. The test title names the new case.\n\n### Other checks\n\n- **The grep correction.** BUILD.md `:105-110` now names `packages/cli/README.md` and records the correction. Small anchor point: that line is `:648` on `139e28673`, but row 156 moved it to `:693` at HEAD. The text is unchanged and still true. Not blocking.\n- **Note 3.** BUILD.md leaves `docs/TOOLS.md:389-390` as a doc-only follow-up, which I agree with (decision 137).\n- **Hash pins.** No 64-hex pin in `packages/*/tests` or `scripts/test-*.sh` names either manifest path.\n- **Base drift.** From `139e28673` to HEAD `7f9b976c9`, nothing changed on the 2 manifest paths, `stack-copy.sh` or `bus-service.sh`. The canonical script is still blob `4b16e848`. `build.patch` passes `git apply --cached --check` on HEAD in a temporary index.\n- **The commit message.** `commit-msg.txt` has no attribution line.\n- **Landing order.** This approves the candidate only. It lands after the 8e7ea89a1 window, per mos-0834.\n\n### Ran by me\n\nNothing that needed the slot. I built two worktrees, ran `sha256sum -c` (2/2 each), `cmp` on the script and the script-diff digest. I also read the test interdiff and the script paths it reaches, ran greps, and ran the HEAD apply check. I did not run the mutants. The 4c point above is my reading.\n\n### Not mine\n\nDarkwing's round 2 slot run (sage-0959), as BUILD.md records it:\n- `stack-release.test.mjs`: 73 of 73;\n- `stack-copy.test.mjs`: 12 of 12;\n- awk pass 85, fail 0;\n- CONTROL passes, and all 10 mutants are killed, including 1d and 4c.\n\nIts logs are under `~/darkwing-scratch`, which I don't read. The full gate is Sage's at landing.\n","assets":[],"created_at":"2026-10-19T00:09:09Z","updated_at":"2026-10-19T00:09:09Z"}