Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I3839 — A build that cannot take its build directory's lock never falls back to a cold private directory below the free-disk bound: it waits, bounded, or refuses naming the bound and the holder

Make lib/rust_bin.sh's mj_cargo_bounded, when the shared build directory's lock is held past its wait, consult the free-disk bound before it moves the build to mj_cargo_private_dir: above the bound it may go private as today; at or below it, it keeps waiting within a stated bound and then refuses with the free space, the bound and the lock's holder, never starting a cold private build.

PŘIPRAVENO vlna 0 · p1 · profil implementation · bezpečné souběžně

Part of ci-critical-path — The critical path from a change to its verdict, and from a merge to its verified deploy, runs under a minute warm.

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3839 bude přijato.

Cíl

Make lib/rust_bin.sh's mj_cargo_bounded, when the shared build directory's lock is held past its wait, consult the free-disk bound before it moves the build to mj_cargo_private_dir: above the bound it may go private as today; at or below it, it keeps waiting within a stated bound and then refuses with the free space, the bound and the lock's holder, never starting a cold private build.

Proč

Measured by f8 at 06:3xZ on 2026-10-21: `scripts/rust-check --quality` timed out on the shared build directory's lock, held by two other cargo runs, silently fell back to a cold build in ~/.cargo/build-private/<cksum>, and grew it to 5.3 GB while the volume held 32-35 GiB free, under the owner's 35 GiB floor of 2026-10-21. The same fallback built a cold private directory under a commit hook of dev-03's the same night. With several builds waiting, every one of them goes private at once, which multiplies the disk use exactly when the disk is lowest.

Aktuální stav

mj_cargo_bounded waits on cargo's \"Blocking waiting for file lock\" and then rebuilds in mj_cargo_private_dir (a cold one compiles every dependency once) whatever the free space; the floor (MAJORDOMUS_MIN_FREE_MB, default 5120) is checked only before the first build starts.

Cílový stav

No build goes private below the bound; a refused one says why and what holds the lock, and the bound is the one the floor and the owner's relaxation name.

Rozsah

  • lib/rust_bin.sh
  • bin/majordomus-cli
  • docs/DEVELOPMENT_RUNTIME.md

Mimo rozsah

  • The number of concurrent builders (I3825)
  • A hook's build (I3831)

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • With the shared lock held by a fixture process and free space reported below the bound, a build never creates a private build directory and ends with a refusal naming the free space, the bound and the holder's pid
  • With free space above the bound the fallback to a private directory works as before
  • The refusal is reached within the stated wait bound, never an unbounded wait

Validace

  • bash test/run.sh 3849_a_locked_build_never_goes_private_below_the_disk_bound
  • bin/majordomus plan validate

Požadované důkazy

  • a_locked_build_never_goes_private_below_the_disk_bound_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/I3839.yaml. Read it back with majordomus plan show I3839.

Prohledává názvy a popisy všech stránek, které tento web publikuje.