Migrate the standalone k3s image registry inventory to Forgejo OCI #653

Open
opened 2026-07-27 02:26:20 +00:00 by coilyco-ops · 11 comments
Member

Outcome

Migrate every supported image from the standalone kai-server k3s registry to Forgejo OCI, update every producer and consumer to use the same Forgejo image authority, then retire the standalone registry after a verified rollback window.

The application publisher and the k3s consumer must use the same immutable Forgejo image reference. The migration must remove the separate raw push endpoint, the kai-registry.local pull alias, and the DinD insecure-registry exception from steady state.

Live evidence

The 2026-07-27 read-only cluster inventory established:

  • The registry namespace is active.
  • The Registry Deployment is available at 1/1 and its readiness endpoint returns HTTP 200.
  • The NodePort Service and ready endpoint still exist.
  • k3s containerd is actively reading manifests from the registry.
  • The registry catalog contains 18 image repositories.
  • Fourteen image repositories back running kai-server workloads.
  • Four catalog entries have no active kai-server controller.
  • Forgejo OCI is already proven by the AOS development image and the private Agent Proxy deployment.

The old registry stays available until every supported workload has moved and the operator confirms the retained rollback set.

Active image inventory

  • atlas - coilyco-bridge/atlas publishes it. coilyco-bridge/deploy/services/atlas consumes it.
  • bluesky-mcp - coilyco-flight-deck/bluesky-mcp publishes it. deploy/services/bluesky-mcp consumes it.
  • coilysiren-backend - deprecated. Deploy source retired in coilyco-bridge/deploy@6ae879e. Ops removes the live workload only after the data-retention decision in coilysiren/inbox#277. No Forgejo package is created.
  • coilysiren-eco-app - coilyco-gaming/eco-app publishes it. The Eco App and Discord worker Deployments both consume it.
  • factory-game-v3 - coilyco-gaming/factory-game-v3 publishes it. deploy/services/factory-game consumes it.
  • forgejo-runner-deploy - infrastructure builds it. The Forgejo deploy-runner StatefulSet consumes it.
  • galaxy-gen - coilyco-gaming/galaxy-gen owns the source. deploy/services/galaxy-gen builds and consumes it.
  • lunch-money-mcp - coilyco-flight-deck/lunch-money-k8s publishes it. deploy/services/lunch-money-mcp consumes it.
  • node-stats-mcp - coilyco-flight-deck/node-stats-mcp publishes it. deploy/services/node-stats-mcp consumes it.
  • playwright-mcp - Microsoft publishes the upstream image. deploy/services/playwright-mcp owns the trusted mirror and consumes it.
  • reddit-mcp - coilyco-flight-deck/reddit-mcp publishes it. deploy/services/reddit-mcp consumes it.
  • steam-mcp - coilyco-gaming/steam-ops publishes it. deploy/services/steam-mcp consumes it.
  • ward-mcp - coilyco-flight-deck/ward-mcp publishes one shared runtime. The AWS SSM, Discord, Forgejo, Glama, SigNoZ, SkillsMP, and Trello MCP Deployments consume it.
  • website - coilysiren/website publishes it. deploy/services/website consumes it.

Legacy or unreferenced catalog inventory

  • agent-proxy - Agent Proxy already publishes to and pulls from Forgejo OCI on ser8. The operator confirms no rollback reference still needs the standalone copy before deleting it.
  • coilysiren-galaxy-gen - this is the retired predecessor of the current galaxy-gen image. The operator confirms no rollback reference before deleting it.
  • probe - this is a synthetic registry verification artifact. The operator deletes it after the migration verification no longer needs it.
  • repo-recall-api - no active kai-server controller references it. The owning role identifies whether the product is supported, retained only for rollback, or retired before migration or deletion.

Target contract

  • Each source owner publishes forgejo.coilysiren.me/<owner>/<image>:<immutable-source-tag>.
  • Each deployment owner consumes that exact image reference.
  • A trusted main-only publisher authenticates with a package-write token.
  • A private k3s workload receives a package-read credential through an ExternalSecret-backed kubernetes.io/dockerconfigjson Secret and names it through imagePullSecrets.
  • A public package remains anonymous only when the owning repository records that visibility as intentional.
  • The deploy repository owns trusted mirroring for upstream-only images such as Playwright MCP.
  • Producers do not push the same release to both registries after their migration checkpoint.
  • Consumers do not retain a fallback to the standalone registry after their Forgejo rollout passes.

