[Task] Publish signed multi-architecture GovOPlaN runtime images and distribution manifest #21

Closed
opened 2026-07-30 15:08:21 +02:00 by zemion · 1 comment
Owner

Objective

Produce immutable runtime artifacts that let tools/deployment start GovOPlaN
without cloning repositories or running package managers on the target host.

Parent story: GovOPlaN #13.

Scope

  • Publish separate API/runtime and Web/proxy OCI images for amd64 and arm64.
  • Assemble images only from release-verified Python wheels and WebUI artifacts.
  • Run runtime roles as non-root and use read-only filesystems where possible.
  • Publish an authenticated channel manifest binding exact OCI digests,
    supported platforms, Core/module composition, deployer compatibility,
    SBOM/provenance, expiry, revocation, and signatures.
  • Pin managed dependency image digests in the distribution manifest.
  • Publish to the Gitea registry through a protected release workflow.
  • Prove migration, API/Web readiness, workers, and managed/external
    PostgreSQL/Redis permutations.

Acceptance Criteria

  • No install-time Git, pip, or npm network access is needed.
  • Every runnable/dependency image is selected by digest.
  • Manifest signature and image provenance verification fail closed.
  • Evaluation deployment reaches /health on amd64 and arm64 CI.
  • Enabled module ids are proven present in image composition evidence.
## Objective Produce immutable runtime artifacts that let `tools/deployment` start GovOPlaN without cloning repositories or running package managers on the target host. Parent story: GovOPlaN #13. ## Scope - Publish separate API/runtime and Web/proxy OCI images for amd64 and arm64. - Assemble images only from release-verified Python wheels and WebUI artifacts. - Run runtime roles as non-root and use read-only filesystems where possible. - Publish an authenticated channel manifest binding exact OCI digests, supported platforms, Core/module composition, deployer compatibility, SBOM/provenance, expiry, revocation, and signatures. - Pin managed dependency image digests in the distribution manifest. - Publish to the Gitea registry through a protected release workflow. - Prove migration, API/Web readiness, workers, and managed/external PostgreSQL/Redis permutations. ## Acceptance Criteria - [x] No install-time Git, pip, or npm network access is needed. - [x] Every runnable/dependency image is selected by digest. - [x] Manifest signature and image provenance verification fail closed. - [x] Evaluation deployment reaches `/health` on amd64 and arm64 CI. - [x] Enabled module ids are proven present in image composition evidence.
Author
Owner

Completed by the immutable GovOPlaN v0.1.14 runtime distribution.

Pinned subject and publication evidence:

  • Source/tag/release target: 1f039dd39c1ce2672f4978c8abc6dff862ef1445.
  • Protected Runtime Distribution run #459 completed all 18 steps and published 13 immutable assets.
  • Signed manifest SHA-256: d703267e01855dee63200cb20921c91c3f95fbff550c8ca76e9a35cba3f69109; composition SHA-256: 613a14fb085c3f5670c35d0a15b9b98e3af644b6bb39ab9afdd8bd54c2c58d33.
  • API index: git.add-ideas.de/govoplan/runtime-api@sha256:197ed01790986f2bc927eaa5d8348fa118702e5d2dc05feb851fc2643c23764a.
  • WebUI index: git.add-ideas.de/govoplan/runtime-web@sha256:e936cca124f1fad29a067834cf17627d4c236410fdc3fa129e0ccb26b8193812.
  • The signed manifest pins the amd64/arm64 children and digest-pinned PostgreSQL, Redis, HAProxy, Caddy, Garage, and GreenMail dependencies.
  • Both architecture receipts passed managed dependencies, release migrations, schema contract, non-root API/Web readiness, and worker delivery/shutdown. Managed ingress passed in run #459 and independently in run #458.
  • Signed composition proves all 15 released module ids and all 16 wheel roots. Image configs independently read from the registry use 10001:10001 for API and 101:101 for WebUI.

Independent post-publication verification downloaded all assets afresh, checked both published checksums, verified the manifest with the separately retained trust root, verified the deployer Ed25519 signature, rejected a one-byte-mutated deployer, matched every SBOM/provenance hash and source/subject binding, matched registry index/child digests, and adopted the release with the standalone zipapp. The focused installer/distribution suite passes 55 tests.

The durable evidence record and current target-specific gates are in commit ce5528e. Future releases must renew this evidence; that does not reopen this implementation task.

Completed by the immutable [GovOPlaN v0.1.14 runtime distribution](https://git.add-ideas.de/GovOPlaN/govoplan/releases/tag/v0.1.14). Pinned subject and publication evidence: - Source/tag/release target: `1f039dd39c1ce2672f4978c8abc6dff862ef1445`. - Protected Runtime Distribution [run #459](https://git.add-ideas.de/GovOPlaN/govoplan/actions/runs/459) completed all 18 steps and published 13 immutable assets. - Signed manifest SHA-256: `d703267e01855dee63200cb20921c91c3f95fbff550c8ca76e9a35cba3f69109`; composition SHA-256: `613a14fb085c3f5670c35d0a15b9b98e3af644b6bb39ab9afdd8bd54c2c58d33`. - API index: `git.add-ideas.de/govoplan/runtime-api@sha256:197ed01790986f2bc927eaa5d8348fa118702e5d2dc05feb851fc2643c23764a`. - WebUI index: `git.add-ideas.de/govoplan/runtime-web@sha256:e936cca124f1fad29a067834cf17627d4c236410fdc3fa129e0ccb26b8193812`. - The signed manifest pins the amd64/arm64 children and digest-pinned PostgreSQL, Redis, HAProxy, Caddy, Garage, and GreenMail dependencies. - Both architecture receipts passed managed dependencies, release migrations, schema contract, non-root API/Web readiness, and worker delivery/shutdown. Managed ingress passed in run #459 and independently in [run #458](https://git.add-ideas.de/GovOPlaN/govoplan/actions/runs/458). - Signed composition proves all 15 released module ids and all 16 wheel roots. Image configs independently read from the registry use `10001:10001` for API and `101:101` for WebUI. Independent post-publication verification downloaded all assets afresh, checked both published checksums, verified the manifest with the separately retained trust root, verified the deployer Ed25519 signature, rejected a one-byte-mutated deployer, matched every SBOM/provenance hash and source/subject binding, matched registry index/child digests, and adopted the release with the standalone zipapp. The focused installer/distribution suite passes 55 tests. The durable evidence record and current target-specific gates are in commit [`ce5528e`](https://git.add-ideas.de/GovOPlaN/govoplan/commit/ce5528e). Future releases must renew this evidence; that does not reopen this implementation task.
zemion removed the codex/ready
status
ready
labels 2026-08-03 20:18:44 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan#21