Rebase-only round on 3d298920. Merged hunks against rows 58 and 60 keep
both sides; 21 round 1 mutants give round 1's results. Comment 27591.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
3.9 KiB
Row 59, bus read: agent state per role, round 2 review (Darkwing)
Issue #1548, request comment 27586, packet agents/filbert/work/queue-59/
(commit 93fc00e4). Base 3d298920, row 60's landing plus Sage's log
commits. Candidate manifest sha256
9acfac19161525d47cfaf66e11f677cf3119e10f3cd0b5b7105be5933ddbad2d, 8
files, matching the request. Scope: Sage's rev 571, rebase only.
Verdict: approve. The rebase changes one line of round 1's code, the
bus.css widths line, and keeps both rows' values there. The two merges
Sage asked about, broker.mjs against row 58 and the bus README against
row 60, keep every line of both sides. The tests and my round 1 mutants
give the same results as round 1. Nothing blocks.
Method
- A detached worktree at
3d298920withgit apply --index build.patch, thensha256sum -con the manifest: 8 OK, and again after the mutants. None of the 8 paths changed from3d298920toHEAD(f3c8b2e2) at the time of review. - I compared the added and removed lines of round 1's
build.patch(93fc00e4^) with round 2's. They match except forbus.cssline 28. - I read each merged hunk in the round 2 tree and checked the line numbers
build.mdgives. They're right. - Three test files, then my 21 round 1 mutants on the new tree
(
r2/mutants.sh, the 17 fromr1/mutants.shthat applied plus the 4 fromr1/m2.sh).
Node v26.8.1, TMPDIR=~/darkwing-scratch/rv59r2/tmp.
The merged hunks
broker.mjs, the agents branch against row 58. Lines 852 to 859 are
round 1's block unchanged: the claims query, then #agentState for human
and reader sessions and the plain rows for a role session. Line 860 is row
58's if (verb === 'tasks') return this.#taskRows(s.business); as row 58
landed it. Row 58's #taskRows at line 313 is untouched. Row 60's
credentials case (line 886) is inside the switch above default: (line
906), and #agentState (line 914) is after the switch. The reader
allowlist already had agents, so row 60's edit to it doesn't matter
here.
The bus README against row 60. The verb table reads inbox, tasks
(128), agents (129), trail (130), then row 60's decisions (131) and
credentials (132). Round 1's split of the inbox, tasks, agents row and
row 60's two new rows share no lines. The "Agent state" section follows
the table at line 134, as in round 1.
bus.css line 28. Row 58 set table.s1-tasks to 1020px and round 1
set table.s1-agents to 1000px on the same line. The line has both. The
browser test passes with it.
bus.js and the tests against row 58. Row 58's Tasks view changes end
above the Agents hunk, and the test additions in bus-browser.test.mjs and
bus.test.mjs share no lines with rows 58 or 60.
Tests and mutants
On the candidate, 00:50:46Z to 00:51:03Z on 2026-10-12
(r2/tests-light.txt):
| File | Result |
|---|---|
packages/bus/tests/agents.test.mjs |
6 pass, 0 fail |
packages/webui/tests/bus.test.mjs |
9 pass, 0 fail |
packages/webui/tests/bus-browser.test.mjs |
1 pass, 0 fail |
I didn't run the full suites. Sage's gate run for this row was going at the same time, Filbert's gate is green, and the code is round 1's apart from the CSS line.
The mutants ran from 00:51:06Z to 00:51:53Z (r2/mutants.txt). 20 of 21
fail, and each fails the same test it failed in round 1; I compared the
failing test names mutant by mutant. any-role-msg survives again, for
round 1's reason. The only count that moved is endpoint-plain, 8 pass
instead of 7, because row 60 added a test to the WebUI bus file. The
sources matched the candidate index afterwards.
Filbert's correction
build.md takes back round 1's claim that the diff was unchanged after
the mutants. My round 1 review didn't rely on that claim: my mutants ran
on my own worktree and restored from its index. This round's full run
checks clean.
Round 1 notes
Note A (a claim that outlives its runner) stays open; this round is rebase only. Note B is row 80 now.