Migration sequence

  1. Infrastructure documents one reusable Forgejo OCI publish and k3s pull-secret pattern, using the existing Agent Proxy path as evidence.
  2. Each source owner switches its main-only publisher to Forgejo OCI and proves the immutable manifest exists.
  3. Each deployment owner switches its image reference and pull credential, then verifies rollout health through the authorized live-observation surface.
  4. Infrastructure migrates the deploy-runner image last among publishers so the migration machinery does not remove its own working substrate early.
  5. The operator classifies the four unreferenced entries and records migrate, retain temporarily, or delete for each.
  6. Infrastructure removes the old push endpoint, pull alias, runner insecure-registry flags, registry edge, registry Deployment and Service, and registry mirror role only after the fleet has zero consumers.
  7. The operator removes the registry PVC only after a final inventory, backup or explicit discard decision, and rollback-window confirmation.

Acceptance

  • Every supported image in this inventory exists in Forgejo OCI under its owning organization.
  • Every active workload runs from a Forgejo OCI image and passes its normal rollout health checks.
  • A live controller and running-pod inventory returns zero references to kai-registry.local or the standalone NodePort authority.
  • Canonical source and deploy branches contain no active push, pull, tag-check, or mirror references to the standalone registry.
  • Forgejo package-write and package-read credentials remain separated.
  • The migration does not expose a private image publicly by accident.
  • The registry catalog's four unreferenced entries have explicit dispositions.
  • Registry retirement has an operator-reviewed rollback and data-retention decision.
  • Infrastructure and deploy documentation describe Forgejo OCI as the only application image registry.
  • Repository validation passes in every changed repository.
  • infrastructure#552 tracks concurrent multi-architecture upload races in Forgejo OCI.
  • infrastructure#624 tracks Forgejo upload staging and disk pressure.
  • infrastructure#646 tracks the Forgejo registry request-body timeout.

The migration owner must account for those risks rather than treating a successful small-image push as proof that every publisher shape is ready.

Codex, via advisor surface

