# Window B P3 rerun on the landed tool (sage-1070, mos-0867 R2) Scratch only. Run by darkwing 2026-10-19T22:14:50Z to 22:14:59Z in `~/darkwing-scratch/r1070`. The 4b16e848 run's files are unchanged beside these. - Tool: a `git clone --shared` of the canonical checkout at 4b738e2da (the landed row 166), `refactor` in the clone at d195d171c. `scripts/stack-release.sh` blob ed5b41d4677ee2bd85860e120c48387d440f9446. bus-service.sh, webui-service.sh and stack-copy.sh blobs are the same as in the 4b16e848 run. - Copies: 5fa9cc8f2 and ca15d73e9, made fresh with `stack-copy.sh copy`. Outside node_modules they match the r1004 copies byte for byte (`diff -rq`). - Business file: `scratch-mkbiz.mjs` on the committed example (blob 3a81ca0faea6) with `{"usage-source":["transcript"],"channel":["cli","webui"]}`. It matches scratch-business-B.json except the nosecret directory, so its sha256 differs. - Harness: scratch-B-harness with paths moved to r1070 and three changes to run.sh. The backup dir comes from the data root plus the log's id (addendum 1's fix). Step 2a runs `sha256sum -c ../SHA256SUMS` from the backup's bus/ (addendum 2's fix). Step 0 records the unit reads the row 166 checks see. teardown.sh is new. Every file's sha256 is in SHA256SUMS-ed5b41d4. ## Result All steps exit 0: plan, activate --pm --migrate (3h to 3i, backup checked OK), D3 counts 0/0/0, rollback --restore --plan, rollback --restore (back to 3h, pointer on 5fa9cc8f2). Teardown left no process and closed port 47391. Against the 4b16e848 run, after normalizing paths, times, ids and pids (scratch-activate-ed5b41d4-vs-4b16e848.diff), the tool's output is the same line for line except the `drift:` count in both status parts (39 and 47 then, 100 and 108 now), because `refactor` in the clone moved from 6e7c23d7d to d195d171c. The other differences are the new parts 0 and 2a, a header line, and the D3 stamp now read from the right path. ## Row 166's W4 checks `--plan` does not run them. `do_activate` and `do_rollback` exit after `check_target; plan` (stack-release.sh:717, :727). `precheck` (`drop_in_override`, then `read_units` with `unquoted`) runs at :718 and :728, and `status` calls `read_units`. So no `--plan` output in this run or any other shows them. | Check | Run here | Branch taken | |---|---|---| | drop-in scan, steps 2 and 6 | yes | pass: one unit path, no `.service.d` dirs, `DropInPaths=` empty | | unreadable unit path or drop-in dir/file refuses | no | needs a mode-000 dir or file | | drop-in with ExecStart or WorkingDirectory refuses | no | needs a `.conf` | | no quote or backslash in bus/Console ExecStart argv | yes | pass | | no quote or backslash in bus Environment= | yes | pass | | a quoted or backslashed value refuses | no | the stand-in prints Environment= unquoted, unlike real systemctl, so it can't show this faithfully | | gate copy-check names the target (item 3) | yes | pass on ca15d73e9, then 5fa9cc8f2 | | bus stops during the held read (item 2) | no | needs a stop timed inside the read | This run doesn't cover the refusal branches. The tests in stack-release.test.mjs at 4b738e2da do: T4 (an override `.conf`), T28 (unreadable or relative unit paths and drop-ins), T29 (a bus that stops during the held read), T30 (copy-check on another copy) and T31 (quoted or escaped Environment= and ExecStart=).