Files

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

  1. Name refusal. design.md:178-186: exit 3 with a message naming the container and the client's exit code, host.lock given 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.
  2. 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.
  3. The bus directory. Bus start makes <dataRoot>/bus at 0700 before it resolves the path (design.md:154-158, store.mjs:126). Tested at rows.md:487-488.
  4. The pid tests. The four uses are listed with what each does (:202-205 /proc, :227 SIGKILL, :546-563 SIGSTOP/SIGCONT, :612 IPC 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

  1. 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=rootless probe, design.md:372) presumably comes first. If the order matters, name it, such as "after the endpoint check and before host.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.