## Outcome Migrate every supported image from the standalone kai-server k3s registry to Forgejo OCI, update every producer and consumer to use the same Forgejo image authority, then retire the standalone registry after a verified rollback window. The application publisher and the k3s consumer must use the same immutable Forgejo image reference. The migration must remove the separate raw push endpoint, the `kai-registry.local` pull alias, and the DinD insecure-registry exception from steady state. ## Live evidence The 2026-07-27 read-only cluster inventory established: * The `registry` namespace is active. * The Registry Deployment is available at 1/1 and its readiness endpoint returns HTTP 200. * The NodePort Service and ready endpoint still exist. * k3s containerd is actively reading manifests from the registry. * The registry catalog contains 18 image repositories. * Fourteen image repositories back running kai-server workloads. * Four catalog entries have no active kai-server controller. * Forgejo OCI is already proven by the AOS development image and the private Agent Proxy deployment. The old registry stays available until every supported workload has moved and the operator confirms the retained rollback set. ## Active image inventory * [ ] `atlas` - `coilyco-bridge/atlas` publishes it. `coilyco-bridge/deploy/services/atlas` consumes it. * [ ] `bluesky-mcp` - `coilyco-flight-deck/bluesky-mcp` publishes it. `deploy/services/bluesky-mcp` consumes it. * [ ] `coilysiren-backend` - deprecated. Deploy source retired in `coilyco-bridge/deploy@6ae879e`. Ops removes the live workload only after the data-retention decision in https://forgejo.coilysiren.me/coilysiren/inbox/issues/277. No Forgejo package is created. * [ ] `coilysiren-eco-app` - `coilyco-gaming/eco-app` publishes it. The Eco App and Discord worker Deployments both consume it. * [ ] `factory-game-v3` - `coilyco-gaming/factory-game-v3` publishes it. `deploy/services/factory-game` consumes it. * [ ] `forgejo-runner-deploy` - infrastructure builds it. The Forgejo deploy-runner StatefulSet consumes it. * [ ] `galaxy-gen` - `coilyco-gaming/galaxy-gen` owns the source. `deploy/services/galaxy-gen` builds and consumes it. * [ ] `lunch-money-mcp` - `coilyco-flight-deck/lunch-money-k8s` publishes it. `deploy/services/lunch-money-mcp` consumes it. * [ ] `node-stats-mcp` - `coilyco-flight-deck/node-stats-mcp` publishes it. `deploy/services/node-stats-mcp` consumes it. * [ ] `playwright-mcp` - Microsoft publishes the upstream image. `deploy/services/playwright-mcp` owns the trusted mirror and consumes it. * [ ] `reddit-mcp` - `coilyco-flight-deck/reddit-mcp` publishes it. `deploy/services/reddit-mcp` consumes it. * [ ] `steam-mcp` - `coilyco-gaming/steam-ops` publishes it. `deploy/services/steam-mcp` consumes it. * [ ] `ward-mcp` - `coilyco-flight-deck/ward-mcp` publishes one shared runtime. The AWS SSM, Discord, Forgejo, Glama, SigNoZ, SkillsMP, and Trello MCP Deployments consume it. * [ ] `website` - `coilysiren/website` publishes it. `deploy/services/website` consumes it. ## Legacy or unreferenced catalog inventory * [ ] `agent-proxy` - Agent Proxy already publishes to and pulls from Forgejo OCI on ser8. The operator confirms no rollback reference still needs the standalone copy before deleting it. * [ ] `coilysiren-galaxy-gen` - this is the retired predecessor of the current `galaxy-gen` image. The operator confirms no rollback reference before deleting it. * [ ] `probe` - this is a synthetic registry verification artifact. The operator deletes it after the migration verification no longer needs it. * [ ] `repo-recall-api` - no active kai-server controller references it. The owning role identifies whether the product is supported, retained only for rollback, or retired before migration or deletion. ## Target contract * Each source owner publishes `forgejo.coilysiren.me/<owner>/<image>:<immutable-source-tag>`. * Each deployment owner consumes that exact image reference. * A trusted main-only publisher authenticates with a package-write token. * A private k3s workload receives a package-read credential through an ExternalSecret-backed `kubernetes.io/dockerconfigjson` Secret and names it through `imagePullSecrets`. * A public package remains anonymous only when the owning repository records that visibility as intentional. * The deploy repository owns trusted mirroring for upstream-only images such as Playwright MCP. * Producers do not push the same release to both registries after their migration checkpoint. * Consumers do not retain a fallback to the standalone registry after their Forgejo rollout passes. ## Migration sequence 1. Infrastructure documents one reusable Forgejo OCI publish and k3s pull-secret pattern, using the existing Agent Proxy path as evidence. 2. Each source owner switches its main-only publisher to Forgejo OCI and proves the immutable manifest exists. 3. Each deployment owner switches its image reference and pull credential, then verifies rollout health through the authorized live-observation surface. 4. Infrastructure migrates the deploy-runner image last among publishers so the migration machinery does not remove its own working substrate early. 5. The operator classifies the four unreferenced entries and records migrate, retain temporarily, or delete for each. 6. Infrastructure removes the old push endpoint, pull alias, runner insecure-registry flags, registry edge, registry Deployment and Service, and registry mirror role only after the fleet has zero consumers. 7. The operator removes the registry PVC only after a final inventory, backup or explicit discard decision, and rollback-window confirmation. ## Acceptance * Every supported image in this inventory exists in Forgejo OCI under its owning organization. * Every active workload runs from a Forgejo OCI image and passes its normal rollout health checks. * A live controller and running-pod inventory returns zero references to `kai-registry.local` or the standalone NodePort authority. * Canonical source and deploy branches contain no active push, pull, tag-check, or mirror references to the standalone registry. * Forgejo package-write and package-read credentials remain separated. * The migration does not expose a private image publicly by accident. * The registry catalog's four unreferenced entries have explicit dispositions. * Registry retirement has an operator-reviewed rollback and data-retention decision. * Infrastructure and deploy documentation describe Forgejo OCI as the only application image registry. * Repository validation passes in every changed repository. ## Related risks * infrastructure#552 tracks concurrent multi-architecture upload races in Forgejo OCI. * infrastructure#624 tracks Forgejo upload staging and disk pressure. * infrastructure#646 tracks the Forgejo registry request-body timeout. The migration owner must account for those risks rather than treating a successful small-image push as proof that every publisher shape is ready. <!-- ward-agent-signature --> Codex, via advisor surface
Author
Member

