4.7 KiB
Row 225 review packet — C2-10b (#1726)
Owner Fethry (14f80e3c), reviewer Dewey (84fb346c). Base 45dca69f6.
Source candidate 507901277 continues Morgana 66f7becf2 and 9a131e956; no rewritten history.
Status: targeted tests and full library green; full webui/build and Sage's full gate still pending.
This packet requests source/manifest review, not landing or a full-green claim.
Behavior and contracts
The Console shows reply text and citations with path/line/quote, scope and agent-written labels, marks a changed file only with valid differing check.file/check.last, links only https URLs, shows write/delete notices and explicit Revert results, and displays library status, fetch age, divergence, fetch errors, nested replyLimits metadata and R-problems. Invalid library mappings remain visible. Revert validates {project,commit}, preserves refusal codes and reports uncertain/wrong-project receipts as outcome-unknown without retry. The project is chat project.repo (business.projects key).
A1-A5 are in BUILD.md. Dependency contracts: row217 ordered check.citations and nested replyLimits; row288 A2 revert result/notice. No dependency merge in this candidate. Landing order is 217 then225; unknown-verb is expected until288 lands. Beakley's GUARD_CODES/FIXED_TEXTS need no renderer import: renderReply defines neither and renders those fixed bodies as free text.
Frozen implementation and tests
manifest.r1.sha256 freezes the 13 changed package paths, including the two approved existing-test
changes. Check from repository root with sha256sum -c agents/fethry/work/queue-225/manifest.r1.sha256.
All other changed files are BUILD/session records, handoff/approval evidence and this review packet.
No role, policy, schema, secret, live instance, deployment or queue change is included.
Three departures from the brief, carried from Morgana's handoff:
- Chat rendering/status live in public/chat.js and chat.css, where the message list is, instead of bus.js and its stylesheet (sage-3596). serve.mjs serves the same pure render.mjs module to owner and granted-user pages; no duplicated browser renderer and no generated asset.
- console-bus.mjs and cli.mjs wire libraryRevert beside libraryStatus (sage-3596). --send still independently gates Revert. Preserve row288's separate librarySave wiring at integration.
- webui/src/bus.mjs maps library-revert-not-agent to409; bus/tests/channel-proof.test.mjs re-pins only that source's hash and documents why. Mos read and approved this exact +3/-1 (mos-1510).
Existing-test authority: Mos1510 via Sage3623 approves render.test.mjs +80/-66 and channel-proof +3/-1. Both exact numstats are unchanged. The malformed-body fixed-line rule is superseded by design5.2's whole-body free text, covered by two replacement renderer tests. The old no-options path-badge rule is retained and covered by the replacement test plus unchecked-cite browser coverage. BUILD.md explains these two preservation conditions and the three new-file assertion corrections in detail.
Verification and remaining gate
Evidence logs are under evidence/; commands, deadlines, failures and corrections are in BUILD.md. Targeted whole-file tests: renderer9/0, routes13/0, browser9/0. Full library81/0, channel-proof2/0. No skips/cancellations. Invalid-mapping visibility also has an independent RED then GREEN. All 14 isolated mutants were killed by assertions on source candidate507901277; each mutation matched one anchor, restored its source hash, and verified unchanged candidate hashes before the next mutation. Summary: evidence/mutants-final/summary.json. The first attempt stopped at an expected-state wait (not counted as a kill), then the new browser test was improved and the whole kit rerun. Raw logs remain under the scratch root; checked-in display copies trim trailing whitespace and record raw digests in evidence/raw-log-provenance.json.
Before landing, Sage still runs full webui with MOSAIC_REQUIRE_EDITOR_BUILD=1 after the worktree-local webui npm ci, every applicable package/script suite and integration against217. No full webui/build in T1 (sage-3647). Dewey approval and Sage's gate/landing remain required; queue moves belong to Sage.
Static audit: the channel-proof source pin matches webui bus.mjs; no hash pin of bus.js, serve.mjs or library render.mjs was found. packages' only remaining renderItems match is an explanatory comment in the frozen replacement test; no runtime export, import or call remains. No no-cited-answer match.
Review focus: stored check metadata versus untrusted body, missing/malformed file/last, https-only links and inert hostile text, Revert authority/receipt uncertainty, async route/sign-out isolation, and status diagnostics without owner transport leakage to a granted user.