Expand description
The artifact layout: object keys, per-kind provenance, and the manifest.
One definition, used by the producers, by finalize and by deploy. Two places that each “know” the layout is how a producer and a consumer drift apart without anyone noticing, which is why this is a module with types rather than a string built in three scripts.
Layout:
s3://<bucket>/<commit>/<run_id>/
<kind>-<sha256>.tar the payload, content-addressed
<kind>.meta pointer + provenance for that kind
nomisync-manifest.json written by finalize, and only by finalizeContent-addressed because the key contains the hash of the bytes: an object can never be overwritten with different content, since different bytes are a different key. That structurally removes the window where a manifest is valid while the bytes behind a mutable name changed underneath.
Run-scoped, not attempt-scoped. Attempts may differ between kinds and that is correct: if coverage passes and only release is re-run, they land in attempts 1 and 2 of the same run, built from the same commit. Refusing that pair would force a full coverage rebuild because an unrelated job flaked. The invariant that matters is same commit, same run, same builder image — and mixing across runs or commits is unreachable, because the prefix contains both.
Structs§
- Identity
- Who built an artifact, and in which run.
- Meta
- A published object: what it is, what it hashes to, and what produced it.
Enums§
- Kind
- Which half of the artifact pair an object is.
- Pair
Error - Why a pair of artifacts may not be assembled into one image.
Constants§
Functions§
- check_
pair - The invariant deploy relies on: same commit, same run, same builder image.