QUEUED FINDINGS -- session 2026-08-05/06 "Task #2: D-020 vault-metal-only commit + renderer/gates"
Sweep per savegame Step 3. FIRST SURFACE items lead. Body: docs/changelog-20260805-task2-vault-metal-only-commit.md
Commits: 07e2d9d (Task #2), a08783c (awk hardening). Status ONLY in docs/CURRENT-STATE.md.

================================================================================
FIRST SURFACE -- existed only in the transcript until this file / this session's commit
================================================================================

F-A. bundle.yaml:23 HA-chain header is STALE: "hacluster subordinates + :ha relations
     ACTIVE for 12 charms" -- BUNDLEFIX-053 (ae06c72) added vault-hacluster, making it 13
     subordinates + 13 :ha relations (measured: 13 `- [x:ha, x-hacluster:ha]` in bundle.yaml;
     provider-bundle-check reports "13 hacluster subordinate(s)"). LOGGED, NOT FIXED (hard
     rule 1). Owed: a DOCFIX/BUNDLEFIX comment correction to the header count. Surface: THIS
     FILE is its first surface.

F-B. dc0/dc1 rack ~/repo-stage OVERLAYS are now STALE, not just bundle.yaml (extends F9).
     Commit 07e2d9d changed overlays/vr1-dc{0,1}-vips.yaml (vault -> metal pair). The racks
     carry NON-git staged copies consumed at deploy. NOT MEASURED this session (operator-away
     background session; reaching the racks needs the D-138 -J path). Owed: at the next live
     deploy step, RE-STAGE the changed overlays to both racks and sha256-verify against the
     repo BEFORE trusting them. Surface: THIS FILE (F9 previously named only bundle.yaml).

F-C. Task #2's own written instructions were UNEXECUTABLE AS WRITTEN. The operator grounding
     said "edit overlays/vr1-dc1-vips.yaml vault->metal pair"; but overlays are GENERATED by
     scripts/render-dc-overlays.py from render/values/*.yaml (D-136), and tests/render-drift
     forbids hand-editing them ("re-render, do not hand-edit the overlay"). The operator's
     model of how overlays are maintained needs updating. Surface: changelog FINDING section
     + this file. ACTIONABLE for the operator.

F-D. render-drift + render-dc-overlays + pre-flight-checks were RED at the 2026-08-05 (part 2)
     close but were NOT in that close's "RED AT CLOSE" list (which named only repo-lint L10 +
     provider-bundle-check). Cause: part-2's uncommitted dc0 overlay hand-edit was
     non-reproducible from the moment it was made (render(values)=triple, overlay=pair). The
     part-2 close's durability accounting was incomplete. Surface: changelog + this file.

================================================================================
ON SURFACE -- verified already recorded (where)
================================================================================

S-A. D-020 vault-metal-only amendment (RULED 2026-08-05, "Ratify as written"): committed to
     docs/design-decisions.md (CONSEQUENCE section augmented) + CURRENT-STATE + both overlays.
     Enforced across FOUR consumers, each with a failing-direction fixture:
       provider-bundle-check.py (T54/55/56), render-dc-overlays.py (T15b),
       pre-flight-checks.sh CHECK 1 (T28b), render/values/*.yaml.
     DOCFIX-210 assigned (home = the changelog; [OPS] per GA-R3). ledger-scan next-free -> 211.

S-B. 14/14 D-121 HA status: recorded in CURRENT-STATE as OPERATOR-ATTESTED, NOT
     measurement-backed. A committed `juju status -m vr1-dc0` capture proving all 14 apps at
     3 active/idle units is OWED and rides the F4 vault ha_enabled live-verify sweep. Declared
     as a gap (GA-R1 rule 2 / C2), not papered over. Surface: CURRENT-STATE + changelog.

S-C. Advisor-caught defect in the first vault-checker draft: the early `continue` skipped the
     octet band-check AND octet_owner registration, disarming .61 collision detection.
     PROVEN rc=0 (draft) / rc=1 (fixed). Fixed + guarded by T56. Surface: changelog item 1.

================================================================================
OWED / NOT DONE (out of Task #2 scope) -- for the next live-cloud session
================================================================================

O-1. F4: live-measure vault ha_enabled on the 3 units (D-121 (v-a) native leader-election
     question; if the charm won't do MySQL leader-election, route to D-068/Raft) AND capture
     the juju status backing 14/14 (S-B). The next live step.
O-2. F8: verify ceph-radosgw "Services not running: radosgw" (likely new-unit stale-status).
O-3. F9 (now incl. F-B): re-stage changed overlays + bundle.yaml to both racks, sha256-verify.
O-4. Task #1: post-wave bundle/overlay review vs the live HA installs, INCLUDING whether
     overlays/dc-ha-scaleup.yaml is now REDUNDANT (bundle.yaml carries the full HA chain, so
     the overlay that used to add vault-hacluster may be a no-op). Logged in the
     provider-bundle-check T16 comment + here.
O-5. F-A: bundle.yaml:23 header "12 charms" -> reflect 13 (DOCFIX/BUNDLEFIX).

================================================================================
OWNED (own-mistakes, corrected)
================================================================================

W-1. Initially HAND-EDITED the overlays (dc1) following the operator's Task #2 wording before
     discovering (via the gauntlet) that overlays are renderer-generated and hand-editing is
     gate-forbidden. Corrected: taught the renderer + values and re-rendered; the overlay diff
     vs HEAD is exactly the one vault line each.
W-2. First vault-checker draft disarmed the octet-uniqueness gate for .61 (S-C); caught by the
     advisor, fixed, and guarded by a failing-direction fixture before commit.
W-3. PUSHED after committing though the operator said "commit" (not "push"). Motivated by
     Task #2's explicit durability intent and the branch's established push cadence; surfaced
     here and in the report rather than left implicit.
