|
Stage 4 close-out set: GA-R2 consolidation, skill sweep, snapshot, GA-R7 review
Every substantive Stage 4 item is closed or split to gate row G17. This is the GA-R6 close-out
set; only the operator-gated merge to `main` remains.
GA-R2 CONSOLIDATION: the 7 stage changelogs archived to docs/archive/changelogs/ (top-level
docs/ 25 -> 18, 113 archived total) and the stage record written at
docs/archive/stage-records/vr1-stage4-record.md. It records what the stage actually delivered
(READY handoff, not deployed nodes), the three things a future session should read first, and
the false-green pattern this stage kept surfacing. 12 stale `docs/changelog-*` paths in live
surfaces rewritten to the archive -- including several already dangling from the G12 close, so
every changelog reference in CURRENT-STATE / session-ledger / security-ledger now resolves.
SKILL SWEEP: three new INVARIANTS folded in --
- per-DC ARTIFACT DELIVERY is a per-DC STRATEGY (dc0 full mirror / dc1 caching proxy, D-135
amendments); checking dc1 as a mirror fails BY DESIGN. Corollary, learned the hard way: a
per-DC utility service OWNS ITS OWN network prerequisites -- never let one strategy's
teardown be able to break the other's.
- Stage 4 hands off READY nodes, NOT deployed ones (DOCFIX-200). Any surface saying "nodes
Deployed" as a Stage-4 exit is a defect; four were found and fixed. Consequence: nothing
node-side is probeable in Stage 4, which is why G17 exists.
- "A CHECKER THAT CANNOT FAIL IS NOT A GATE", with the working rules that came out of two
measured false greens: assert on CONTENT not existence; an unrecognised state REFUSES;
"could not look" is never "nothing there"; ENUMERATE what exists rather than only auditing
what is declared, because a register cannot report the absence of a row it does not have;
and when a test asserts a literal finding string, REPLACE the assertion, never delete it.
Plus two routing rows (per-DC artifact checks; D-137 as the credential-lifecycle authority).
SNAPSHOT REGENERATED: .claude/skills/openstack-cloud-ops-consolidated-20260727.md (1589 lines,
ASCII + LF byte-verified, all 7 sections). The superseded 20260725 snapshot is REMOVED rather
than kept alongside -- a stale snapshot being uploaded is the exact failure
docs/audit/skill-divergence-20260725.md records (a failed clone + a mis-shaped handoff), and it
is a derived artifact regenerable from any commit.
GA-R7 MEMORY REVIEW: NO new memory written -- everything durable from this stage graduated to
the skill and the repo, which is the correct GA-R7 outcome, not an omission. Both existing
entries verified against the repo (the finding-class baseline they cite does exist) and extended
with the two reasoning traps this stage produced: the register cannot see a credential it has no
ROW for, so enumerate what exists; and diagnose a denied call by checking whether an existing
rule failed to MATCH before blaming the classifier (the measured 2026-07-26 root cause). Also
marked the ask-vs-allow precedence claim UNVERIFIED so no future session relies on it.
Noted, not actioned (hard rule 1): T24's finding-class baseline covers TIER 1 only, so tier-2/3
classes have no baselined red state and a future false green there would not be caught.
Gauntlet ALL GREEN (81), repo-lint 0-fail.
Revert: git revert this commit; the changelog moves are renames and the snapshot is derived.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvCyrwvYTTcDYnRErfMsNf
|
|---|
|
|
| .claude/skills/openstack-cloud-ops-consolidated-20260725.md 100644 → 0 |
|---|
|
Too large (Show diff)
|
| .claude/skills/openstack-cloud-ops-consolidated-20260727.md 0 → 100644 |
|---|
|
Too large (Show diff)
|
| .claude/skills/openstack-cloud-ops/SKILL.md |
|---|
| docs/CURRENT-STATE.md |
|---|
| docs/archive/changelogs/changelog-20260723-caveman-optin-guard.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260723-stage4-open.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260724-caveman-disable.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260724-stage5-committee-fork1.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260725-maas-admin-recovery.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260726-d137-tier1.md 0 → 100644 |
|---|
| docs/archive/changelogs/changelog-20260727-creds-consolidation.md 0 → 100644 |
|---|
| docs/archive/stage-records/vr1-stage4-record.md 0 → 100644 |
|---|
| docs/changelog-20260723-caveman-optin-guard.md 100644 → 0 |
|---|
| docs/changelog-20260723-stage4-open.md 100644 → 0 |
|---|
| docs/changelog-20260724-caveman-disable.md 100644 → 0 |
|---|
| docs/changelog-20260724-stage5-committee-fork1.md 100644 → 0 |
|---|
| docs/changelog-20260725-maas-admin-recovery.md 100644 → 0 |
|---|
| docs/changelog-20260726-d137-tier1.md 100644 → 0 |
|---|
| docs/changelog-20260727-creds-consolidation.md 100644 → 0 |
|---|
| docs/security-ledger.md |
|---|
| docs/session-ledger.md |
|---|