Authorized legacy-image cleanup

Kai explicitly authorized deletion of these four standalone-registry repositories on 2026-07-27:

  • agent-proxy
  • coilysiren-galaxy-gen
  • probe
  • repo-recall-api

Pre-delete evidence:

  • No active kai-server controller, running pod, ReplicaSet, or Job template references any of the four through the standalone registry.
  • Agent Proxy is running on ser8 from Forgejo OCI.
  • The legacy Galaxy namespace no longer exists, and the replacement Galaxy deployment is running from the current image.
  • Repo Recall is running from GHCR rather than the standalone registry.
  • probe is synthetic and reproducible. Only registry verification documentation names it.

The ops-role operator may delete every manifest and tag belonging to these four repositories. The operator must not delete the registry Deployment, Service, PVC, shared blobs still referenced by retained images, or any other catalog entry.

After deletion, the operator verifies that the four names no longer have retrievable manifests, retained workloads remain Ready, and the remaining registry catalog is unchanged except for these targets. The operator records the result here.

This advisor session performed the read-only retirement audit but did not mutate the live registry because the advisor role does not hold the live-operations mutation surface.

Codex, via advisor surface

## Authorized legacy-image cleanup Kai explicitly authorized deletion of these four standalone-registry repositories on 2026-07-27: * `agent-proxy` * `coilysiren-galaxy-gen` * `probe` * `repo-recall-api` Pre-delete evidence: * No active kai-server controller, running pod, ReplicaSet, or Job template references any of the four through the standalone registry. * Agent Proxy is running on ser8 from Forgejo OCI. * The legacy Galaxy namespace no longer exists, and the replacement Galaxy deployment is running from the current image. * Repo Recall is running from GHCR rather than the standalone registry. * `probe` is synthetic and reproducible. Only registry verification documentation names it. The ops-role operator may delete every manifest and tag belonging to these four repositories. The operator must not delete the registry Deployment, Service, PVC, shared blobs still referenced by retained images, or any other catalog entry. After deletion, the operator verifies that the four names no longer have retrievable manifests, retained workloads remain Ready, and the remaining registry catalog is unchanged except for these targets. The operator records the result here. This advisor session performed the read-only retirement audit but did not mutate the live registry because the advisor role does not hold the live-operations mutation surface. <!-- ward-agent-signature --> Codex, via advisor surface
Author
Member

Cross-repository authority is now coilysiren/inbox#276.

This issue remains the infrastructure child and the canonical live inventory, migration sequencing, registry-retirement, rollback, and data-retention record.

The child graph also exposed one inventory correction: coilyco-flight-deck/backend is absent from Forgejo even though the active image and deploy metadata still name it. coilysiren/inbox#277 owns restoring, rehoming, or explicitly retiring that source before the backend migration can complete.

Cross-repository authority is now https://forgejo.coilysiren.me/coilysiren/inbox/issues/276. This issue remains the infrastructure child and the canonical live inventory, migration sequencing, registry-retirement, rollback, and data-retention record. The child graph also exposed one inventory correction: `coilyco-flight-deck/backend` is absent from Forgejo even though the active image and deploy metadata still name it. https://forgejo.coilysiren.me/coilysiren/inbox/issues/277 owns restoring, rehoming, or explicitly retiring that source before the backend migration can complete.
Author
Member

Engineer checkpoint: reusable Forgejo OCI contract landed

Canonical main now contains commit da0c2f0 (docs: establish Forgejo OCI application image contract).

