I2676 — The build cache is verified and validated: failure paths, security and a real second-node hit
Prove the acceptance contract: stop the provider and build, restart and recover, bad credential, low space, put/get, remote hit across two nodes of one platform.
BLOCKED wave 3 · p1 · implementation profile · runs alone
Part of development-runtime — The runtime has a development surface.
Blocked. This issue cannot start until I2673, I2674 are done. The status is derived from that, not declared.
Objective
Prove the acceptance contract: stop the provider and build, restart and recover, bad credential, low space, put/get, remote hit across two nodes of one platform.
Why
The owner, 2026-10-13, with full clearance: set up MinIO, an sccache server and every mesh node, verified and validated. The cluster compiles the same Rust on every machine from a cold cache; two declared offload hosts were under their disk minimum that day. See ADR 0157.
Current state
Measured on master b29cf4e487 on 2026-10-13: nothing is proved because nothing exists; the only candidate provider is unreachable over SSH.
Desired state
A case against a stub S3 for the failure paths, and a recorded run on real nodes for the hit, or a statement that two compatible nodes were not available; no cross-architecture claim.
Scope
- test/cases/3013_a_mesh_build_cache.sh
- docs/BUILD_CACHE.md
Out of scope
- Performance tuning beyond the recorded measurement
Dependencies
- I2673BLOCKED The sccache client configuration is derived from the selected offer, local disk first
- I2674BLOCKED A node is provisioned as an S3 cache provider, idempotently, with no secret in the repository
Acceptance criteria
- With the provider stopped a build succeeds and the diagnostic names the cause
- A restart recovers with no client edit
- A bad credential gives an actionable message with no key in it
- A second node's build hits what the first wrote, or the report says it could not be shown
Validation
- bin/majordomus plan validate
- MJ_TEST_JOBS=2 bash test/run.sh 3013_a_mesh_build_cache
Evidence required
- failure_path_case
- second_node_hit_recorded
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2676.yaml. Read it back with majordomus plan show I2676.