|
P7: the Octavia amphora PKI becomes an actual pre-deploy gate
Operator: 'Yes, I accept the recommendation. Convert to a gate.' THE GAP: octavia-pki.sh was invoked by NOTHING executable. P4's CHECK 0 asserts only that the overlay FILE EXISTS, and the harness runs against throwaway fixtures -- so 'gauntlet ALL GREEN' said nothing about the live PKI and the only real check ran when a human remembered to type it. That is how F9 survived. Three problems solved, each from a measured precedent: 1. rc 3 must not reach note()'s *) arm. octavia-pki.sh uses exit 3 for REFUSE, but note() calls any rc>=3 'UNEXPECTED exit code'. P7 maps rc explicitly, so a REFUSE on the headend FAILS and is NAMED as an unevaluated trust domain. 2. HOST AUTHORITY. The PKI lives on the headend (D-109 (b)); elsewhere P7 says NOT EVALUATED (WARN) -- never a silent pass, never a hard FAIL for being on the jumphost. The binding is read from the SAME host-identity file octavia-pki.sh reads, so they cannot drift. P5's F6 defect designed out. 3. A PASS VERDICT IS NOT SUFFICIENT. While os-public-hostname is unset, A12/A13 RECORD a wrong-zone cert rather than failing it, so verify exits 0 on exactly the defect this gate exists to catch. P7 also requires the literal line 'DNS SANs are all in this DC.s expected zone'. Satisfiable by construction now that GEN.c derives the zone and both DCs were reissued. Also skips cleanly for vr0-dc0 (a gate that fires on a target it does not apply to is how gates get bypassed) and FAILS CLOSED if the checker is absent. HARNESS 26/26 -> 33/33. Ten existing cases went RED when P7 landed -- correctly, the fixtures had no octavia-pki.sh. Fixed by making mkfix model a healthy headend, NOT by patching cases one by one: that is the moment a gate gets demoted to a warning to go green. T27 is the case that matters -- a wrong-zone cert on which verify exits 0 must still FAIL P7. Two harness bugs of my own, caught by running not reading: a stub emitted DC.s where the real line has an apostrophe, then \x27\x27\x27 produced three of them because \x27 in a printf FORMAT already yields one. Fixed the stub, not the gate. Preflight's overall verdict is still FAIL -- that is P5 working as designed on the pre-existing red register. P7 itself passes on the headend. gauntlet ALL GREEN (89); repo-lint 0 fail. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf |
|---|
|
|
| docs/CURRENT-STATE.md |
|---|
| docs/changelog-20260730-octavia-reissue-tool.md |
|---|
| scripts/preflight.sh |
|---|
| tests/preflight/run-tests.sh |
|---|