informed-decision/deploy/lifecycle
tegwick 4898c9b764 Pin lifecycle policy proposal to verified Forgejo build
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a10780-6d41-7952-9718-dfbc1f41236f
2026-10-04 21:46:31 +02:00
..
admission.candidate.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00
intake-submitters.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00
lifecycle-callers.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00
policy.candidate.yaml Pin lifecycle policy proposal to verified Forgejo build 2026-10-04 21:46:31 +02:00
README.md Pin lifecycle policy proposal to verified Forgejo build 2026-10-04 21:46:31 +02:00
registries.candidate.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00
review-groups.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00
review-policy.candidate.yaml Pin lifecycle policy proposal to verified Forgejo build 2026-10-04 21:46:31 +02:00
service.candidate.json Prepare authenticated lifecycle runtime and production release candidate 2026-10-04 21:40:19 +02:00

INFD-WP-0007 production candidate

Prepared 2026-10-04 for the founder-selected initial audience: net-kingdom-admins humans and system:serviceaccount:state-hub:state-hub. Not deployed.

Artifact Immutable reference
Service forgejo.coulomb.social/coulomb/informed-decision@sha256:2768bd1da3e651cc0be2d0f1ae6eea1af4eb057b31ef63ebb03b004c2ed76c3d
Access Engine forgejo.coulomb.social/coulomb/flex-auth@sha256:bdac62bc3f089cba0df7c35eeb8d0d9b3af2d4bae5e4ea4767516c1ed20b1e99
Lifecycle package informed-decision.lifecycle v1, sha256:cee6a79f74e81d0d389a2c2e2451a92be3434ea9dfcee4986e8c7e6cfdbb1827
Human review package informed-decision.compact-sitting v12, sha256:c5387f7d198dc39ab5967e0c218ce05cc779693565c8875e3035e45ec002a2db

admission.candidate.json renders service.candidate.json using tools/render_deployment.py. registries.candidate.json projects the three sibling JSON registries. The policy YAML is Helm-rendered from Access Engine's FLEX-WP-0033 candidate values; it is a review artifact, not a second deployment owner. Existing Helm releases must be updated through their owning workflow. All 25 proposed objects passed Kubernetes server dry-run against railiance01. No Secret is included. Dry-run does not test reachability, credential delivery, policy caller identity, backup restoration or a human disposition.

Proposed live changes

  • Replace the service's image and immutable runtime ConfigMap, retaining its public Service/Ingress, single writer, Recreate strategy and existing PVC.
  • Enable /decisions and lifecycle audit delivery; keep private API on 8081.
  • Add the exact State Hub peer, API-server egress, CA/token projection and only create-tokenreviews RBAC for informed-decision/review.
  • Mount the proposed reloadable registries and Platform's exact read-only requester Secret projection, without subPath.
  • Add a separate lifecycle PDP and change the sitting PDP to the v12 package. Review retains all v11 exact mandates and 15-minute KeyCape MFA; lifecycle authoring uses a 12-hour MFA window. Agents cannot accept.
  • Initial intake permits decision-record / net-kingdom-admins, 50 new attempts per UTC day, with the existing platform-root recipient. Other admins may collaborate; this does not silently make them the bound recipient.

The policy chart retains the owner's existing port-only API-server egress (443/6443). The consumer's new API-server egress is address-specific. CARING is advisory and consumer fact attribution is unsigned, as in the existing reviewed contract; neither is presented as a newly enforced control.

Pre-cutover gates

  1. RPF-WP-0051 / CCR-2026-0032: complete the already prepared requester delivery under its separate live go, with exact identity/path negative proofs and mounted-file refresh/rotation evidence. Only the audit ExternalSecret was present in the live namespace at inspection.
  2. INFD-WP-0005-T08: State Hub owner supplies production forwarding and separate lifecycle/intake audience token projections. Its current dev fixture is not an activated forwarder. Confirm notification receiver reachability; keep resolution write-back disabled until its owner admission.
  3. Refresh live image/config pins and unresolved-entry counts; complete the backup/restore steps below; obtain explicit approval of this concrete rollout. INFD-WP-0007-T07 and CCR-2026-0032 require this distinct go.

Cutover and recovery procedure

Before migrating, close new review traffic through the owning ingress workflow, let active requests finish, and inspect the current schema-2 writer read-only. The observed baseline was 24 confirmed submissions, 158 delivered outbox rows, zero unresolved entries; these counts are not a future maintenance-window gate. Retain the exact current Deployment, Service, runtime ConfigMap, Helm values and all related policy pins. Do not include credentials in the evidence packet.

Use the existing running image's installed informed-decision-admin backup to create a unique SQLite consistent snapshot in a private directory. Copy the backup to independently protected custody, record its digest, and verify a restore on a separate private volume before cutover. Close the old writer before starting the schema-5 image. Local synthetic restore proof is retained in the evidence directory; it does not replace this production data restoration check.

Deploy admitted owner policy/custody prerequisites, then the service candidate. Verify /healthz, /readyz, pending/blocked counts, actual audience isolation, wrong-caller refusals and public/private route separation. Exercise two new records and a revision without changing image/config/package pins. Only a human may finish review. Correlate the native Approval Engine entry and independent Audit Core receipts; restart and retrieve the same immutable evidence.

If validation fails, stop the candidate and retain its database plus all new receipts. Never start the old schema-2 image on the schema-5 database. Rollback requires the verified pre-cutover copy on a separate volume and reconciliation of every post-cutover external effect before resuming writes. An uncertain submission stays unresolved; do not retry or discard it to enable rollback. The prior image is in ../sitting-admission.json and remains a reference, not an instruction to downgrade the live database.

Validation evidence

docs/evidence/2026-10-04-lifecycle-release/ retains container checks, bounded scan summaries and policy validation. Service: 662 passed, 1 skipped with owner components; 13 container checks passed, including restart and backup/restore. Both artifact scans contain zero HIGH/CRITICAL findings. Actual evaluator tests cover first-audience collaboration across revisions and verify unchanged package pins; authentication custody in those tests is synthetic. Native activation and broader browser packet/binding profiles remain explicit workplan tasks.

The final Access Engine pin is the Forgejo image built from commit d2d0b6f (run https://forgejo.coulomb.social/coulomb/access-engine/actions/runs/316). It supersedes the locally built candidate for the proposed deployment.