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.
2.6 KiB
Filbert review, row 87 round 6: approve.
Candidate: commit 80ebe2afc, diff from 232e05449 on the design docs/plans/2026-10-18_containerized-install-design.md and the rows docs/plans/2026-10-18_containerized-install-rows.md. Line numbers are at 80ebe2afc.
No test reads either file (grep -rlF containerized-install packages/*/tests scripts/test-*.sh finds nothing), so under decision 137 nothing here blocks.
My round 5 follow-ups (28881): all four answered
- Name refusal. design.md:178-186: exit 3 with a message naming the container and the client's exit code,
host.lockgiven back, and nothing removed that the store's labels didn't list. Exit 3 matches the host's other start refusals (CliError(..., 3)at packages/cli/src/host.mjs:240, :246). Tested at rows.md:489-492. - One spelling. design.md:154-166: the store path is the real path, and it's the source of the bind mount, the label, the leftover filter and
hostStatus's filter. The reason it gives is correct:safe()lstats only the leaf (packages/bus/src/store.mjs:100-110), so a symlinked parent gets past it. Tested at rows.md:483-486. - The bus directory. Bus start makes
<dataRoot>/busat 0700 before it resolves the path (design.md:154-158, store.mjs:126). Tested at rows.md:487-488. - The pid tests. The four uses are listed with what each does (
:202-205/proc,:227SIGKILL,:546-563SIGSTOP/SIGCONT,:612IPC lookup), and I checked each against packages/cli/tests/host.test.mjs.
The rest of the round
The entry starts each fork on its first line (boot for the broker, start for the notifier), and connected is true from when the host makes the wrapper, as a forked child's is today. That removes the round 5 wait on the {from, pid} line before the host's first send. The anchors are right: the broker's boot send at host.mjs:217, the notifier fork at :242 and its start at :244. A business without a notifier gets no notifier fork, and the one-fork-exits and exit-code rules now say "if it started" / "each fork it started" (design.md:244-250). Tested at rows.md:480-482.
Doc-only, follow-up
- design.md:154 says bus start makes the directory "before anything else touches the engine". Making a directory and resolving a path don't touch the engine, and the endpoint check (the
name=rootlessprobe, design.md:372) presumably comes first. If the order matters, name it, such as "after the endpoint check and beforehost.lock"; otherwise drop the clause.
Not run by me
Nothing executed. This is a read of the diff and the cited lines in host.mjs, host.test.mjs and store.mjs.
Verdict: approve, with follow-up 1.