The checkpoint establishes:

  • forgejo.coilysiren.me/<owner>/<image>:<full-source-sha> as the sole target application-image authority.
  • Trusted main-only publication through the deploy runner's package-write credential.
  • A separate package-read credential synthesized into namespaced kubernetes.io/dockerconfigjson Secrets through ExternalSecret.
  • Private-by-default visibility, remote immutable-manifest proof, publisher and consumer checkpoints, and explicit handling of infrastructure#552, #624, and #646.
  • The standalone registry as a gated rollback bridge only, never a target for new publishers.

Evidence: ward exec pre-commit passed every repository and catalog hook before the fast-forward push.

This completes sequence item 1's repository prerequisite. It does not close infrastructure#653. Publisher migrations, deploy-runner migration, live zero-reference evidence, rollback and retention decisions, and registry retirement remain.

Codex, via engineer surface

## Engineer checkpoint: reusable Forgejo OCI contract landed Canonical main now contains commit `da0c2f0` (`docs: establish Forgejo OCI application image contract`). The checkpoint establishes: * `forgejo.coilysiren.me/<owner>/<image>:<full-source-sha>` as the sole target application-image authority. * Trusted main-only publication through the deploy runner's package-write credential. * A separate package-read credential synthesized into namespaced `kubernetes.io/dockerconfigjson` Secrets through ExternalSecret. * Private-by-default visibility, remote immutable-manifest proof, publisher and consumer checkpoints, and explicit handling of infrastructure#552, #624, and #646. * The standalone registry as a gated rollback bridge only, never a target for new publishers. Evidence: `ward exec pre-commit` passed every repository and catalog hook before the fast-forward push. This completes sequence item 1's repository prerequisite. It does not close infrastructure#653. Publisher migrations, deploy-runner migration, live zero-reference evidence, rollback and retention decisions, and registry retirement remain. <!-- ward-agent-signature --> Codex, via engineer surface
Author
Member

Publisher checkpoint blocked at live package authorization

Website source commit 8466f5a reached the trusted deploy runner, built forgejo.coilysiren.me/coilysiren/website:8466f5acf84b2f12e78157cf8530d174f76d8bf8, then Forgejo rejected the push with unauthorized: reqPackageAccess in https://forgejo.coilysiren.me/coilysiren/website/actions/runs/137.

Local source validation is green. The agent did not rerun or probe CI. The required Ops action and exact return evidence now live in interactive issue infrastructure#654.

Node Stats and Reddit source publishers are also landed, but their queued workflows and all immutable-manifest handoffs remain gated on the same write-authority checkpoint.

Codex, via engineer surface

## Publisher checkpoint blocked at live package authorization Website source commit `8466f5a` reached the trusted deploy runner, built `forgejo.coilysiren.me/coilysiren/website:8466f5acf84b2f12e78157cf8530d174f76d8bf8`, then Forgejo rejected the push with `unauthorized: reqPackageAccess` in https://forgejo.coilysiren.me/coilysiren/website/actions/runs/137. Local source validation is green. The agent did not rerun or probe CI. The required Ops action and exact return evidence now live in interactive issue infrastructure#654. Node Stats and Reddit source publishers are also landed, but their queued workflows and all immutable-manifest handoffs remain gated on the same write-authority checkpoint. <!-- ward-agent-signature --> Codex, via engineer surface
Author
Member

Consumer checkpoint: the agent pushed deploy branch issue-239-forgejo-oci at d7e3245.

All named source publishers now target private Forgejo OCI at full source SHAs. The deploy branch pins those exact authorities, adds read-only pull credentials, owns the Playwright digest mirror, removes legacy consumer paths, and passes offline Kubernetes, workflow, shell, documentation, and secret-scan validation.

The agent did not land deploy main or touch live workloads. infrastructure#654 remains the package-write and manifest-proof wall. inbox#277 remains the backend ownership wall. The old registry stays a gated rollback edge until Ops proves the migrated workloads and zero legacy pulls.

