I2787 — Build nikdy nedovolí, aby artefakty crate ve sdíleném build adresáři zaplnily disk
Omezit debug/deps sdíleného build adresáře stejně, jako I2713 omezuje debug/incremental: před spuštěním omezeného buildu odstranit vlastní testovací binárky a knihovny crate (majordomus_cli-*, libmajordomus_cli-* a každou binárku tests/*.rs) těch generací, které žádný živý strom nebuilduje a které jsou starší než deklarované stáří; nikdy soubor, který drží otevřený běžící proces, nikdy cizí závislostní artefakty jiného crate, a na stderr uvést, co bylo uvolněno.
HOTOVO vlna 1 · p0 · profil implementation · běží samostatně
Součást development-runtime — The runtime has a development surface.
Cíl
Omezit debug/deps sdíleného build adresáře stejně, jako I2713 omezuje debug/incremental: před spuštěním omezeného buildu odstranit vlastní testovací binárky a knihovny crate (majordomus_cli-*, libmajordomus_cli-* a každou binárku tests/*.rs) těch generací, které žádný živý strom nebuilduje a které jsou starší než deklarované stáří; nikdy soubor, který drží otevřený běžící proces, nikdy cizí závislostní artefakty jiného crate, a na stderr uvést, co bylo uvolněno.
Proč
2026-10-16 ~22:50Z dosáhl sdílený Mac 238 MiB volného místa a build každé relace selhal s ENOSPC. Nečinné inkrementální relace (48 GiB, předmět I2713) byly odstraněny ručně; přistávací role poté smazala 43 GiB testovacích artefaktů majordomus_cli-* starších než 3 h z build-shared/majordomus/debug/deps, kde zůstalo 41 GiB a 11026 souborů majordomus_cli-*: každá generace worktree zanechá jeden testovací binár crate a knihovnu a nic je neodstraní kromě cargo clean, které by smazalo build každého živého stromu.
Aktuální stav
lib/rust_bin.sh odmítne build pod prahem volného místa; I2713 (#1279) maže nečinné inkrementální relace; nic nemaže debug/deps.
Cílový stav
mj_cargo_bounded maže zastaralé artefakty crate v debug/deps vedle inkrementálního úklidu, se stejnými predikáty stáří a živosti položenými znovu u každé cesty před odstraněním, a případ ověřuje, že živý nebo nedávný artefakt přežije a zastaralý ne.
Rozsah
- lib/rust_bin.sh
- test/cases
- docs/WORKTREES.md
Závislosti
Kritéria přijetí
- Zastaralý artefakt crate v debug/deps starší než deklarované stáří, který nedrží otevřený žádný proces, se před omezeným buildem odstraní a uvede na stderr
- Artefakt, který drží otevřený běžící proces, nedávný artefakt i artefakt crate závislosti všechny přežijí
- Volné místo zůstává nad deklarovanou spodní mezí po celý den souběžných relací na sdíleném stroji
Validace
- majordomus plan validate
Požadované důkazy
- case_deps_pruned
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| case_deps_pruned | test | bash test/run.sh 3196_stale_crate_artifacts_are_pruned_under_cargos_lock | 3 passed, 0 failed, 0 skipped on master dd4c0a87cba (with 1060 and 2988); delivered by PR #1349 (36de9d12699, f6d28ada933), not by the plan commit cc536298674 | dd4c0a8 |
Časová osa
- zahájeno
- 2026-10-19T15:30:54Z
- ověřeno
- —
- dokončeno
- 2026-10-19T15:31:11Z
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/I2787.yaml. Přečtěte jej zpět pomocí majordomus plan show I2787.