I2713 — Build nikdy nenechá nečinné inkrementální relace zaplnit disk
Zařídit, aby vlastní vstupní body buildu repozitáře udržovaly inkrementální cache adresáře buildu omezenou, aby souběžné relace stavějící na jednom stroji nemohly vyčerpat disk.
HOTOVO vlna 0 · p0 · profil implementation · bezpečné souběžně
Součást development-runtime — The runtime has a development surface.
Cíl
Zařídit, aby vlastní vstupní body buildu repozitáře udržovaly inkrementální cache adresáře buildu omezenou, aby souběžné relace stavějící na jednom stroji nemohly vyčerpat disk.
Proč
2026-10-14 16:20-17:57Z: volné místo na sdíleném Macu kleslo ze 71 GiB na 4 GiB; derive odmítl běžet (\"4935MB free, floor 5120MB\") a řetězec každé relace se zastavil. Jeden soukromý build adresář vyrostl z 21 na 47 GiB, z toho 24 GiB debug/incremental: 574 adresářů relací, z nichž jediný byl živý. Ruční smazání nečinných vrátilo 16 GiB, zatímco kompilace stále běžela. Vlastník: \"tohle se nesmi stavat\".
Aktuální stav
omezený build z lib/rust_bin.sh odmítne pod hranicí volného místa, ale nikdy nic nepřebírá zpět; cargo drží každou dokončenou inkrementální relaci až do clean.
Cílový stav
Než začne build (mj_cargo_bounded a každý skript, který staví přes něj), odstraní se nečinné inkrementální adresáře relací jeho build adresáře starší než deklarované stáří (nikdy ten končící na -working, nikdy build adresář jiného stromu), co se uvolnilo, se vypíše na stderr, a když je volné místo stále pod deklarovanou hranicí, build odmítne s vyjmenováním největších build adresářů.
Rozsah
- lib/rust_bin.sh
- scripts/derive
- docs/DEVELOPMENT_RUNTIME.md
- .ai/repo/policy.yaml
- test/cases
Mimo rozsah
- Mazání build výstupu jiného worktree nebo jakéhokoli adresáře target
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
Kritéria přijetí
- Build uklidí nečinné inkrementální relace vlastního adresáře buildu a řekne, kolik uvolnil
- Živá relace (-working) a jiné adresáře sestavení se nikdy nedotýkají
- Pod hranicí po pročištění odmítnutí jmenuje největší adresáře sestavení
Validace
- bin/majordomus plan validate
Požadované důkazy
- idle_sessions_are_pruned_case
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| idle_sessions_are_pruned_case | test | bash test/run.sh 3080_idle_incremental_sessions_are_pruned 3196_stale_crate_artifacts_are_pruned_under_cargos_lock | ok 3080, ok 3196 (2 passed); 3196 fails with the lock or the process check removed | ed7a000 |
Časová osa
- zahájeno
- 2026-10-17T09:23:02Z
- ověřeno
- 2026-10-17T09:23:19Z
- dokončeno
- 2026-10-19T15:30:44Z
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.
Kanonický záznam: .ai/repo/project/issues/I2713.yaml. Přečtěte ho zpět pomocí majordomus plan show I2713.