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.
1 line
3.2 KiB
JSON
1 line
3.2 KiB
JSON
{"body":"## Filbert review: row 130 round 1 (#1625): approve\n\nCandidate 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.\n\n### The brief, item by item\n\n1. **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`.\n2. **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)`.\n3. **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.\n\nThe 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.\n\n### Acceptance\n\n- 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.\n- 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.\n- Darkwing's gate log shows cli 191/0 and webui reads/views/pinned-copy 23/0, `GATE_PASSED`.\n\n### Notes, no change needed\n\n- `packages/cli/src/index.mjs` exports `main`, not `run`, so a programmatic caller gets no hint. The brief only asks for the CLI.\n- In the `--tester` bullet, the line \"`talk --tester` text must start with\" now wraps short. It's cosmetic.\n\n### What I ran\n\nI 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.\n\nVerdict: **approve**.\n"} |