From 191048fbec27f7bfeade6cb5879bbae1a6740dc6 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Wed, 21 Oct 2026 06:55:52 -0500 Subject: [PATCH] webby: row 247 round 1 review, approve, and session line --- agents/webby/work/queue-247/REVIEW-r1.md | 51 ++++++++++++++++++++++++ docs/SESSIONS.md | 1 + 2 files changed, 52 insertions(+) create mode 100644 agents/webby/work/queue-247/REVIEW-r1.md diff --git a/agents/webby/work/queue-247/REVIEW-r1.md b/agents/webby/work/queue-247/REVIEW-r1.md new file mode 100644 index 000000000..a6c4ad0ba --- /dev/null +++ b/agents/webby/work/queue-247/REVIEW-r1.md @@ -0,0 +1,51 @@ +# Webby review: row 247 (#1749), C2-20b, round 1 + +Webby, 2026-10-21T11:55Z (from `date -u`). Author: Gosalyn. Request comment 30042 (revs 2846-2847, +sage-1976, posted by Sage as jarvis). Brief: docs/plans/2026-10-20_case2-rows.md "C2-20b", blob +f7c4cfbff43a. It covers my row 221 notes N1, N2 and N4 (webby-0073). Candidate: manifest digest +6d3f279f692be2cbfaeca9ae36c3a8404d4cae110a2c005150b89803b247263e, 4 paths, on gosalyn/c2-20b 6d43618a3. +That's one commit on 335bb3e30. + +What I checked, without runs or a worktree: +- I took the manifest text from `queue show 247` (round 1), not from the scratch path. It hashes to the + digest above, and each path's sha256 from `git show 6d43618a3:` matches its line. +- 335bb3e30..6d43618a3 touches exactly the 4 manifest paths. The script stays 100755. +- Overlap: the refactor tip is 5c6f73ed7. 335bb3e30..5c6f73ed7 changes none of the 4 paths. +- Outside readers: `git grep case2-persona-import` over packages/*/tests/* and scripts/test-*.sh hits + only the test file and its own fixture tree. No hash pin. +- I read the script and test diffs, the new fixture, BUILD.md and the brief. + +Gosalyn's slot run on grant sage-1971, 11:49:04-11:49:22Z: 14/0, and M1-M4 each killed (BUILD.md). +Run 1 was red from the dropped space after the comma. The fix put the space back, and the test expects +it (`"-1001", 29 bytes`). I ran nothing. + +## Verdict: APPROVE + +- N1. The per-channel line prints `c.where` and `c.channel` through JSON.stringify + (case2-persona-import.mjs:248). `where` is the fixed prefix plus the platform key (:149, :155-157), so + both config keys are quoted. That's the only line that prints config text. The profile name comes from + pairing's PROFILE_ID check. The new test writes a newline into both keys, expects one quoted line, and + checks that no line starts with the forged `staged:` or `pairing:` text. M1 and M2 each fail it. +- N2. The dry run calls personaTextFault on each persona after its count line (:235-236), prints the + fixed reason, and refuses after the loop (:238), so both profiles' faults show before exit 1. Nothing + is written. The new test takes 8001 two-byte characters (16002 bytes, under soul()'s 32000 cap at + :130), expects the "over 8000 characters" line and exit 1, and expects exit 0 at exactly 8000. The + heading test now expects the fence line and the refusal text. M3 fails both. The header (:21-25) now + says the dry run refuses and that over four times the fence in bytes refuses before any count, which + is what :130 does. +- N4. privateDir turns an EEXIST from mkdir into a named Refusal and rethrows anything else + (:189-194). mkdir-race.mjs patches fs.mkdirSync and calls syncBuiltinESMExports, so the script's + named import (:29) gets a real kernel EEXIST, the same way trace.mjs hooks reads. The test hits it at + stage (the staging dir, :255) and at install (`personas/`, :303), checks the exact stderr, + and checks that each raced dir is empty. M4 fails it. + +The JSON.stringify residual (DEL, C1, U+2028/9 and bidi left raw) is recorded in BUILD.md under +sage-1964. None of those ends a line on a terminal, so no forged line is possible. A bidi control can +only reorder the display of that one line, and the keys come from Jason's own Hermes config. I accept +the limit as ruled. + +## Non-blocking + +N1. BUILD.md's mutant table puts M1 and M2 at line 237. At the candidate, the per-channel line is 248. +237 is where that line sat before this row's dry run change. The mutants match exact strings, so the +runs aren't affected. Only the table's line numbers are off. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index 704256bce..02b48a795 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1417,3 +1417,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-21T10:37Z | Webby (Opus 5.5, reviewer seat) | row 221 C2-20 round 1 (8f403d0d4, manifest 20f05e3a) review | APPROVE; notes agents/webby/work/queue-221/REVIEW-r1.md 2026-10-21T11:29Z | Webby (Opus 5.5, reviewer seat) | row 197 queue round 5 r7 (9c3166915, manifest 4e54024a) review | APPROVE; notes agents/webby/work/queue-197/REVIEW-merge-r5.md 2026-10-21T11:53Z | Webby (Opus 5.5, reviewer seat) | row 218 (#1719) C2-12 round 1 review, doc only, merge scope | APPROVE fc0d9c26f manifest fb1bbc5d, N1-N4 non-blocking; notes agents/webby/work/queue-218/REVIEW-r1.md +2026-10-21T11:55Z | Webby (Opus 5.5, reviewer seat) | row 247 (#1749) C2-20b round 1 review, merge scope | APPROVE 6d43618a3 manifest 6d3f279f, N1 non-blocking; notes agents/webby/work/queue-247/REVIEW-r1.md