a73x

fc9c746e

docs: the e2e runner, its register, and what running a group alone found

a73x   2026-08-26 19:50

Commit message
docs: the e2e runner, its register, and what running a group alone found

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

docs/decisions.md
Old New
@@ -7045,3 +7045,19 @@ was reported instead of the refusal. Rare untraced, certain under ptrace
7045 (scenario 75 stopped there every run). Fixed at one owner: a peer-closed 7045 (scenario 75 stopped there every run). Fixed at one owner: a peer-closed
7046 send drains the read side through `awaitFrame`, so the snapshot rule that 7046 send drains the read side through `awaitFrame`, so the snapshot rule that
7047 tells a refusal from an ending is not copied. 7047 tells a refusal from an ending is not copied.
7048
7049 **e2e.sh is a runner, a library and fourteen group files.** 9,678 lines → a
7050 179-line `test/e2e.sh` (arguments, tool checks, group order, `E2E_ONLY`, the
7051 count pin), `test/e2e_lib.sh`, and `test/e2e_NN_<group>.sh` — flat, because
7052 the shell gate globs `test/` non-recursively and a subdirectory would need a
7053 build.zig edit the gate's own comment forbids. The trap reads a register
7054 (`defer_kill`/`defer_sock`/`defer_rm`, `start_daemon` registers what it
7055 makes) instead of four hand-kept lists; captures are NOT registered — every
7056 one is spelled from `$OUT` and the sweep already walks that set by glob, and
7057 registering ~350 of them by hand would have rebuilt the 102-file escape. The
7058 trap kills with `softkill`, not `hardkill`: a SIGKILLed daemon writes no leak
7059 verdict. `E2E_ONLY=<group>` runs one file; two groups (03_side, 11_select)
7060 share a daemon with an earlier group and are refused by name. Running groups
7061 alone found two defects the full suite could not: the leak sweep's
7062 vacuous-green guard was keyed to daemon one's capture, and two socket names
7063 were declared in the wrong group.