|
octavia-pki: a hardened, tool-driven controller-cert REISSUE path (F9's remedy)
Operator: 'Let's reissue now. Engineer the artifact, variable, based workflow to reduce the chance of errors.' Five GA-R5 rulings, one exchange each, quoted in the changelog; ruling 5 was 'Full script minter now'. THE TOOL IS BUILT; THE MINT IS NOT YET RUN (gated operator action, 1.0-REISSUE). scripts/octavia-pki.sh gains 'reissue <site> [--force] [--dry-run]': controller LEAF only, signed by the EXISTING controller CA (neither CA regenerated, amphora trust domain untouched), fresh P-256 key, zone DERIVED from the site token and never typed, printf-built config (the F8 payoff), stage-assert-promote, and a single-value overlay surgery that never puts the bundle in argv. SIX GATE DEFECTS FOUND BY VALIDATION AGENTS, ALL CLOSED. Mutation testing is what earned this: deleting the three assertions I had just written left the harness fully GREEN every time, so they were decoration until each got a failing-direction fixture. - A15 keyUsage/EKU on the ISSUED cert. A cert with NEITHER minted, promoted and passed everything. keyUsage appeared once in the file: the printf writing it. - A16 validity. openssl x509 -req defaults to -days 30, and checkend/notAfter/ enddate appeared ZERO times in verify -- a 30-day cert passed forever. - A17 the overlay must decode to what the workspace holds. A10 graded shape, A1-A16 graded the workspace, nothing joined them; a desynced overlay read PASS 0-failed and the overlay is what reaches the charm. - The re-run guard REFUSED to fix broken certs: names-correct + stale IP SAN gave verify FAIL and reissue exit 4 'nothing to fix'. Now gated on verify. - A8's negative proves its instrument loads first (openssl verify exits non-zero for 'could not load the CA' too, so a corrupt CA passed it vacuously). - Two pre-existing overlay defects moved pre-mint, so they stop producing a false exit-5 with the workspace already promoted. Harness 23/23 -> 48/48. Runbook Step 1.0-REISSUE appended AFTER GEN.e deliberately (F10 line-anchored mint-refs; creds-matrix reports no S4 findings after the append). Skill gains two standing invariants for future DC standups: every per-DC secret needs a ROTATION tool not just a generation recipe -- a REFUSE-IF-PRESENT generation gate makes the dangerous path the only path -- and a hand-pasted openssl chain is a defect class, with F8 and F9 as the receipts. Also corrected: D-137 fork 1 is NOT open (sub-ruling 1, 2026-07-25, ruled 'Blocking in preflight' and explicitly declined the PreToolUse guard), so the queued Q2 premise is stale in the same way Q1 was. gauntlet ALL GREEN (89); repo-lint 0 fail; creds-matrix 5 findings, all pre-existing and named; ledger-scan unchanged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| .claude/skills/openstack-cloud-ops/SKILL.md |
|---|
| docs/CURRENT-STATE.md |
|---|
| docs/changelog-20260730-octavia-reissue-tool.md 0 → 100644 |
|---|
| runbooks/phase-01-bundle-deploy.md |
|---|
| scripts/octavia-pki.sh |
|---|
|
Too large (Show diff)
|
| tests/octavia-pki/run-tests.sh |
|---|