Zdůvodnění
Každý worktree tohoto repozitáře kompiloval tytéž závislosti do vlastního target/, po 2,45 GiB (ADR 0055), a disk, který tyto kopie zabírají, zastavil 2026-10-11 build. Zřejmá úspora — jedno sdílené CARGO_TARGET_DIR — sdílí i hotový spustitelný soubor, takže build v jednom worktree nahradí binárku, kterou jiný právě spouští nebo si půjčuje. To je incident, který project.reclaim-only-what-you-own zaznamenává, vyrobený konstrukcí.
Cargo obojí drží odděleně: build.build-dir drží mezivýsledky, build.target-dir hotové artefakty. Sdílení prvního a ne druhého dává úsporu bez sdíleného spustitelného souboru (ADR 0139).
Požadované chování
.cargo/config.toml nastavuje build.build-dir a nenastavuje build.target-dir. Adresář je pod domovem cargo, takže je to jedna cesta v každé hloubce worktree. Commitnutý target-dir nebo CARGO_TARGET_DIR, do kterého buildí dva checkouty, je opět sdílený spustitelný soubor. Spuštění spustitelného souboru jiného checkoutu přes MAJORDOMUS_BIN zůstává povoleno; zakázáno je buildit do jeho adresáře.
Sdílený adresář je nahromadění, a proto má míru, práh a redukci. scripts/reap-orphans --targets jej měří spolu s worktrees; je omezen na 6144MB (MAJORDOMUS_SHARED_BUILD_CAP_MB); --reclaim jej odstraní celý, když je nad touto mezí a neběží žádný proces cargo ani rustc.
Úklid jedná podle deklarace, nikdy podle odhadu. Adresář se čte z vlastního .cargo/config.toml checkoutu; checkout, který žádný nedeklaruje, nemá nic k uvolnění.
Worker nemaže sdílený adresář ručně, dokud kdekoli běží build. Dá se regenerovat, ale build, který o něj uprostřed běhu přijde, selže z důvodu, který z tohoto buildu nikdo nevidí.
Chování při selhání
Sdílený adresář, který nelze změřit nebo který nenese značku cargo, se přeskočí a započítá, neodstraní se (project.destructive-sweeps-fail-closed). Čtení živosti, které se vrátí prázdné, neuvolní vůbec nic. Pokud build jiného worktree drží zámek souboru cargo, druhý build na něj čeká; to je cena sdílení, ne chyba.
Ověření
test/cases/1022_worktrees_share_build_intermediates.sh obsahuje deklaraci (build-dir, žádné target-dir), na fixtuře se dvěma kořeny dokazuje, že druhý kořen nekompiluje znovu sdílenou závislost a ponechává si vlastní spustitelný soubor, a prožene reaper případy v mezích, nad mezí, běžící build, nečinný a nedeklarovaný. test/cases/276_disk_is_bounded.sh obsahuje úklid po jednotlivých worktree, který toto rozšiřuje.