fc9c746e
docs: the e2e runner, its register, and what running a group alone found
a73x 2026-08-26 19:50
Commit message
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. | ||