I3834 — A case run removes its own scratch dir however it ends: passed, failed, timed out or interrupted
Make test/run.sh remove each case's $TMPDIR/mj-test.* directory and its skip mark when the case passes, fails, times out, or when the runner itself is interrupted or terminated while the case runs (an EXIT, INT, TERM and HUP trap that first stops the case's process group), and keep it only when MJ_TEST_KEEP=1 asks, naming the kept path.
PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3834 bude přijato.
Cíl
Make test/run.sh remove each case's $TMPDIR/mj-test.* directory and its skip mark when the case passes, fails, times out, or when the runner itself is interrupted or terminated while the case runs (an EXIT, INT, TERM and HUP trap that first stops the case's process group), and keep it only when MJ_TEST_KEEP=1 asks, naming the kept path.
Proč
Orphaned mj-test.* directories were the machine's steady disk drain: 13 GiB of them on 2026-10-21, from runs a pre-push hook or a session had stopped, the largest 3.8 GiB each. run_case removed the directory only on its own normal paths, so a runner stopped between a case's start and its end left the whole fixture behind.
Aktuální stav
test/run.sh run_case calls rm -rf \"$T\" \"$mark\" after the case returns and after a timeout; no trap covers an interrupted runner; there is no keep flag.
Cílový stav
No case run leaves its scratch dir unless MJ_TEST_KEEP=1 is set, and then the runner prints the kept path.
Rozsah
- test/run.sh
- test/cases/3834_a_case_run_removes_its_own_dir.sh
Mimo rozsah
- Sweeping orphans older runs already left (I3832, I3833)
- A runner killed with SIGKILL, which no trap can see
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- A passing case leaves no mj-test.* directory in TMPDIR
- A failing case leaves none
- A runner terminated with TERM while its case runs exits, and leaves none, and the case's process group is stopped
- MJ_TEST_KEEP=1 keeps exactly one directory and the runner prints its path
- Against the runner of master 573df967bb5 the interrupted run leaves its directory, so the case fails there
Validace
- bash test/run.sh 3834_a_case_run_removes_its_own_dir 123_case_bound 413_a_skipped_case_is_not_a_proof
- bin/majordomus plan validate
Požadované důkazy
- a_case_run_removes_its_own_dir_test
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3834.yaml. Read it back with majordomus plan show I3834.