darkwing: row 92 round 2 rebased onto ac37cd17, candidate 8bf4141c (#1586)

Row 89 landed on packages/harness/README.md. The patch applies cleanly;
gate 14/14 green and 34/34 mutants killed on the new base.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 17:13:47 -05:00
co-authored by Claude Opus 5.5
parent e4ef608f7d
commit a4fa775a51
6 changed files with 62 additions and 50 deletions
+29 -17
View File
@@ -5,11 +5,19 @@ manifest `bc132570…`). Round 1 verdicts: Dewey approved with notes N1 to
N5 (comment 27942, rev 771). Filbert asked for six changes (comment 27951, N5 (comment 27942, rev 771). Filbert asked for six changes (comment 27951,
rev 772). rev 772).
Base `af01465c`, as in round 1. No commit from the base to the packet's Base `ac37cd17`. Round 1 was built on `af01465c`. Row 89 landed at
commit touches the 13 paths. `build.patch` is `ce104b27` while this packet was going out, and it edits
`git diff --cached --binary af01465c` of the same 13 paths. Apply it with `packages/harness/README.md`, one of the 13 paths (Dewey's N5). So I
`git apply --index` to a detached worktree of the base, and applied the patch to a detached worktree of `ac37cd17` (it applied
`sha256sum -c candidate-manifest.sha256` then gives 13/13 OK. cleanly), reran the gate and the mutants there, and rebuilt the patch and
manifest. Commit `4643911a` holds the same round 2 on `af01465c`; this
packet replaces it. Only the harness README's digest differs between the
two manifests. Its added and removed lines are the same 57 either way, and row 89's
lines in that file sit outside them.
`build.patch` is `git diff --cached --binary ac37cd17` of the 13 paths.
Apply it with `git apply --index` to a detached worktree of `ac37cd17`,
and `sha256sum -c candidate-manifest.sha256` then gives 13/13 OK.
## What changed since round 1 ## What changed since round 1
@@ -79,9 +87,8 @@ Five files moved:
lists the host's Unix sockets by name, path ones included, and a name lists the host's Unix sockets by name, path ones included, and a name
gives no access to a path socket the mounts hide. gives no access to a path socket the mounts hide.
- N4 (seccomp, `--disable-userns`) stays outside this row, as Dewey said. - N4 (seccomp, `--disable-userns`) stays outside this row, as Dewey said.
- N5. Row 89 still hasn't landed. Whichever of 89 and 92 lands second - N5. Row 89 landed first, so this round is rebased onto it (above), and
reruns its gate on the tree it lands on, and its the gate below ran on that tree.
`packages/harness/README.md` digest will move.
## Probes ## Probes
@@ -103,9 +110,11 @@ ours.
`mutants.sh` here: round 1's 26 unchanged, then 8 more. It ran with a `mutants.sh` here: round 1's 26 unchanged, then 8 more. It ran with a
copy of `agents/darkwing/work/queue-59-review/r1/mut.mjs` (sha256 copy of `agents/darkwing/work/queue-59-review/r1/mut.mjs` (sha256
`a1ed6bca…`, round 1's helper) from 21:53:34Z to 21:58:15Z, with no other `a1ed6bca…`, round 1's helper). It ran twice, with no other seat's gate or
seat's gate or mutant run going (`mutants.txt`). **34 of 34 killed.** mutant run going: on `af01465c` from 21:53:34Z to 21:58:15Z, and on
Every source file was restored and still matches the manifest. `ac37cd17` from 22:08:34Z to 22:12:57Z (`mutants.txt` is the second).
**34 of 34 killed** both times, each by the same test; only the timings
differ. Every source file was restored and still matches the manifest.
| Mutant | Filbert's | Killed by | | Mutant | Filbert's | Killed by |
|---|---|---| |---|---|---|
@@ -130,17 +139,20 @@ Code only` were already killed in their run.
## Gate ## Gate
`gate.sh`, run sequentially in `~/darkwing-scratch/r92/wt` (the base plus `gate.sh`, run sequentially in `~/darkwing-scratch/r92/wt3` (`ac37cd17`
this patch, `node_modules` symlinked), 21:58:30Z to 22:01:56Z, after a plus this patch, `node_modules` symlinked), 22:05:10Z to 22:08:27Z, after
check that no other seat's gate or mutant run was going a check that no other seat's gate or mutant run was going
(`gate-summary.txt`). All 14 suites exited 0, 0 skipped: (`gate-summary.txt`). All 14 suites exited 0, 0 skipped:
- node: seat 33, cli 120 (round 1's 118 plus the two launcher tests), - node: seat 33, cli 120 (round 1's 118 plus the two launcher tests),
harness 59, bus 102, webui 84; harness 65, bus 108, webui 86 (row 89 and the rows before it added
harness, bus and webui tests since `af01465c`);
- scripts: auth 15, conductor 17, config 24, discord 66, - scripts: auth 15, conductor 17, config 24, discord 66,
extension-package 18, foundation 44, queue 27, release 14, task 26 extension-package 18, foundation 44, queue 27, release 14, task 26
(`DOCKER_HOST` at a dead socket). (`DOCKER_HOST` at a dead socket).
The seat count doesn't move because the five new rows run inside the two The seat count doesn't move because the five new rows run inside the two
existing sandbox tests. test-release left an empty `wt_default` network, existing sandbox tests. The run on `af01465c` (21:58:30Z to 22:01:56Z)
created at 22:01:44Z, the second test-release started; I removed it. gave the same results with harness 59, bus 102 and webui 84. Each
test-release left an empty `<dir>_default` network of mine, and I removed
both.
+3 -3
View File
@@ -502,10 +502,10 @@ index 15b36fe0..f8013726 100644
const [line] = await once(createInterface({ input: old.stdout }), "line"); const [line] = await once(createInterface({ input: old.stdout }), "line");
const first = JSON.parse(line); const first = JSON.parse(line);
diff --git a/packages/harness/README.md b/packages/harness/README.md diff --git a/packages/harness/README.md b/packages/harness/README.md
index 7598a573..f7516753 100644 index 1d1d7c5b..7c040c66 100644
--- a/packages/harness/README.md --- a/packages/harness/README.md
+++ b/packages/harness/README.md +++ b/packages/harness/README.md
@@ -159,28 +159,41 @@ Each turn's stderr goes to `turns/NNNN.stderr` (0600) in the run directory. @@ -176,28 +176,41 @@ Each turn's stderr goes to `turns/NNNN.stderr` (0600) in the run directory.
These are limits, not bugs, and nothing in this package claims otherwise. These are limits, not bugs, and nothing in this package claims otherwise.
@@ -567,7 +567,7 @@ index 7598a573..f7516753 100644
- **If the host dies,** sessions keep running until their broker polls fail - **If the host dies,** sessions keep running until their broker polls fail
`brokerRetries` times, then exit 23. The next host kills what still runs `brokerRetries` times, then exit 23. The next host kills what still runs
and ends those launches as `host-lost` (`packages/cli/README.md`, and ends those launches as `host-lost` (`packages/cli/README.md`,
@@ -200,7 +213,7 @@ These are limits, not bugs, and nothing in this package claims otherwise. @@ -224,7 +237,7 @@ These are limits, not bugs, and nothing in this package claims otherwise.
another process of the same user) isn't seen. That is the same reach as another process of the same user) isn't seen. That is the same reach as
`bash` itself. `bash` itself.
- **The system prompt is in argv** for both adapters, so the same UID can - **The system prompt is in argv** for both adapters, so the same UID can
@@ -4,7 +4,7 @@ d19dca70349e45ad3607c6fccd00afc9b1904b4df79e1fe107f2fd926981fd16 packages/cli/s
43a7f4b783a6d16edf5c2762e9fd657e0d14a0e2af2581814b8afe0df2daeac9 packages/cli/tests/fixtures/launch-host.mjs 43a7f4b783a6d16edf5c2762e9fd657e0d14a0e2af2581814b8afe0df2daeac9 packages/cli/tests/fixtures/launch-host.mjs
7e92ecf7bbcfd09f7a4cf6f3afac3646e198115d95ddd24dfdd5dd8bb53ab411 packages/cli/tests/host.test.mjs 7e92ecf7bbcfd09f7a4cf6f3afac3646e198115d95ddd24dfdd5dd8bb53ab411 packages/cli/tests/host.test.mjs
057bba967b7034e52790dde5ab5c11d4c994625a07a55e0ff2b55a01ceb44e2f packages/cli/tests/launcher.test.mjs 057bba967b7034e52790dde5ab5c11d4c994625a07a55e0ff2b55a01ceb44e2f packages/cli/tests/launcher.test.mjs
ec09680cf3e7d6514f28f745302a08f0473f27dd06c699365573e38593039430 packages/harness/README.md 629a5a41d257002a3ecc2d8962b3d73d8f4bdba7f32f78825a8146b83cc6b484 packages/harness/README.md
bfb7ca89754e36f9f467b7ea1bad03b38ea34d5f9bf1e49000ec2643bad8c811 packages/harness/src/gate.mjs bfb7ca89754e36f9f467b7ea1bad03b38ea34d5f9bf1e49000ec2643bad8c811 packages/harness/src/gate.mjs
f5e0126f8e68b347785e353c33f07760537be9b5de8feca1ccc868aba2db20e8 packages/seat/README.md f5e0126f8e68b347785e353c33f07760537be9b5de8feca1ccc868aba2db20e8 packages/seat/README.md
39702ce147a1d1e7fecaf7a57e34041728ad0412f2a841b925698ed00527ca9b packages/seat/src/sandbox.mjs 39702ce147a1d1e7fecaf7a57e34041728ad0412f2a841b925698ed00527ca9b packages/seat/src/sandbox.mjs
@@ -1,16 +1,16 @@
start 2026-10-12T21:58:30Z base af01465c start 2026-10-12T22:05:10Z base ac37cd17
seat rc=0 21:58:30-21:58:34 ℹ pass 33 ℹ fail 0 ℹ skipped 0 0 marks seat rc=0 22:05:10-22:05:14 ℹ pass 33 ℹ fail 0 ℹ skipped 0 0 marks
cli rc=0 21:58:34-21:58:51 ℹ pass 120 ℹ fail 0 ℹ skipped 0 0 marks cli rc=0 22:05:14-22:05:30 ℹ pass 120 ℹ fail 0 ℹ skipped 0 0 marks
harness rc=0 21:58:51-21:59:02 ℹ pass 59 ℹ fail 0 ℹ skipped 0 0 marks harness rc=0 22:05:30-22:05:41 ℹ pass 65 ℹ fail 0 ℹ skipped 0 0 marks
bus rc=0 21:59:02-21:59:05 ℹ pass 102 ℹ fail 0 ℹ skipped 0 0 marks bus rc=0 22:05:41-22:05:43 ℹ pass 108 ℹ fail 0 ℹ skipped 0 0 marks
webui rc=0 21:59:05-22:00:01 ℹ pass 84 ℹ fail 0 ℹ skipped 0 0 marks webui rc=0 22:05:43-22:06:41 ℹ pass 86 ℹ fail 0 ℹ skipped 0 0 marks
test-auth rc=0 22:00:01-22:00:02 selftest: 15 passed, 0 failed test-auth rc=0 22:06:41-22:06:41 selftest: 15 passed, 0 failed
test-conductor rc=0 22:00:02-22:00:07 selftest: 17 passed, 0 failed test-conductor rc=0 22:06:41-22:06:47 selftest: 17 passed, 0 failed
test-config rc=0 22:00:07-22:00:09 selftest: 24 passed, 0 failed test-config rc=0 22:06:47-22:06:48 selftest: 24 passed, 0 failed
test-discord rc=0 22:00:09-22:00:17 discord suite: 66 passed, 0 failed test-discord rc=0 22:06:48-22:06:56 discord suite: 66 passed, 0 failed
test-extension-package rc=0 22:00:17-22:00:18 extension package selftest: 18 passed, 0 failed test-extension-package rc=0 22:06:56-22:06:57 extension package selftest: 18 passed, 0 failed
test-foundation rc=0 22:00:18-22:01:02 selftest: 44 passed, 0 failed test-foundation rc=0 22:06:57-22:07:40 selftest: 44 passed, 0 failed
test-queue rc=0 22:01:02-22:01:44 queue suite: 27 passed, 0 failed test-queue rc=0 22:07:40-22:08:14 queue suite: 27 passed, 0 failed
test-release rc=0 22:01:44-22:01:54 selftest: 14 passed, 0 failed test-release rc=0 22:08:14-22:08:25 selftest: 14 passed, 0 failed
test-task rc=0 22:01:54-22:01:56 selftest: 26 passed, 0 failed test-task rc=0 22:08:25-22:08:27 selftest: 26 passed, 0 failed
end 2026-10-12T22:01:56Z end 2026-10-12T22:08:27Z
+3 -3
View File
@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Row 92 round 2 gate: seat, cli, harness, bus and webui (each package's own test command, from its # Row 92 round 2 gate, rebased onto ac37cd17: seat, cli, harness, bus and webui (each package's own test command, from its
# directory), then every scripts/test-*.sh, sequential, full output kept. # directory), then every scripts/test-*.sh, sequential, full output kept.
cd ~/darkwing-scratch/r92/wt || exit 2 cd ~/darkwing-scratch/r92/wt3 || exit 2
W=$PWD W=$PWD
export TMPDIR=~/darkwing-scratch/r92/tmp export TMPDIR=~/darkwing-scratch/r92/tmp
O=~/darkwing-scratch/r92/gate2 O=~/darkwing-scratch/r92/gate3
for p in seat cli harness bus webui; do for p in seat cli harness bus webui; do
s=$(date -u +%T) s=$(date -u +%T)
case $p in seat|webui) a=(tests/);; *) a=(tests/*.test.mjs);; esac case $p in seat|webui) a=(tests/);; *) a=(tests/*.test.mjs);; esac
+10 -10
View File
@@ -6,29 +6,29 @@ session-json-writable: killed (ℹ fail 3, ✖ every bind says why; the bundle a
no-private-tmp: killed (ℹ fail 3, ✖ every bind says why; the bundle and session file stay read-only over the run directory () no-private-tmp: killed (ℹ fail 3, ✖ every bind says why; the bundle and session file stay read-only over the run directory ()
bind-checkout: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) bind-checkout: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
node-modules-always: killed (ℹ fail 1, ✖ every bind says why; the bundle and session file stay read-only over the run directory () node-modules-always: killed (ℹ fail 1, ✖ every bind says why; the bundle and session file stay read-only over the run directory ()
runner-file-missing: killed (ℹ fail 3, ✖ RUNNER_FILES is exactly what the runner and the harness sources it starts import (2.4001) runner-file-missing: killed (ℹ fail 3, ✖ RUNNER_FILES is exactly what the runner and the harness sources it starts import (2.0871)
no-remount-ro: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) no-remount-ro: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
host-home: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) host-home: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
no-pid-namespace: killed (ℹ fail 4, ✖ bus start --pm: the PM runs under its own PID namespace, registered, with a manifest (22) no-pid-namespace: killed (ℹ fail 4, ✖ bus start --pm: the PM runs under its own PID namespace, registered, with a manifest (23)
die-with-parent: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th) die-with-parent: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th)
no-pdeathsig: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th) no-pdeathsig: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th)
exit-code-not-mapped: killed (ℹ fail 2, ✖ a runner killed from the host ends its launch as killed, not failed (255.196062ms)) exit-code-not-mapped: killed (ℹ fail 2, ✖ a runner killed from the host ends its launch as killed, not failed (256.531254ms))
recover-matches-unshare: killed (ℹ fail 1, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th) recover-matches-unshare: killed (ℹ fail 1, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th)
no-sandbox-check: killed (ℹ fail 1, ✖ a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is ) no-sandbox-check: killed (ℹ fail 1, ✖ a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is )
probe-always-ok: killed (ℹ fail 2, ✖ a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is ) probe-always-ok: killed (ℹ fail 2, ✖ a missing or failing bwrap refuses sandbox-unavailable before anything starts; there is )
no-credential-check: killed (ℹ fail 1, ✖ a Claude Code launch with no session credential refuses before it starts (191.987684ms)) no-credential-check: killed (ℹ fail 1, ✖ a Claude Code launch with no session credential refuses before it starts (188.244725ms))
proxy-key-alone: killed (ℹ fail 2, ✖ a Claude Code launch with no session credential refuses before it starts (201.143048ms)) proxy-key-alone: killed (ℹ fail 2, ✖ a Claude Code launch with no session credential refuses before it starts (243.644415ms))
proxy-key-ignored: killed (ℹ fail 3, ✖ a Claude Code launch with no session credential refuses before it starts (132.669208ms)) proxy-key-ignored: killed (ℹ fail 3, ✖ a Claude Code launch with no session credential refuses before it starts (116.379362ms))
any-variable-will-do: killed (ℹ fail 2, ✖ a Claude Code launch with no session credential refuses before it starts (196.260373ms)) any-variable-will-do: killed (ℹ fail 2, ✖ a Claude Code launch with no session credential refuses before it starts (201.875386ms))
claude-bin-not-bound: killed (ℹ fail 1, ✖ a real Claude Code coder's shell can't read a stand-in secret or anything else its sandb) claude-bin-not-bound: killed (ℹ fail 1, ✖ a real Claude Code coder's shell can't read a stand-in secret or anything else its sandb)
launch-socket-always: killed (ℹ fail 1, ✖ the PM launches a coder through its launch tool; the coder answers; refusals name their ) launch-socket-always: killed (ℹ fail 1, ✖ the PM launches a coder through its launch tool; the coder answers; refusals name their )
unit-no-envfile: killed (ℹ fail 1, ✖ bus-service.sh renders the unit and installs it into a given directory (6.614589ms)) unit-no-envfile: killed (ℹ fail 1, ✖ bus-service.sh renders the unit and installs it into a given directory (6.908758ms))
unit-envfile-required: killed (ℹ fail 1, ✖ bus-service.sh renders the unit and installs it into a given directory (7.086427ms)) unit-envfile-required: killed (ℹ fail 1, ✖ bus-service.sh renders the unit and installs it into a given directory (7.149562ms))
no-ipc-namespace: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) no-ipc-namespace: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
host-proc: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) host-proc: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
host-dev: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) host-dev: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
pi-no-node-modules: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) pi-no-node-modules: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)
launcher-raw-exit: killed (ℹ fail 1, ✖ a runner killed from the host ends its launch as killed, not failed (288.485973ms)) launcher-raw-exit: killed (ℹ fail 1, ✖ a runner killed from the host ends its launch as killed, not failed (260.993464ms))
credential-every-harness: killed (ℹ fail 1, ✖ a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables ) credential-every-harness: killed (ℹ fail 1, ✖ a pi launch needs no session credential: pi logs in through its own ENV_ALLOW variables )
pdeathsig-term: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th) pdeathsig-term: killed (ℹ fail 2, ✖ a host that died hard leaves its sessions to the next host, which kills them and ends th)
workspace-read-only: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th) workspace-read-only: killed (ℹ fail 2, ✖ a confined session's shell reaches its own workspace and run directory and nothing of th)