# stages-reached -- which mint stages THIS deployment has completed (D-137 tier 2). # # WHY THIS FILE EXISTS. Tier 2 must distinguish "this credential is MISSING" from "this # credential has not been minted YET". That distinction is a STATUS fact, and GA-R1 puts # status in docs/CURRENT-STATE.md and nowhere else -- so the checker carries no stage list # of its own, and until now the caller typed one on the command line with --pending-stage. # A gate whose verdict depends on a hand-typed parameter can be widened silently, so the # declaration moved here: config-as-data with a drift gate, the pattern the repo already # uses for state-bearing surfaces. # # THIS FILE IS A DERIVED STATUS CLAIM. docs/CURRENT-STATE.md remains the authority; this is # a machine-readable projection of it, and repo-lint L12 FAILS if it is edited without # CURRENT-STATE being touched in the same change set (the L10 pattern). If the two ever # disagree, CURRENT-STATE wins and this file is the defect. # # EXHAUSTIVE BY CONSTRUCTION. Every `mint-stage` token used in creds-matrix.tsv must appear # here exactly once. The checker FAILS on an unclassified token rather than defaulting it, # because either default is wrong in a dangerous direction: defaulting to `reached` floods # the run with false absences, and defaulting to `pending` silently defers real ones -- a # false green, which is the failure class this whole control exists to prevent. # # FORMAT. Whitespace-separated: <mint-stage-token> <reached|pending> # reached the stage has RUN in this deployment; its credentials are expected NOW and a # missing one is a real finding. # pending the stage has NOT run; its credentials are deferred, reported as an explicit # [ok] skip, never as a silent pass. # `#` comments and blank lines ignored. # # EVIDENCE for the current values (docs/CURRENT-STATE.md section 1): Stage 3 / Phase 2 is # CLOSED for both DCs; Stage 4 / Phase 3 is OPEN and executing; "stages 5-7 are authored, # not executed". The VR0 `phase-NN` track is the SEPARATE single-DC testcloud lineage -- do # NOT conflate the two numbering tracks (the operating skill warns on exactly this) -- and # none of its credential artifacts exist on this jumphost (measured 2026-07-26: the Vault # init and Octavia PKI directories are absent). # --- VR1 DC-DC track ------------------------------------------------------------------- stage2 reached # Office1 headend standup: region MAAS, LXD, NetBox stage3 reached # per-DC substrate: rack, edge, node VMs, power + service keys # stage4 is deliberately ABSENT: Stage 4 (MAAS enlist/commission/deploy) is OPEN and # executing, but it MINTS NO CREDENTIAL -- no matrix row carries it. The exhaustiveness # check flags a classified-but-unused token as a stale declaration, which is how this was # caught; a stage only belongs here once a credential is attributed to it. stage5 pending # Juju bootstrap + per-DC bundle deploy -- authored, not executed stage6 pending # DR / rbd-mirror / radosgw multisite -- authored, not executed # --- VR0 single-DC testcloud track (separate lineage; artifacts absent here) ------------ vr0-phase01 pending # bundle deploy + Octavia PKI generation vr0-phase02 pending # Vault bring-up (unseal shares, root token, charm-pki-local) vr0-phase03 pending # admin-openrc materialization vr0-phase06 pending # CAPI stack / mgmt cluster kubeconfig vr0-phase07 pending # Magnum conductor graft # --- not stage-scoped ------------------------------------------------------------------ tenant-onboard pending # per-tenant credential set; no tenant onboarded on this cloud adhoc reached # one-off mints (the 2026-07-25 `operator` MAAS superuser) - reached # rows with no stage: present-or-absent judged on their own