From 43faeff461468ccdfd2e23defff744ef03614f10 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Thu, 22 Oct 2026 06:42:21 -0500 Subject: [PATCH] webby: row 278 early source read, and session line --- agents/webby/work/queue-278/REVIEW-b-early.md | 52 +++++++++++++++++++ docs/SESSIONS.md | 1 + 2 files changed, 53 insertions(+) create mode 100644 agents/webby/work/queue-278/REVIEW-b-early.md diff --git a/agents/webby/work/queue-278/REVIEW-b-early.md b/agents/webby/work/queue-278/REVIEW-b-early.md new file mode 100644 index 000000000..3d58b5074 --- /dev/null +++ b/agents/webby/work/queue-278/REVIEW-b-early.md @@ -0,0 +1,52 @@ +# Row 278 (#1783) early source read, Webby + +Candidate: gander/row278-b source commit e7d21b91b (parent 2c350a466, base 6af85df4b), +packet tip 0011fe357. Manifest digest d6e1476c8c37f41e. Messages gander-0090, gander-0091. +Git and reading only. No node, test or browser ran on my side. + +## Verdict: no blockers in the source read + +## What I checked + +- 6af85df4b is an ancestor of origin/refactor. 0011fe357 changes only packet files + (BUILD.md, MANIFEST.md, SOURCE.json, manifest-check.txt). +- Rebuilt all six manifest hashes from `git show e7d21b91b: | sha256sum`. All six match. +- The change lines of `git diff 2c350a466 e7d21b91b` equal the frozen CANDIDATE.patch lines + once both are sorted. Only the file order differs, so a plain patch-id compare fails. No byte moved. +- No co-author lines in 6af85df4b..0011fe357. +- serve.mjs: the tester guard sits in the /api/bus/ branch after the 404 allowlist check + and the 405 method check, and before `busRead`. It refuses with 403 `tester-refused` + before any bus callback runs (R2). The 400 for a query string sits in busRead, so a tester + gets 403 even with a query. That is the right order. +- bus.js:475-491 `threadClaimsSection`. Its catch rethrows only `signed-out` and evicts only + `thread.claims` from `last` (R1). The `get` helper (:65-73) has no refusal side effect of its + own, so a 403 never reaches `forget()` or the global refusal path. A malformed row throws + `invalid-response` after `last.set`, and the catch deletes that entry. +- Projection is four fields through `txt()` and `when()`. `instance` and the other extras are + never read. The hostile-field browser test asserts they are absent and the row has 4 cells. +- bus.js:492-500 `agentsView`. The section goes after the unchanged Held roles section. The + role count is still `claims.length` of the `agents` read, so the brief's M2 failure mode + (claims counted into role totals) shows as a change in the byte-equal role section. Gander's + M2 (merge thread rows into roles) maps to it. +- cli.mjs:86 adds the argument-free adapter. The adapter test pins `{verb, args: [], tester: false}`. + +## Notes (non-blocking) + +N1. `configRead` ends in `.catch(() => {})`, so a failed /api/config leaves `isTester` false. A +tester browser in that state requests the read and shows the local 403 banner. The server guard +still holds, so this only affects display. No change needed. + +N2. `agentsView` awaits the claims read after the agents read, so each Agents render makes two +round trips in sequence. Fine at this size. Worth a `Promise.all` only if the view gets slow. + +N3. gander/row278-b is not on origin. The manifest round reviews the pushed first-parent tip, +so push before the request. Gander's "no push until green" is consistent with that. + +## For the manifest round + +- Intended RED cases observed on the base, then GREEN, with byte-identical restores. +- Both touched test files run whole. Bus whole, webui whole, all ten scripts/test-*.sh. +- Kill table for M1-M6: M3 (403 rethrow) killed by the byte-equal role test, M4 (tester guard) + by the socket test's status and call count, M6 (cache kept on refusal) by the stale repaint. + A timeout counts as a stop, not a kill. +- Record only after the request is posted, with my verdict comment id. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index 5f8de37d3..0f6b7d609 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -1469,3 +1469,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-22T10:35Z | Webby (Opus 5.5, reviewer seat) | row 256 r3 f12441d4f carry check (honker-0150) | range-diff 4/4 =, overlap hunks equal, manifest 01eb75aa rebuilt; webby-0128 2026-10-22T10:53Z | Webby (Opus 5.5, reviewer seat) | row 256 manifest round 1, 01eb75aa (f12441d4f), honker-0154 | APPROVE; gate logs read 3757/0, 10 scripts, 5/5 killed; record after request posts; webby-0129 2026-10-22T10:57Z | Webby (Opus 5.5, reviewer seat) | row 256 round 1 record | approve recorded rev 3185 (c30519); webby-0131 +2026-10-22T11:42Z | Webby (Opus 5.5, reviewer seat) | row 278 early source read of e7d21b91b (manifest d6e1476c) | no blockers, N1-N3; manifest round on fresh gate records