Consumer checkpoint: the agent pushed deploy branch `issue-239-forgejo-oci` at `d7e3245`. All named source publishers now target private Forgejo OCI at full source SHAs. The deploy branch pins those exact authorities, adds read-only pull credentials, owns the Playwright digest mirror, removes legacy consumer paths, and passes offline Kubernetes, workflow, shell, documentation, and secret-scan validation. The agent did not land deploy main or touch live workloads. infrastructure#654 remains the package-write and manifest-proof wall. inbox#277 remains the backend ownership wall. The old registry stays a gated rollback edge until Ops proves the migrated workloads and zero legacy pulls.
Author
Member

Deploy-runner repository checkpoint

Remote branch issue-653-deploy-runner-oci now carries the final-publisher handoff at a3e4814.

  • ab7f2af changes only the main-only publisher. The existing deploy runner builds forgejo.coilysiren.me/coilyco-flight-deck/forgejo-runner-deploy:ab7f2af13c507c456470f1d76bb6aad7bc1e28da, pushes no moving tag, and requires remote manifest inspection.
  • a3e4814 is the dependent consumer commit. It pins both runner containers to that exact image, adds the separate read-only package pull Secret, and removes the deploy runner's legacy pull and insecure-registry path.
  • ward exec pre-commit passes every repository, documentation, runner-contract, registry-bridge, and offline secret-scan hook.

The two commits remain off main by design. infrastructure#654 must restore package-write authority before the publisher commit can land and prove its manifest. The consumer commit must not land until that proof exists. The agent opened no PR, reran no CI, and changed no live runner.

Codex, via engineer surface

## Deploy-runner repository checkpoint Remote branch `issue-653-deploy-runner-oci` now carries the final-publisher handoff at `a3e4814`. * `ab7f2af` changes only the main-only publisher. The existing deploy runner builds `forgejo.coilysiren.me/coilyco-flight-deck/forgejo-runner-deploy:ab7f2af13c507c456470f1d76bb6aad7bc1e28da`, pushes no moving tag, and requires remote manifest inspection. * `a3e4814` is the dependent consumer commit. It pins both runner containers to that exact image, adds the separate read-only package pull Secret, and removes the deploy runner's legacy pull and insecure-registry path. * `ward exec pre-commit` passes every repository, documentation, runner-contract, registry-bridge, and offline secret-scan hook. The two commits remain off `main` by design. infrastructure#654 must restore package-write authority before the publisher commit can land and prove its manifest. The consumer commit must not land until that proof exists. The agent opened no PR, reran no CI, and changed no live runner. <!-- ward-agent-signature --> Codex, via engineer surface
Author
Member

Registry-source retirement checkpoint

Dependent remote branch issue-653-registry-retirement now ends at 7d0f9c5.

After the deploy-runner handoff commits, this commit removes the standalone registry:2 manifest, k3s mirror role and sync wiring, all remaining DinD insecure-registry exceptions, obsolete registry backup scope, and active rollback-bridge documentation. It replaces the old mirror-presence hook with a Forgejo-authority guard that fails if the retired workload, role, endpoint, alias, or runner exception returns.

ward exec pre-commit passes every repository, runner-contract, Forgejo-authority, documentation, catalog, and offline secret-scan hook.

The branch remains off main. It is source cleanup for the post-retirement state, not authorization to delete live resources. Ops must first prove every migrated workload, return a live zero-reference inventory, complete the rollback window, record the registry data-retention disposition, and remove the live edge, workload, mirror config, and storage through the authorized operator surface.

Codex, via engineer surface

## Registry-source retirement checkpoint Dependent remote branch `issue-653-registry-retirement` now ends at `7d0f9c5`. After the deploy-runner handoff commits, this commit removes the standalone `registry:2` manifest, k3s mirror role and sync wiring, all remaining DinD insecure-registry exceptions, obsolete registry backup scope, and active rollback-bridge documentation. It replaces the old mirror-presence hook with a Forgejo-authority guard that fails if the retired workload, role, endpoint, alias, or runner exception returns. `ward exec pre-commit` passes every repository, runner-contract, Forgejo-authority, documentation, catalog, and offline secret-scan hook. The branch remains off `main`. It is source cleanup for the post-retirement state, not authorization to delete live resources. Ops must first prove every migrated workload, return a live zero-reference inventory, complete the rollback window, record the registry data-retention disposition, and remove the live edge, workload, mirror config, and storage through the authorized operator surface. <!-- ward-agent-signature --> Codex, via engineer surface
Author
Member

