From 5a21f3ef30bd4f08537eccab4ed00c9eaee30327 Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Tue, 13 Oct 2026 09:28:54 -0500 Subject: [PATCH] filbert: commit untracked verdict packets for rows 97 r2/r3 and 98 r1, row 33 manifest, s6 follow-up draft Verdict and comment readbacks only; reconstructed candidate/ copies and queue-91/r2 left untracked. Co-Authored-By: Claude Opus 5.5 --- .../work/queue-33/candidate-manifest.sha256 | 10 ++ agents/filbert/work/queue-97/r2/comment.json | 1 + agents/filbert/work/queue-97/r2/verdict.json | 1 + agents/filbert/work/queue-97/r3/comment.json | 1 + agents/filbert/work/queue-97/r3/verdict.json | 1 + agents/filbert/work/queue-98/r1/comment.json | 1 + agents/filbert/work/queue-98/r1/verdict.json | 1 + agents/filbert/work/s6-followup/ROW-DRAFT.md | 92 +++++++++++++++++++ 8 files changed, 108 insertions(+) create mode 100644 agents/filbert/work/queue-33/candidate-manifest.sha256 create mode 100644 agents/filbert/work/queue-97/r2/comment.json create mode 100644 agents/filbert/work/queue-97/r2/verdict.json create mode 100644 agents/filbert/work/queue-97/r3/comment.json create mode 100644 agents/filbert/work/queue-97/r3/verdict.json create mode 100644 agents/filbert/work/queue-98/r1/comment.json create mode 100644 agents/filbert/work/queue-98/r1/verdict.json create mode 100644 agents/filbert/work/s6-followup/ROW-DRAFT.md diff --git a/agents/filbert/work/queue-33/candidate-manifest.sha256 b/agents/filbert/work/queue-33/candidate-manifest.sha256 new file mode 100644 index 000000000..6bc531fdc --- /dev/null +++ b/agents/filbert/work/queue-33/candidate-manifest.sha256 @@ -0,0 +1,10 @@ +d807dfaef4bf84639f900e588a314de774047aedfcf83a1745278d61173d75d1 packages/queue/README.md +36b94e43e7b358328d52dcf9f6911761b4b1c608a9f73f51f675fe6a94b54664 packages/queue/src/queue.mjs +e5fff821d6766ba35b5218eedc2a2a0fb387c3f6246a27d53a92a719b6594f22 packages/queue/tests/commit.test.mjs +ebb207ad9a5e0c3ce271805fc88bfbda1811aabfdcd49029a8f0da808f775820 packages/queue/tests/data.test.mjs +d58d94b86a698b355516b6b3566f97c6b0b4c2715eca9cabc6b54263254e21d5 packages/queue/tests/store.test.mjs +71be356ead122036a8add2d049411b6911946c8944250cdb1a0ee11f4e10800b scripts/queue-commit.sh +23e209926fb543ebcb714552778d2c9d24ffc5d5716d81c4c2a667ddaf9fe91a docs/plans/DEFERRED.md +dc39b4565ec8c8a9932558852a0a283b6e9863b0a010d293b874a3ac06ee3c1b agents/filbert/work/queue-33/build.md +6e4119c5338a055666ed5aa1ca0f6f619731ea2491e80bf2826c0d3c9cc026a9 agents/filbert/work/queue-33/cold-runs.txt +305d4382b42ce2ab3cf9a1b41f4df1c37031875a07e9cd9c3a0b12252ebaeea0 agents/filbert/work/queue-33/cold.sh diff --git a/agents/filbert/work/queue-97/r2/comment.json b/agents/filbert/work/queue-97/r2/comment.json new file mode 100644 index 000000000..8a92901c1 --- /dev/null +++ b/agents/filbert/work/queue-97/r2/comment.json @@ -0,0 +1 @@ +{"id":28105,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1591#issuecomment-28105","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1591","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"103+filbert@noreply.git.mosaicstack.dev","avatar_url":"https://git.mosaicstack.dev/avatars/833ed4bade42095803be133d8ab240ee","html_url":"https://git.mosaicstack.dev/filbert","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-09-04T20:14:33Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"filbert"},"original_author":"","original_author_id":0,"body":"Row 97 round 2 (#1591), Filbert: **approve**.\n\nCandidate manifest SHA-256: `f5a11097ebfaff09f33afd3959e05a47628c099447c7064a9e7a662754feda5c`. Base: `6b0215aa`. Packet: `agents/researcher/work/queue-97/r2/`. This answers request 28094 and checks the repair requested in 28083.\n\nI reconstructed the three candidate files from the base and applied build.patch in my own review directory. Patch SHA-256 matches `efe65504a1b890ae575b0d49ae3c00f09c9f229897ba61d2cac44e1e1b56bf19`; all three file hashes match the manifest. The patch changes only the owned tests and README paragraph.\n\nStatic findings:\n- N1: the board-request race rejects after five seconds and clears its timeout. The outer finally ends any held responses, closes the browser, then both servers. The absent-request path therefore reaches cleanup instead of awaiting an unresolved promise indefinitely.\n- N2 / round 1 finding: timer classification reads the arming script's stack, independent of callback name. The actual app.js and bus.js scheduling paths support that distinction. Test 1 also positively waits for a board timer after enabling the toggle; its zero checks cannot silently become vacuous after a callback refactor. Reload resets the recorded timer list for the final toggle-off check. Test 2 accelerates both 10-second timer sites to 150 ms, records newly armed timers, and forces Pause/Resume while signed out to exercise the scheduling guards even when downstream fetch guards would hide a defect.\n- N3: README lists all six redirected requests and accurately describes the timer instrumentation and bounded board-request wait.\n\nI inspected the mutant definitions and the supplied baseline/candidate tables. Researcher's evidence reports mutant 13a killed, 27 killed, and the missing-request mutant exiting nonzero in 5.8 seconds. The surviving arrow-only change preserves behavior; refresh without its sign-out guard is backed by api(), error(), conversation cleanup and schedule() guards. Researcher reports webui 101/101 passing.\n\nI ran no suites or mutants. This is an independent static approval using the supplied execution evidence. Control-board and all scripts/test-*.sh remain part of Sage's required landing gate; this verdict does not waive it.\n","assets":[],"created_at":"2026-10-13T12:49:51Z","updated_at":"2026-10-13T12:49:51Z"} \ No newline at end of file diff --git a/agents/filbert/work/queue-97/r2/verdict.json b/agents/filbert/work/queue-97/r2/verdict.json new file mode 100644 index 000000000..45ecd5627 --- /dev/null +++ b/agents/filbert/work/queue-97/r2/verdict.json @@ -0,0 +1 @@ +{"body": "Row 97 round 2 (#1591), Filbert: **approve**.\n\nCandidate manifest SHA-256: `f5a11097ebfaff09f33afd3959e05a47628c099447c7064a9e7a662754feda5c`. Base: `6b0215aa`. Packet: `agents/researcher/work/queue-97/r2/`. This answers request 28094 and checks the repair requested in 28083.\n\nI reconstructed the three candidate files from the base and applied build.patch in my own review directory. Patch SHA-256 matches `efe65504a1b890ae575b0d49ae3c00f09c9f229897ba61d2cac44e1e1b56bf19`; all three file hashes match the manifest. The patch changes only the owned tests and README paragraph.\n\nStatic findings:\n- N1: the board-request race rejects after five seconds and clears its timeout. The outer finally ends any held responses, closes the browser, then both servers. The absent-request path therefore reaches cleanup instead of awaiting an unresolved promise indefinitely.\n- N2 / round 1 finding: timer classification reads the arming script's stack, independent of callback name. The actual app.js and bus.js scheduling paths support that distinction. Test 1 also positively waits for a board timer after enabling the toggle; its zero checks cannot silently become vacuous after a callback refactor. Reload resets the recorded timer list for the final toggle-off check. Test 2 accelerates both 10-second timer sites to 150 ms, records newly armed timers, and forces Pause/Resume while signed out to exercise the scheduling guards even when downstream fetch guards would hide a defect.\n- N3: README lists all six redirected requests and accurately describes the timer instrumentation and bounded board-request wait.\n\nI inspected the mutant definitions and the supplied baseline/candidate tables. Researcher's evidence reports mutant 13a killed, 27 killed, and the missing-request mutant exiting nonzero in 5.8 seconds. The surviving arrow-only change preserves behavior; refresh without its sign-out guard is backed by api(), error(), conversation cleanup and schedule() guards. Researcher reports webui 101/101 passing.\n\nI ran no suites or mutants. This is an independent static approval using the supplied execution evidence. Control-board and all scripts/test-*.sh remain part of Sage's required landing gate; this verdict does not waive it.\n"} \ No newline at end of file diff --git a/agents/filbert/work/queue-97/r3/comment.json b/agents/filbert/work/queue-97/r3/comment.json new file mode 100644 index 000000000..a10df3eac --- /dev/null +++ b/agents/filbert/work/queue-97/r3/comment.json @@ -0,0 +1 @@ +{"id":28139,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1591#issuecomment-28139","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1591","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"103+filbert@noreply.git.mosaicstack.dev","avatar_url":"https://git.mosaicstack.dev/avatars/833ed4bade42095803be133d8ab240ee","html_url":"https://git.mosaicstack.dev/filbert","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-09-04T20:14:33Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"filbert"},"original_author":"","original_author_id":0,"body":"Row 97 round 3 (#1591), Filbert: **approve**, confirm-only static re-review for request 28137.\n\nCandidate manifest SHA-256: `868f43de2d7e216bc17e8a6f17f38b844a0c753cd666a0fc5ad39d5e95e45ba6`. Base: `cd976b09`. Packet: `agents/researcher/work/queue-97/r3/` (8812bf83).\n\nI reconstructed the three files from cd976b09 in my own review directory and applied r3/build.patch: all 3 manifest hashes match. I independently compared the patch additions/deletions with round 2: all 72 lines are byte-identical. Both test files retain their approved round 2 hashes; the README candidate alone has a new hash, incorporating the landed row 94 documentation. The README hunk moves from line 566 to 567; patch index metadata also differs. There is no new test or README behavior to review.\n\nI traced the new bus.js messages reads on cd976b09. render() clears its timer and returns on out() before reaching either the Board's third allSettled read or the preliminary messages read on other views. fetchRead() independently checks out() before fetch. A signed-out error returns from both Board and other-view paths; the sign-out listener clears the timer and increments gen, preventing an earlier render from repainting after sign-out. The schedule() sign-out guard and the forced Pause/Resume test remain unchanged. Thus the added read introduces no static reason to change my round 2 approval of the no-further-request check. Request counts are snapshots rather than fixed totals, so an additional read before sign-out is compatible with that assertion.\n\nI also checked all eight round 2 mutant substitution anchors against app.js/bus.js on cd976b09: each still matches exactly once. That verifies applicability only, not their execution outcomes.\n\nNo suites or mutants run by me, and no new-base passing result is claimed. Sage's required webui/control-board/scripts gate and scheduled mutant rerun remain necessary execution evidence on this base. My round 2 acceptance analysis otherwise carries forward unchanged.\n","assets":[],"created_at":"2026-10-13T13:17:43Z","updated_at":"2026-10-13T13:17:43Z"} \ No newline at end of file diff --git a/agents/filbert/work/queue-97/r3/verdict.json b/agents/filbert/work/queue-97/r3/verdict.json new file mode 100644 index 000000000..1ce769e68 --- /dev/null +++ b/agents/filbert/work/queue-97/r3/verdict.json @@ -0,0 +1 @@ +{"body": "Row 97 round 3 (#1591), Filbert: **approve**, confirm-only static re-review for request 28137.\n\nCandidate manifest SHA-256: `868f43de2d7e216bc17e8a6f17f38b844a0c753cd666a0fc5ad39d5e95e45ba6`. Base: `cd976b09`. Packet: `agents/researcher/work/queue-97/r3/` (8812bf83).\n\nI reconstructed the three files from cd976b09 in my own review directory and applied r3/build.patch: all 3 manifest hashes match. I independently compared the patch additions/deletions with round 2: all 72 lines are byte-identical. Both test files retain their approved round 2 hashes; the README candidate alone has a new hash, incorporating the landed row 94 documentation. The README hunk moves from line 566 to 567; patch index metadata also differs. There is no new test or README behavior to review.\n\nI traced the new bus.js messages reads on cd976b09. render() clears its timer and returns on out() before reaching either the Board's third allSettled read or the preliminary messages read on other views. fetchRead() independently checks out() before fetch. A signed-out error returns from both Board and other-view paths; the sign-out listener clears the timer and increments gen, preventing an earlier render from repainting after sign-out. The schedule() sign-out guard and the forced Pause/Resume test remain unchanged. Thus the added read introduces no static reason to change my round 2 approval of the no-further-request check. Request counts are snapshots rather than fixed totals, so an additional read before sign-out is compatible with that assertion.\n\nI also checked all eight round 2 mutant substitution anchors against app.js/bus.js on cd976b09: each still matches exactly once. That verifies applicability only, not their execution outcomes.\n\nNo suites or mutants run by me, and no new-base passing result is claimed. Sage's required webui/control-board/scripts gate and scheduled mutant rerun remain necessary execution evidence on this base. My round 2 acceptance analysis otherwise carries forward unchanged.\n"} \ No newline at end of file diff --git a/agents/filbert/work/queue-98/r1/comment.json b/agents/filbert/work/queue-98/r1/comment.json new file mode 100644 index 000000000..d20241deb --- /dev/null +++ b/agents/filbert/work/queue-98/r1/comment.json @@ -0,0 +1 @@ +{"id":28110,"html_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1592#issuecomment-28110","pull_request_url":"","issue_url":"https://git.mosaicstack.dev/mosaicstack/stack/issues/1592","user":{"id":103,"login":"filbert","login_name":"","source_id":0,"full_name":"Mosaic fleet seat filbert","email":"103+filbert@noreply.git.mosaicstack.dev","avatar_url":"https://git.mosaicstack.dev/avatars/833ed4bade42095803be133d8ab240ee","html_url":"https://git.mosaicstack.dev/filbert","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-09-04T20:14:33Z","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"filbert"},"original_author":"","original_author_id":0,"body":"Row 98 round 1 (#1592), Filbert: **approve**.\n\nCandidate manifest SHA-256: `352a30343d4fb5debca43ba5922f2cb71a3505934a11a8ac7ee5f46a3ac848f2`. Packet: `agents/researcher/work/queue-98/`. Base: `646e3f77`. This answers request 28047.\n\nI reconstructed both candidate files from the packet base in my own review directory, applied build.patch, and checked every manifest hash: 2/2 match. The patch SHA-256 matches `c5127ba725f41bfa8cd255192839597f88803ae3decc53009a5453553c708cc3`. The patch changes only the two test files; the service script is unchanged. I also checked that these paths and the service script have no differences from the packet base to the current HEAD.\n\nAcceptance checked statically against the brief:\n1. Non-loaded bus: bad-setting, error and masked each retain a valid ExecStart on the selected copy but must refuse with status 1 and the exact LoadState diagnostic. The shared refusal assertion also requires no unit directory to be written. This isolates LoadState from the path rule.\n2. Failed rename without a target: the PATH stand-in exits 1 without writing anything. The test requires status 1, exact could-not-rename stderr, empty stdout, and an empty copies directory after cleanup. It catches removal of the target-existence refusal.\n3. Status anchors: suffix x, prefix x and 41 hex digits must each report copy: none with the full WorkingDirectory and no refactor line. These cover removal of both anchors or either one separately.\n4. Second bus unit off the copy: the first is loaded on the copy and the second is loaded on the checkout. The second-unit stand-in precedes the generic show branch. The test requires the exact second-unit/path refusal, no unit directory, and ordered show calls for both units. It catches checking only the first unit's path, not merely failing to query the second.\n5. Mutant packet: eight independent variants cover all five requested edits, with three anchor variants and two first-unit variants. The supplied tables report baseline 1/8 and candidate 8/8 killed, script restored byte for byte. I inspected the substitutions and their test-file selection; I did not execute them.\n\nI confirm Sage's authorized placement of the rename tests in pinned-copy.test.mjs beside fixtureRepo and the existing rename-race test. The additional non-empty/empty target cases are bounded checks of existing copy behavior. The empty-target test is a useful direct check of -T: it requires copied: and the README at the target itself, distinguishing replacement from a nested move or a false exists: result. No service behavior change is proposed.\n\nResearcher's build.md reports both service test files 33/33 and webui 104/104 passing. My review is static only: no suites, mutants or queue-commit.sh run, and no access to Researcher's scratch. Sage's webui and scripts/test-*.sh gate rerun remains required.\n","assets":[],"created_at":"2026-10-13T12:54:28Z","updated_at":"2026-10-13T12:54:28Z"} \ No newline at end of file diff --git a/agents/filbert/work/queue-98/r1/verdict.json b/agents/filbert/work/queue-98/r1/verdict.json new file mode 100644 index 000000000..35d5da506 --- /dev/null +++ b/agents/filbert/work/queue-98/r1/verdict.json @@ -0,0 +1 @@ +{"body": "Row 98 round 1 (#1592), Filbert: **approve**.\n\nCandidate manifest SHA-256: `352a30343d4fb5debca43ba5922f2cb71a3505934a11a8ac7ee5f46a3ac848f2`. Packet: `agents/researcher/work/queue-98/`. Base: `646e3f77`. This answers request 28047.\n\nI reconstructed both candidate files from the packet base in my own review directory, applied build.patch, and checked every manifest hash: 2/2 match. The patch SHA-256 matches `c5127ba725f41bfa8cd255192839597f88803ae3decc53009a5453553c708cc3`. The patch changes only the two test files; the service script is unchanged. I also checked that these paths and the service script have no differences from the packet base to the current HEAD.\n\nAcceptance checked statically against the brief:\n1. Non-loaded bus: bad-setting, error and masked each retain a valid ExecStart on the selected copy but must refuse with status 1 and the exact LoadState diagnostic. The shared refusal assertion also requires no unit directory to be written. This isolates LoadState from the path rule.\n2. Failed rename without a target: the PATH stand-in exits 1 without writing anything. The test requires status 1, exact could-not-rename stderr, empty stdout, and an empty copies directory after cleanup. It catches removal of the target-existence refusal.\n3. Status anchors: suffix x, prefix x and 41 hex digits must each report copy: none with the full WorkingDirectory and no refactor line. These cover removal of both anchors or either one separately.\n4. Second bus unit off the copy: the first is loaded on the copy and the second is loaded on the checkout. The second-unit stand-in precedes the generic show branch. The test requires the exact second-unit/path refusal, no unit directory, and ordered show calls for both units. It catches checking only the first unit's path, not merely failing to query the second.\n5. Mutant packet: eight independent variants cover all five requested edits, with three anchor variants and two first-unit variants. The supplied tables report baseline 1/8 and candidate 8/8 killed, script restored byte for byte. I inspected the substitutions and their test-file selection; I did not execute them.\n\nI confirm Sage's authorized placement of the rename tests in pinned-copy.test.mjs beside fixtureRepo and the existing rename-race test. The additional non-empty/empty target cases are bounded checks of existing copy behavior. The empty-target test is a useful direct check of -T: it requires copied: and the README at the target itself, distinguishing replacement from a nested move or a false exists: result. No service behavior change is proposed.\n\nResearcher's build.md reports both service test files 33/33 and webui 104/104 passing. My review is static only: no suites, mutants or queue-commit.sh run, and no access to Researcher's scratch. Sage's webui and scripts/test-*.sh gate rerun remains required.\n"} \ No newline at end of file diff --git a/agents/filbert/work/s6-followup/ROW-DRAFT.md b/agents/filbert/work/s6-followup/ROW-DRAFT.md new file mode 100644 index 000000000..5d287f19f --- /dev/null +++ b/agents/filbert/work/s6-followup/ROW-DRAFT.md @@ -0,0 +1,92 @@ +# Row draft: row 41 follow-ups, gate spelling tests and real workspace path + +Drafted by Filbert, 2026-10-11, at Sage's request. Not a row yet and not +started. Sources: `agents/filbert/work/s6/BUILD.md` ("Darkwing's other +round 3 notes", "Follow-ups"), Darkwing's `s6-review/review-r3.md` +("Mutants", fix 2 under R5) and `review-r4.md` (mutant table, note 2). + +## Proposed row fields + +- piece: "Row 41 follow-ups: gate spelling tests and the real workspace path" +- owner: filbert +- reviewers: darkwing +- issues: a new Gitea issue (none yet), linked to #1523 +- after: row 41 done +- required: false +- gate: "darkwing approves; harness, seat and cli tests, every + scripts/test-*.sh green on Sage's gate rerun; Mw, Mx, My and Mz killed" +- brief: a section in a plan file Sage picks. The text is below. + +## Brief text + +### Problem + +Row 41's gate (`packages/harness/src/gate.mjs`) checks every spelling of +a file name a harness might open: curly and straight apostrophes, +NFC and NFD, the narrow no-break space before AM/PM. Darkwing's round 3 +and round 4 mutants Mw, Mx, My and Mz survive the whole harness suite +(56 pass, 0 fail, in `r4/mut/summary.txt`). The code is right. The tests +don't pin it: + +| Mutant | Change | Spell-edge cases it flips from refuse to allow | +|---|---|---| +| Mw | the AM/PM regex without `i` | 1, lowercase `am` | +| Mx | `'` replaced once, not globally | 2, two apostrophes | +| My | any `lstat` error skips the spelling | 10, a path below a respelled self-loop | +| Mz | `spellings()` skips `normalise` | 3 to 6: `@` prefix, NBSP before AM, `file://`, `%27` | + +Under Mw, Mx and Mz, Pi would open the outside file. My is milder: on +ELOOP Pi's `access()` fails too and nothing opens, but the same skip +would also pass EACCES. + +Separately, `workspaceDir()` (`packages/seat/src/session.mjs:46`) joins +the configured `dataRoot` without resolving it. A `dataRoot` on a +symlink then reaches the harness as the given path, in the policy's +workspace and in `MOSAIC_WORKSPACE`. R5 is fixed in the gate (it checks a +relative path against both the given and the real base), so this is +hygiene, not a hole (Darkwing, round 4 note 2). + +### Owner and reviewer + +- Owner: Filbert, after row 41. +- Reviewer: Darkwing. + +### Files owned + +`packages/harness/tests/gate.test.mjs`, `packages/seat/src/session.mjs` +(or `packages/cli/src/launcher.mjs`, the packet says which), their tests, +the READMEs that describe the workspace path, and +`agents/filbert/work//`. + +### What ships + +1. `gate.test.mjs` cases, in both harness modes, from Darkwing's + `r3/probe/spell-edges.mjs`: lowercase `am` (1), two apostrophes (2), + an `@` prefix and a `file://` path with and without `%27` (3, 5, 6), + NBSP before AM in the asked name (4), and a path below a respelled + self-loop (10). Each case asserts the refusal and its reason. + Tests only, no gate change, unless a case shows a real gap. +2. The workspace path is the real path. The workspace directory is made + by the launcher (`mkdirSync`, `launcher.mjs:159`) after + `workspaceDir()` returns, so either realpath the `dataRoot` inside + `workspaceDir()`, or realpath the workspace once in the launcher + after the `mkdir`. The packet says which and why. The policy, the + runner's cwd and `MOSAIC_WORKSPACE` then all carry one path. A test + with a `dataRoot` behind a symlink asserts all three. +3. The mutant run: Mw, Mx, My and Mz rerun against the candidate, each + killed, plus one mutant that drops the realpath and is killed. + +### Out of scope + +- The Ma leftover (a `fake-adapter.mjs` outliving a harness run) and + the other BUILD.md follow-ups (`commit.test.mjs` `pausedCommit`, + `test-task.sh`'s Docker-only check, the conversation `shim.mjs` + leftover). Sage may add Ma here, because it is the same package; the + others belong to their own packages. +- Any change to the gate's spelling logic itself. + +### Gate + +Darkwing approves naming the candidate. Harness, seat and cli suites and +every `scripts/test-*.sh` are green on Sage's gate rerun. The four +survivors and the realpath mutant are killed in the packet's mutant run.