From 7d032da5b42dbb3bdd2130d998c95df5d2a3b1d3 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Sun, 11 Oct 2026 20:53:36 -0500 Subject: [PATCH] filbert: row 67 round 2 packet, rebase onto f38b7f46 (#1560) Manifest 4387c8d5. Rebase only: same added and removed lines, three files re-digested after rows 58, 60 and 59. Gate green, round 1 mutants all killed. Co-Authored-By: Claude Opus 5.5 --- agents/filbert/work/queue-67/build.md | 94 +++++++++++++++++++ agents/filbert/work/queue-67/build.patch | 14 +-- .../work/queue-67/candidate-manifest.sha256 | 6 +- 3 files changed, 104 insertions(+), 10 deletions(-) diff --git a/agents/filbert/work/queue-67/build.md b/agents/filbert/work/queue-67/build.md index 11ea446a2..0ef20a153 100644 --- a/agents/filbert/work/queue-67/build.md +++ b/agents/filbert/work/queue-67/build.md @@ -1,3 +1,97 @@ +# Row 67 (#1560): decisions read follow-up, round 2 + +Filbert, 2026-10-12. Brief: `docs/plans/2026-10-11_decisions-read-follow-up.md`, +"Decisions read follow-up: seen-then-resolve, list-before-503 and full-row +tests" (blob 7674ff40, unchanged). Darkwing and Dewey review. Sage commits +after the gate. Nothing in the candidate is committed, staged or pushed. + +Base f38b7f46, origin/refactor's tip when I rebased. `build.patch` applies +there with `git apply --index`, and `candidate-manifest.sha256` pins all 4 +files after the patch. Round 1 was manifest `8959e615…7369` on 970ef729, +approved by Dewey (27452) and Darkwing (27627). + +## Round 2: rebase only + +Sage set the scope: a rebase onto the current tip, the merged hunks named +here, a fresh manifest, and a digest re-approval. Nothing new goes in, so the +round 1 description, mutants and questions below still apply. Dewey's N1 (an +assertion that test 4's new decisions are listed) is not folded in; it stays +a follow-up. + +### What landed on the manifest paths + +Since 970ef729, three rows changed 3 of the 4 files. +`packages/bus/tests/decisions.test.mjs` is untouched. + +- Row 58 (aaf87213): the bus README, `broker.mjs` and webui `bus.test.mjs`. +- Row 60 (1771bf98): the bus README, `broker.mjs` and webui `bus.test.mjs`. +- Row 59 (a8512007): the bus README and `broker.mjs`. + +### Digest check + +Round 1's patch no longer applies plain (README line 205), as Darkwing found. +It applies to f38b7f46 with `git apply --index --3way` with no conflicts. +I compared the round 1 and round 2 patches: + +- The added and removed lines are byte-identical (106 lines each). +- The hunk headers moved: README 205 to 235, `broker.mjs` 837 to 861, webui + `bus.test.mjs` 163 to 191. The `decisions.test.mjs` hunks are unchanged. +- One context line differs, below. + +`decisions.test.mjs` keeps its digest (`9477cfa7…`). The other three have new +digests because their bases changed. + +### Merged hunks + +Line numbers are in the round 2 tree. + +- `packages/bus/README.md`, lines 235–243: the "Every row is…" sentence is + rewritten as in round 1. In round 1 the hunk's last context line was the + `## Shared reads and adapter boundary` heading. Row 60 has since put its + `credentials` paragraph between the two, so that paragraph's first line + is the context now. The sentence and the paragraph share no lines. +- `packages/bus/src/broker.mjs`, lines 864–867: the comment above + `case 'decisions'` (line 868). Row 59's `agents` block ends above it + (line 852 on), and row 60's `case 'credentials'` follows it (line 889). + Neither touches the comment or the case. +- `packages/webui/tests/bus.test.mjs`, lines 194–198: the three no-bus + requests still follow the `/api/bus/agents` not-configured check, inside + "bus refusals map to statuses…". Row 58 and row 60's additions sit above. + +### Gate (round 2) + +Run in a worktree of f38b7f46 with the round 2 patch staged and +`node_modules` linked, in sequence, with `TMPDIR` in my scratch and +`DOCKER_HOST` pointed at a missing socket, 2026-10-12T01:47:57Z to 01:52:03Z. + +- Packages: webui 62/0, bus 95/0, cli 114/0, control-board 124/0. +- All nine `scripts/test-*.sh` exit 0: auth 15, conductor 17, config 24, + discord 66, extension-package 18, foundation 44, queue 27, release 4, + task 26. `test-queue` skipped `verify` and `render --check`, because the + worktree isn't the queue's canonical root. `test-release` skipped its + Docker cases without a daemon. +- Afterwards `git status` showed only the four staged paths and the + `node_modules` link, and the tree checked 4/4 against the manifest. + +### Mutants (round 2) + +I reran round 1's nine mutants (`mut/run.mjs`) on the round 2 tree, +2026-10-12T01:52Z to 01:53Z. All nine are killed, each by the same test as in +round 1. The bus suite now has 95 tests and the webui file 9, so the counts +read 94/1, 92/3 for `view-blocking-raw` and 8/1 for `web-503-first`, where +round 1 read 80/1, 78/3 and 7/1. One edit changed: row 59 added a second +`blocking: !!d.blocking,` in the `agents` read (`broker.mjs` line 930), and +the runner refuses a target that isn't unique. So `view-blocking-raw` ran +from a copy of the runner that anchors on its whole line (line 297, inside +the decisions view), and the edit is the same. After each run `git diff` was +unchanged, and the tree checked 4/4 against the manifest afterwards. + +--- + +The round 1 packet follows unchanged: the description, files, round 1 +mutants, round 1 gate and questions. Its base and line numbers are round 1's. + + # Row 67 (#1560): decisions read follow-up, round 1 Filbert, 2026-10-11. Brief: `docs/plans/2026-10-11_decisions-read-follow-up.md`, diff --git a/agents/filbert/work/queue-67/build.patch b/agents/filbert/work/queue-67/build.patch index 33e397ec9..0b9817b29 100644 --- a/agents/filbert/work/queue-67/build.patch +++ b/agents/filbert/work/queue-67/build.patch @@ -1,8 +1,8 @@ diff --git a/packages/bus/README.md b/packages/bus/README.md -index 5b57b7fc..fcd0f69e 100644 +index 08be6307..11489360 100644 --- a/packages/bus/README.md +++ b/packages/bus/README.md -@@ -205,7 +205,9 @@ decisions. It takes `{list}`, nothing else. `roles` lists the business's open +@@ -235,7 +235,9 @@ decisions. It takes `{list}`, nothing else. `roles` lists the business's open decisions routed to a role, never to the human, oldest first. `recent` lists its last `RECENT` (50) closed decisions of every route, newest close first, each with `closed`, the closing `decision_events` row. Every row is the @@ -12,12 +12,12 @@ index 5b57b7fc..fcd0f69e 100644 +raise's `action.allowed` event, which `trail` also gives. So the lists add no data a reader couldn't already read one id at a time; they add the listing. - ## Shared reads and adapter boundary + `credentials` (row 60, #1549) is also for human and reader sessions only; a diff --git a/packages/bus/src/broker.mjs b/packages/bus/src/broker.mjs -index 84db8799..07f35114 100644 +index 5e86c60c..5acc8329 100644 --- a/packages/bus/src/broker.mjs +++ b/packages/bus/src/broker.mjs -@@ -837,7 +837,10 @@ export class Broker { +@@ -861,7 +861,10 @@ export class Broker { return this.#trail(s, identifier(a.subject)); } // Row 57 (#1546): the Inbox's "Routed to roles" and "Recent" lists, for human and @@ -143,10 +143,10 @@ index 6626460b..069e2ef4 100644 test("a role session can't list decisions, so it can't read another role's open decisions", (t) => { diff --git a/packages/webui/tests/bus.test.mjs b/packages/webui/tests/bus.test.mjs -index 2d9ca6ba..86fae610 100644 +index 46d8016c..a243ae7e 100644 --- a/packages/webui/tests/bus.test.mjs +++ b/packages/webui/tests/bus.test.mjs -@@ -163,6 +163,11 @@ test('bus refusals map to statuses and never carry a path or a stack', async t = +@@ -191,6 +191,11 @@ test('bus refusals map to statuses and never carry a path or a stack', async t = assert.deepEqual([shape.status, (await shape.json()).error], [502, 'invalid-response']); const unset = await fetch(`http://127.0.0.1:${none.address().port}/api/bus/agents`); assert.deepEqual([unset.status, (await unset.json()).error], [503, 'not-configured']); diff --git a/agents/filbert/work/queue-67/candidate-manifest.sha256 b/agents/filbert/work/queue-67/candidate-manifest.sha256 index b9f0ce43f..8a5224cb3 100644 --- a/agents/filbert/work/queue-67/candidate-manifest.sha256 +++ b/agents/filbert/work/queue-67/candidate-manifest.sha256 @@ -1,4 +1,4 @@ -1d46e3f0fd0ccdb3c5a9cb6159b0f1a7031757983297d612f78209dd20740c93 packages/bus/README.md -9fecd3d888ce86c113b6176eb86902bdd5f606965f1c0b5c90d59016f4f6cd92 packages/bus/src/broker.mjs +3d3aa48934df0c929889fcb4f5028eb650a7ddb29a9cab8d6f911e5369037dfb packages/bus/README.md +8c53efeb3b2398882da13634f109da936546c1bafe133150c1f5a0a4e446be7c packages/bus/src/broker.mjs 9477cfa7411fc46b4be4c960942b9f5c912bb050b1119a635ab161d321b77b2a packages/bus/tests/decisions.test.mjs -10bc41d8a332027aa902da836ad7644cdc09ef8be26a2b8bab106c5f365e3da1 packages/webui/tests/bus.test.mjs +42285ef5ae5ec5464c814bbccab0205058b6c51019d4a768754caf441bb33c2c packages/webui/tests/bus.test.mjs