Skip to content

P1 E9 F9.1b: Publish signed multi-arch hub OCI images #169

Description

@gnanirahulnutakki

Parent: #27 (E9 F9.1 follow-up after #129, #131, #133, and #135)

Problem

The repository has an intentionally fail-closed Helm contract and deterministic local OCI-image checks, but no release-bound registry image. The chart therefore correctly refuses to claim a public install. A digest-addressed, signed multi-architecture hub image is the smallest missing artifact between the existing chart contract and an honest install path.

Scope

  • Extend the existing signed, main-ancestry tag release workflow to publish one Linux multi-platform hub image to GHCR from the exact release source, covering linux/amd64 and linux/arm64.
  • Make the published manifest digest the only documented Helm consumption value. Version tags may exist for discovery but no latest or mutable-tag installation contract is introduced.
  • Preserve the existing non-root, pinned-distroless Containerfile contract. The image contains only the existing sith binary and no secret, kubeconfig, certificate, database URL, or default runtime configuration.
  • Use the workflow GitHub token only for GHCR publication; use GitHub OIDC for keyless Cosign signing and GitHub artifact provenance/SBOM attestation of the pushed manifest. Pin every added action by full commit SHA.
  • Fail closed on missing/ambiguous platform digest, wrong release ref, unsigned tag, failed signing/attestation, or failure to make the manifest available before the GitHub release becomes public.
  • Add deterministic policy/unit coverage for image naming, digest-only documentation, and workflow wiring. Extend the release verification guide with exact digest, Cosign identity, and GitHub attestation checks.

Acceptance

  • A release tag produces a public-or-explicitly-documented GHCR manifest list with exactly linux/amd64 and linux/arm64 variants, each resolving the expected immutable runtime contract.
  • The manifest digest is keylessly signed by the exact Sith release workflow identity and has GitHub build provenance plus SBOM attestation; verification commands succeed against the published digest.
  • The release fails rather than publishing a GitHub release without the verified image evidence.
  • Helm documentation consumes only ghcr.io/ardurai/sith-hub@sha256:; no latest, tag-only install example, credential literal, KMS provider, database subchart, or ingress is added.
  • Unit/race, CI, Helm contract, isolation, release-check, real two-cluster tests, red-team review, security queues, signed/DCO/GSTACK PR, and exact post-merge CI are green.

Explicit non-goals

F9.2 addon packaging, E3 secret/KMS materialization, a database subchart, real Helm install with production credentials, profiles beyond the existing bounded envelopes, air-gap bundles, or a browser console.

Metadata

Metadata

Assignees

No one assigned

    Labels

    phase-1Phase 1: read-only federationsupply-chainSLSA / cosign / SBOM release integrity

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions