Skip to main content

Module artifact

Module artifact 

Source
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 finalize

Content-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.
PairError
Why a pair of artifacts may not be assembled into one image.

Constants§

MANIFEST_NAME

Functions§

check_pair
The invariant deploy relies on: same commit, same run, same builder image.