• v0.1.122 7ea18f3aac

    v0.1.122 Stable

    pipeline-bot released this 2026-07-25 21:17:55 +00:00 | 92 commits to trunk since this release

    • feat(safety): repo destruction is no longer reachable by editing instances/. ForgejoRepository deletion is destructive by design — the operator's finalizer calls DeleteRepo(owner,name), wiping all code/refs/history, and the only bypass (status.repositoryID == 0) is closed on all 32 live CRs. apis/gitmirror now sets deletionPolicy: Orphan on all three composed Objects (repository, backup cron, collaborator), so deleting or renaming a GitMirror claim leaves the CRs — and the repos — alive. Works because the composed CRs carry no ownerReferences (provider-kubernetes keys off manifest.metadata.{name,namespace}, not GC). managementPolicies must stay ["*"] or crossplane-runtime ignores deletionPolicy.
    • feat(safety): instances/gitops-repos.yamlkustomize.toolkit.fluxcd.io/prune: disabled on the seanfarm-gitops + platform-seanfarm-gitops CRs. These are raw CRs (not Crossplane Objects, so Orphan misses them) under a prune: true Kustomization; deleting those manifest lines would have destroyed sean/seanfarm and sean/platform-seanfarm — the repos this cluster reconciles from.
    • docs(gitmirror): README rewritten — it described a per-tenant API targeting forgejo-{stack} and the ForgejoPushMirror retired in 0063d63. Actual shape: three resources into the bare forgejo/workflows singletons, spec.stack dead since 32a7fb0. Adds the deliberate-decommission runbook (confirm codeberg current → quiesce operator → strip finalizer → delete CR) and records why the push-mirror was retired, so it is not reintroduced.
    • chore(stack): drop provably-dead XRD surface — spec.oidc.* (consumer deleted with apis/oidc, 8efd0f4) and status.oidcReady/authDomain. Safe because nothing materialized them (Stack/alice had spec.oidc: null and an empty status), verified live first. spec.metrics.* and spec.tls.{issuerName,issuerKind} are equally dead but KEPT: the live claim holds them, and removing a property a claim still carries wedges the claim controller with field not declared in schema — on the Stack four Kustomizations healthCheck. instances/alice.yaml drops the metrics.storageSize value so a follow-up can delete the block cleanly. spec.tls.acmeServer also kept — it no longer controls anything (the live issuer renders from sean/pipelines bundle/dns) but carries the le-prod-approved: markers that tests/check-acme-approval.sh enforces.
    • docs: README.md API table listed ten deleted apis/ directories as current and drew them as Stack children; apis/stack/README.md had the same stale tree plus dns-gcp-alice, deleted outright in a8c1bcf. Both corrected to the five resources XStack actually composes, with notes on why XPortal is really the cluster edge.

    Included changes (v0.1.121 -> v0.1.122)

    • a0b1cf099594 docs(changelog): release notes for the repo-destruction safety floor + dead-XRD purge
    • 0710d73db241 chore(stack): drop provably-dead XRD surface; correct three stale docs
    • aa1bdfe4dad3 feat(safety): make repo destruction structurally unreachable from instances/
    Downloads