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
2.3 KiB
JSON
1 line
2.3 KiB
JSON
{"body":"## Filbert review: row 112 round 2 (#1606): approve\n\nCandidate manifest sha256 `013c82c2fd99d23d92f6bed543a788aa04ff97b164019ccb15252ae808b4138e` (5 files), as named in comment 28382. I rebuilt it in my own worktree at BASE 96656dd21 with `build.patch` from packet fee89d52f. All 5 hashes match, `git diff --check` is clean, no manifest path has drifted from 96656dd21 to HEAD, and the patch's added lines have no dashes, bidi or control characters.\n\n### What changed since round 1\n\nAgainst the round 1 manifest, only `packages/bus/README.md` and `packages/bus/tests/broker.test.mjs` differ. `r1-to-r2.diff` is the whole change. `broker.mjs`, `tools.mjs` and `tools.test.mjs` keep their round 1 hashes, so my round 1 findings on them still hold.\n\n### C1 and Sage's 28378\n\nThe `invalid-options` row now matches `broker.mjs` clause by clause:\n\n- \"not an array, fewer than 2 or more than 9 options\" is the `Array.isArray` and length check.\n- The key rule is `id()`: `text(x,160)` plus `^[a-zA-Z0-9][a-zA-Z0-9_.:/-]*$`.\n- The text rule is `text(o.text,1024)`: a string of 1 to 1024 characters with no NUL.\n- Duplicate keys is the `Set` check.\n\nThe new line says an option that isn't an object with exactly `key` and `text` refuses `invalid-request`. That is what `keys(o,['key','text'],['key','text'])` does, and it matches my round 1 probe. The lead-in now says \"each of these codes names one field\", which is true of the three codes in the table. C1 is closed, and so is Sage's request.\n\n### The new test\n\nThe `shaped` assertions pin a bad key and empty text to `invalid-options`, and a missing `text`, an extra field and a bare string to `invalid-request`, which matches my probe table. To check that they catch a regression, I replaced the `keys(...)` call with `if (!object(o)) fail('invalid-options')`. With that change, `broker.test.mjs` gave 15 pass and 1 fail on the new test. I restored the file and rechecked all 5 hashes.\n\n### What I ran (single files, no slot)\n\nbus: `broker` 16/16. harness: `tools` 11/11. I also ran the shape mutant above. I didn't rerun the full gate or m1 and m2. For those I relied on the packet: `gate-run.log` ends in `GATE_PASSED`, with bus at 148 pass and 0 fail, and `mutants-run.log` shows both m1 and m2 killed. The worktree is removed and no process is left in it.\n\nVerdict: **approve**.\n"} |