# Archived session body -- 2026-07-18 grounding-audit session (Phases 1-4)

Archived per GA-R4 rules 1-2 (first live compliance run of the ruling this
session recorded). The bounded summary lives in `docs/session-ledger.md`;
this file is the full narrative body. Status claims here are HISTORY --
status lives only in `docs/CURRENT-STATE.md` (GA-R1).

## Charter and scope

Session charter: `docs/audit/grounding-audit-charter.md` (commit `148dcef`)
plus operator scope amendments delivered at session start: Phase-1 scope
extended to CLAUDE.md, the openstack-cloud-ops skill tree, and the
auto-memory directory (read as on-disk evidence; auto-memory disabled for
the session by design); two operator provenance rulings on memory files
(review-after-each-step.md was a one-time instruction, not standing;
project-posture-closed-test.md recorded a stance never ruled -- security
posture returned to NEUTRAL); GA-R7 added to the Phase-4 queue; memory
hygiene + one skill line added to Phase 5. FULL FREEZE on fixes upheld for
the entire session: zero edits to any pre-audit surface.

## Phase 1 -- deterministic inventory (commits af2e312, e999b03, a6c47cf)

- Built `scripts/record-audit.py` + `tests/record-audit/` (24/24; gauntlet
  69 ALL GREEN): doc census (179 files), status-claim extraction (858
  rows), reference integrity. 12 contradiction groups on counted surfaces.
- Captured the outer plan: `docs/audit/outer-plan-20260718.txt` -- 7 to
  add, 2 to change, 7 to destroy, incl. voffice1 seed-volume FORCED
  REPLACEMENT (the defect that stopped the DC0 apply, commit `43b29d7`).
- Measured env snapshot: vcloud on -136 (bookend reboot had happened),
  both guests running autostart=enable, OpenTofu v1.12.4, MAAS 3.7.2,
  LXD 5.21.5 (`docs/audit/env-snapshot-20260718.md`).
- Findings register opened: GA-F01..GA-F14 (`grounding-audit-20260718.md`)
  incl. the churn-mechanism timeline correlation for GA-F06 (memory file
  stamped 06:41 mid-sweep on 07-16; reconciliation commits begin 15:47
  same day) and GA-F07 (fabricated "operator ruling" provenance).
- Ledger fences validated OK; R3-F09 confirmed resolved.
- Self-catch GA-F15: the audit's own outputs inflated ledger-scan's
  mention-derived counters twice (env snapshot wrapped line -> BUNDLEFIX;
  CURRENT-STATE draft section 9 -> DOCFIX, inside the sentence claiming
  DOCFIX unaffected). Both reworded token-free; counters re-verified.

## Phase 2 -- ground-truth rebuild (commits be1cd85, c49da79)

Fresh-context highest-tier agent authored `docs/CURRENT-STATE.md` (single
status authority; 15 gates G1-G15; expected plan count deliberately
UNRESOLVED pending D-130 per operator direction). ACCEPTED on independent
external review (all repo-checkable citations verified; section-10
re-derivation executed cold and held). Phase-4 drafting directives
recorded (size budget ~350, rotation, as-built division of authority).

## Phase 3 -- fresh-agent grounding test (commits 8dd0477, e57f321)

Three clean-context probes, identical prompts, independent, repo-only:
21/21 PASS with citations; all oriented CLAUDE.md -> SKILL ->
CURRENT-STATE.md unaided; all correctly refused to justify an apply.
Holes: H1 (entry-doc divergence; G9 row now names the canonical entry
path) + H2 (charter's stale 5/0/6; its own escape clause covers it).
ACCEPTED on external review (eight probe citations cold-verified; 21/21
judged earned). GA-F02 scope addition recorded: readiness banner demotes
to a pointer in Phase 5.

## G11 -- operator signature (commits 8cdbf4a, f7d0d0e)

Operator ran the section-10 verification block (executed in-session,
outputs reviewed at `8cdbf4a`; zero divergences across state list,
domains, plan capture, versions, counters, service probes) and signed:
"SIGNED Reviewed and all signoff conditions are met. I reviewed the
section-10 run outputs at 8cdbf4a. Jesse 7/18/2026" -- recorded verbatim
in CURRENT-STATE.md section 11. An earlier unfilled [SIGNED/DISPUTED]
template was correctly treated as ruling NOTHING (stop-and-ask), which
the operator then codified as GA-R5 rule 5.

## Phase 4 -- structural rulings (commits 343825d..d3beddb)

Eight rulings, eight exchanges, one per exchange, every Status block
carrying the paired question + exact operator utterance; drafts committed
before presentation (B2), as-ratified text diffable against each draft:
- GA-R3 D-number admission (A1 greppability test + D-129 split; A2
  as-built routing);
- GA-R5 ruling gate discipline (B1 paired question/answer + responsiveness
  rule; B2 draft diffability);
- GA-R1 single source of truth + 360-line cap + rotation + as-built
  division (C1 same-commit status rule -> repo-lint check queued; C2
  measurement-beats-document);
- GA-R2 changelog consolidation (D1 one-changelog-per-session; D2
  whole-docs disposition + manifested commits + counting scope);
- GA-R6 executable definition of done (E1 gate typing; E2 harnessed
  closers, vacuous pass = VOID; E3 no conditional close);
- GA-R4 ledger rotation (F1 cap-at-close semantics; F2 post-hoc closure
  of orphans; F3 security-ledger.md as SEC register of record);
- GA-R7 memory governance (G1 stage-close memory review; G2 auto-memory
  posture; G3 memory-is-scratch graduation rule);
- Stage-status vocabulary: Option A (OPEN/BLOCKED/HELD/CLOSED) + H1
  (mechanically complete token migration; event words are never states).
Phase 4 ACCEPTED on external review (whole-range freeze check clean).
G2 CLOSED (ruling-type, GA-R6/E1).

## Close-out state

- Phase 5 NOT opened this session. Sweep plan DRAFTED and pushed for
  external review: `docs/audit/phase5-sweep-plan.md` (commit `687dfa8`) --
  batches 0-6, GA-F/GA-R traced, dependency-ordered, per-batch gates and
  verification, v8->v7->D-130 chain with the operator's contingent lean.
- DC0 apply remains STOPPED at G9; D-130 unruled; expected plan triple
  UNRESOLVED (CURRENT-STATE section 5).
- Next session: FRESH normal operator session (auto-memory ENABLED per
  GA-R7 rule 8); first action = read the sweep plan + CURRENT-STATE.md.
  External review of the plan happens before the first gated batch.
- GA-R4 note at this close: the ledger's one-time rotation to <300 lines
  is Phase-5 Batch-4 work (rule 6); the F1 cap is therefore not yet
  enforceable at this close -- recorded here rather than silently skipped.
