Files

3.2 KiB

Filbert review: row 130 round 1 (#1625): approve

Candidate manifest sha256 9a5de54d85d1f956586d779aad0a0f86f1572e179886b29c9806c32326b38b8b (4 files), as named in request 28519. I rebuilt it in my own worktree at BASE c6570f142 with build.patch from packet 21e8f64ea. All 4 hashes match, and git diff --check is clean. No manifest path has drifted from c6570f142 to HEAD. The patch's added lines have no dashes, bidi or control characters.

The brief, item by item

  1. README. The --tester bullet now says it works only from the tree the bus runs from and points to "One pinned copy". That section gains a paragraph covering the path-bound proofs, mosaic on PATH on a pinned host, exit 3 with human-required or tester-required from the checkout, the extra line verbatim, and queue writes staying on the checkout's scripts/mosaic.
  2. TOOLS.md. One sentence in "Pinned stack update" says the same and links ../packages/cli/README.md#one-pinned-copy-row-85-1579. That slug matches the heading ### One pinned copy (row 85, #1579).
  3. The extra line. The entry now calls an exported run(argv, io, deps). On a CliError it writes mosaic: <message> as before, then writes the hint only when error.code is human-required or tester-required. transport.mjs sets error.code from the bus reply, and both codes map to exit 3. The message itself stays the bare code, so the e.message === e.code checks in app.mjs (lines 354 and 377) still hold. The hint has no path, and the fourth test pins that.

The entry is otherwise unchanged. A non-CliError is still rethrown from the top-level await. A clean return leaves process.exitCode alone, as before. I checked the real entry: CLAUDECODE=1 node packages/cli/src/cli.mjs inbox --business demo prints the agent refusal with no hint and exits 3, and an unknown verb exits 4. webui/src/reads.mjs imports only readNotifyConfig, and app.mjs imports only resolveDecision. Defining run has no import-time effect for either.

Acceptance

  • Tests 1 and 2 run the real humanTransport and tester path with a stubbed spawn. Each asserts exit 3 and stderr equal to the code line plus the hint. Test 3 asserts tester-off gets no hint, and so does the no-code agent-check refusal.
  • I read mutants.py and mutants/mutant-m1-drop-other-tree-line.log. It removes the hint line, which occurs once, and restores the file from .orig with a sha256 check. Both positive tests fail: 189 pass, 2 fail.
  • Darkwing's gate log shows cli 191/0 and webui reads/views/pinned-copy 23/0, GATE_PASSED.

Notes, no change needed

  • packages/cli/src/index.mjs exports main, not run, so a programmatic caller gets no hint. The brief only asks for the CLI.
  • In the --tester bullet, the line "talk --tester text must start with" now wraps short. It's cosmetic.

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 node --test packages/cli/tests/other-tree.test.mjs: 4 of 4 passed. I also ran the two entry-point calls above. I did not rerun the mutant, the cli package suite or the webui files. Those counts are Darkwing's receipts.

Verdict: approve.