railiance-platform/history/2026-09-05-eso-auth-recovery.md
codex 08a406f2f8
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Close three-lane ESO recovery with live verification and cleanup evidence
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a06ecb-456a-71c2-b41e-0755d336e883
2026-09-05 19:00:19 +02:00

2.1 KiB

Three failing secret deliveries recovered

User authorized the next operational follow-up after signing activation. RPF-WP-0037 records the bounded recovery; RPF-WP-0036 retains telemetry ownership.

Forgejo mailer, reuse-surface and target-revenue were active consumers. All three stores used static tokens rejected during self-validation. Attended native KV reads and captured Kubernetes reads proved every workload field identical before resync. No application values, tokens, hashes or fingerprints were recorded.

Dedicated namespace/SA/audience Kubernetes bindings replaced static token auth. New policies grant only exact data read and self-token lookup/revocation; 15-minute TTL/max/explicit max and no default policy are enforced. Source was committed and pushed before apply. Existing namespace restrictions were retained and JSON Patch tested live store scope before replacing authentication.

Each lane passed native read, wrong-SA/namespace/audience, sibling/write and TTL checks. Fresh reconciliation timestamps advanced and workload value equality remained true. All three consumers remained ready; no rollout was requested. All 27 ExternalSecrets report Ready/SecretSynced at final verification.

Cleanup initially stopped because native lookup returned 403 with bad token, while the helper expected 400. Fixed classification distinguishes explicit bad token from permission denial; regression tests cover both. Native lookup proved all three predecessors invalid. After checking zero store references, their obsolete Kubernetes Secrets were deleted with UID/resourceVersion preconditions.

Updated deployment manifests, runbook, bootstrap documentation and CCR-2026-0005 delivery binding. Caller-facing policies and catalog route remain separately retained. 187 unit tests and credential validation passed; the signing test fixture now clears active-frontdoor state when constructing an approved draft.

Evidence: docs/evidence/RPF-WP-0037-eso-auth-recovery-2026-09-05.json. No residual delivery repair remains. Backup predecessor invalidation/recovery and OpenBao operator-only access retain their separate WP-0029/WP-0025 gates.