I3955 — Whether an archived cargo build directory is reused on a second node is measured before anything restores one
Build one commit cold on node A, archive its build directory without incremental state, restore it on node B with the same paths but its own checkout and registry, and record how many units B finds Fresh, the archive size and both build times; decide from that whether the cargo build directory becomes a kind of mesh build-cache ensure.
BLOKOVÁNO vlna 0 · p1 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until milestone:builds-reuse-the-mesh-cache is done. The status is derived from that, not declared.
Cíl
Build one commit cold on node A, archive its build directory without incremental state, restore it on node B with the same paths but its own checkout and registry, and record how many units B finds Fresh, the archive size and both build times; decide from that whether the cargo build directory becomes a kind of mesh build-cache ensure.
Proč
The owner, 2026-10-22, after lundra (the build and deploy host) reached zero free bytes: the shared cache must be part of Majordomus — used when MinIO is available, enforced, dynamic, derived — for compiled Rust, the shared cargo build directory, mix deps.get and npm install, keyed by a triplet for the most reuse. Decided the same day after critique: the store is trusted only through a signed offer (I2671), the build directory archive is measured before it is built (I3955), and the dependency cache is generic and wired first into prismatic-platform. See ADR 0157 and intent a-build-reuses-what-the-mesh-already-built.
Aktuální stav
Not measured. ADR 0139 measured 0 sccache hits between two build directories; the build-script fingerprint carries each tree's absolute root on purpose (.cargo/config.toml, MAJORDOMUS_BUILD_TREE); build directories ran from 3.4 GB median to 25 GB (lib/rust_bin.sh).
Cílový stav
A recorded claim with the commit, the machines, the counts and the times, and the decision it supports written into ADR 0157. Measured 2026-10-22 on lundra in two containers of rust:1-bookworm with identical paths and separate checkouts and registries (3 cpus each): commit 2034d4a3f0b cold on A in 566 s (142 units compiled), build directory archived without incremental state at 2.9 GB, restored on B: 142 Fresh, 0 compiled. Decision 12 of ADR 0157 records it: the cargo build directory is a kind of I3952.
Rozsah
- .ai/repo/adrs/0157-the-mesh-offers-a-shared-build-cache.md
- .ai/repo/project/intents/a-build-reuses-what-the-mesh-already-built.yaml
- docs/BUILD_CACHE.md
Mimo rozsah
- Building the restore itself
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Node B's checkout and registry are its own (new mtimes), and only the build directory travels
- The result is recorded whichever way it falls; a reuse below the cost of the transfer decides against the kind
Validace
- bin/majordomus plan validate
Požadované důkazy
- build_dir_reuse_measured
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/I3955.yaml. Read it back with majordomus plan show I3955.