ADR-0001: Gated, Signed, Reproducible Container Release Model

Context

Nojoin ships as three container images (api, worker, frontend) that operators pull by rolling tag. Before the Phase 5 supply-chain hardening, a pushed tag built and published images directly, including the mutable latest tag, with no vulnerability gate, no provenance, and no signature. That left three gaps in the deployment trust boundary: operators could not verify an image’s origin, a known-vulnerable image could reach latest, and a mutable action or base-image tag could be repointed at unreviewed code after review.

This decision was made during Phase 5 and is recorded here retrospectively to seed the ADR process and demonstrate the format.

Decision

We will publish releases through a single gated, signed, reproducible pipeline driven by a strict vX.Y.Z tag, implemented in .github/workflows/release.yml:

Consequences

Alternatives Considered