From 2b052b24d303dc0250a99960d18a257f07d3d6cf Mon Sep 17 00:00:00 2001 From: Kyle Isom Date: Sat, 26 Sep 2026 01:29:46 -0700 Subject: [PATCH] T44: test paths removed by guards; the checklist compares /tmp around a gate run Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/implementer-lessons.md | 1 + docs/plans/CHECKLIST.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/docs/implementer-lessons.md b/docs/implementer-lessons.md index 607ab9d..ea0d214 100644 --- a/docs/implementer-lessons.md +++ b/docs/implementer-lessons.md @@ -81,6 +81,7 @@ How it is used: | T41 | Before hand-over, walk each given test by hand against the task's own rules. A replay of the reference proves the tests can pass; it cannot show that a test contradicts the task, because the reference was written to pass the test. | Not seen here yet; from the combined Ornith guidance (`~/projects/ornith/GUIDANCE.md` §5): crossbar's given tests pinned event positions and a tie-break no implementation following the task could meet. Listed in `docs/plans/CHECKLIST.md`. | | T42 | Before hand-over, grep every earlier given file and fixture for anything the task changes (strings, sentences, JSON shapes, counts). | T19 is one case of it (M3a `strict.rs`); crossbar had five such breaks (Ornith guidance §5). M5a task 22 handled it by keeping `edit.rs-task06` and `serve.rs-task10`. | | T43 | Run the gate's own checks on the given files themselves (`cargo fmt --check`, the line limit, clippy on test targets) before hand-over. A given file that fails the gate stalls the run, and the implementer may not edit it. | M4a task 16: a given test copied into the plan before `cargo fmt` came back reformatted (T29); crossbar stalled on given files that failed its gate (Ornith guidance §5). | +| T44 | Every path a given test creates (directory, socket, file) is removed by a guard that deletes it on drop, never by a line at the end of the test, which a failing test skips. A struct that holds a test's home declares it last, since fields drop in order, and a guard for a running server waits (with a limit) for it to stop before the home goes. Check before hand-over: run the gate and compare `/tmp` before and after. | 2026-09-26: about 10,000 leftovers in titan's `/tmp` from `loopd`, `bxctl`, `inferproxy`, `brokerd` and `toolkit` tests that never removed their paths, plus two `gatewayd` races (a `Running` that only signalled stop, and a home declared first). Fixed in `a15c428`; the gate now leaves nothing. | ## What worked and should be kept diff --git a/docs/plans/CHECKLIST.md b/docs/plans/CHECKLIST.md index fbc9f8f..ad20a8a 100644 --- a/docs/plans/CHECKLIST.md +++ b/docs/plans/CHECKLIST.md @@ -36,6 +36,8 @@ log. waiting. Stress any test that ever flaked under load. - [ ] No file the implementer reads holds the model's chat-template tags whole (T33): grep the plan, the given files and the skeletons for them. +- [ ] Every path a given test creates is removed by a guard, and a test's home outlives what + writes into it (T44): run the gate and compare `/tmp` before and after; nothing new. ## The task text