Registry inventory correction: coilysiren-backend is deprecated, not a supported Forgejo OCI migration target. Kai is archiving the GitHub source, and the engineer discarded the unpublished publisher recovery.

Treat the backend as an explicit retirement item. Deploy source removal is in progress. Ops must inventory the running workload and decide retention for Postgres, PVCs, backups, namespace, and rollback images before removal. The infrastructure retirement branch intentionally keeps backend backup coverage until that decision is recorded.

Registry inventory correction: `coilysiren-backend` is deprecated, not a supported Forgejo OCI migration target. Kai is archiving the GitHub source, and the engineer discarded the unpublished publisher recovery. Treat the backend as an explicit retirement item. Deploy source removal is in progress. Ops must inventory the running workload and decide retention for Postgres, PVCs, backups, namespace, and rollback images before removal. The infrastructure retirement branch intentionally keeps backend backup coverage until that decision is recorded.
Author
Member

Backend repository retirement is now source-complete. GitHub is archived and deploy main 6ae879e contains no backend surface. The active cluster item is now an Ops retirement target, not a Forgejo OCI publisher. Keep backup coverage until inbox#277 records the Postgres, PVC, backup, namespace, and rollback-image disposition.

Backend repository retirement is now source-complete. GitHub is archived and deploy main `6ae879e` contains no backend surface. The active cluster item is now an Ops retirement target, not a Forgejo OCI publisher. Keep backup coverage until inbox#277 records the Postgres, PVC, backup, namespace, and rollback-image disposition.
Author
Member

Backend image deletion now has a dedicated destructive Ops gate: #655. It covers only the retired coilysiren-backend repository in the standalone registry. Whole-registry retirement and PVC deletion remain in infrastructure#653.

Backend image deletion now has a dedicated destructive Ops gate: https://forgejo.coilysiren.me/coilyco-flight-deck/infrastructure/issues/655. It covers only the retired `coilysiren-backend` repository in the standalone registry. Whole-registry retirement and PVC deletion remain in infrastructure#653.
Author
Member

Node Stats, the final protected application consumer exception, has completed its Forgejo OCI cutover.

The umbrella remains open. Registry retirement still needs the separate deploy-runner/backend work, zero-consumer fleet proof, the four legacy-entry dispositions, and the operator-reviewed rollback/data-retention decision. kai-server filesystem pressure is currently below warning at 78.6%, but only about 7.3 GB below the 80% threshold, so infrastructure#624 remains relevant during retirement work.

Node Stats, the final protected application consumer exception, has completed its Forgejo OCI cutover. * Source image: `forgejo.coilysiren.me/coilyco-flight-deck/node-stats-mcp:9e486430f44f35edc39277e6b3c9d956c5abf415` * Publisher proof and pre-push container import smoke: https://forgejo.coilysiren.me/coilyco-flight-deck/node-stats-mcp/actions/runs/30 * Deploy commit: `coilyco-bridge/deploy@1b119f5309607f54146030734d11af7f3f07cf08` * kai-server validation and rollout: https://forgejo.coilysiren.me/coilyco-bridge/deploy/actions/runs/3201 and https://forgejo.coilysiren.me/coilyco-bridge/deploy/actions/runs/3202 * kai-server current controller is 1/1 and its pod is 2/2 Ready with zero restarts on the exact Forgejo image. The package-read ExternalSecret is Ready. * ser8 is 2/2 Ready with zero restarts on the same exact image and passed the MCP initialize smoke. * Source tracker coilyco-flight-deck/node-stats-mcp#14 is closed. deploy#239 now records that its protected Node Stats exception is retired. The umbrella remains open. Registry retirement still needs the separate deploy-runner/backend work, zero-consumer fleet proof, the four legacy-entry dispositions, and the operator-reviewed rollback/data-retention decision. kai-server filesystem pressure is currently below warning at 78.6%, but only about 7.3 GB below the 80% threshold, so infrastructure#624 remains relevant during retirement work.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/infrastructure#653
No description provided.