58 — SB-12 Snapshot/Ruleset Rehearsal Results (BEGIN..ROLLBACK, entry==exit PASS, no COMMIT, 2026-06-01)
58 — SB-12 Snapshot/Ruleset Rehearsal Results (R-2)
Doc: 58. Role: Live
BEGIN..ROLLBACKrehearsal result for SB-12 (source-snapshot + ruleset-version registry; doc 38). Executes doc 48 Prompt 1 via the operator channel. Status: REHEARSAL RESULT — PASS. Author-modeBEGIN..ROLLBACK, ZERO COMMIT, entry==exit proven. Build NO-GO. Date: 2026-06-01. Channel:ssh contabo → docker exec -i postgres psql -U workflow_admin -d directus. Entry baseline: doc 57.
58.1 What was rehearsed
CREATE TABLE governance_ruleset(Option B, doc 38 §38.3):ruleset_versionPK,content_hash,status DEFAULT 'draft',owner_gov_code(= GOV-COUNCIL per C-7.2, nullable until ruled),activated_at/by,components jsonb,created_at.- Reuse
evolution_snapshots(zero schema change): one governance snapshot row (scope='governance.backfill'). - One draft
governance_rulesetrow to prove the table functions;statusstaysdraft(NOT activated — C-7.2 gate). - Proof law tables (
normative_registry,law_catalog,governance_docs) untouched inside the txn.
ruleset_version hash recipe (documented, doc 38 §38.5): 'gov-rs-' || left(sha256(canonical_json(140 enabled measurement_registry rows ⊕ profile ⊕ axis ⊕ scope, canonical ordering, absent-component marker)),12). Rehearsal used a placeholder hash; no law version bump — ruleset versioning is operational config versioning (C-7.2).
58.2 Transcript (verbatim)
===R2_SB12_PRE===
pre_ruleset | pre_evo | pre_evo_gov
-------------+---------+-------------
| 1 | 0
BEGIN SET SET SET CREATE TABLE
===R2_INTX_TABLE_VISIBLE=== intx_ruleset = governance_ruleset
INSERT 0 1 (evolution_snapshots governance row)
INSERT 0 1 (governance_ruleset draft row)
===R2_INTX_COUNTS===
intx_evo | intx_evo_gov | intx_ruleset_rows | ruleset_status
----------+--------------+-------------------+----------------
2 | 1 | 1 | draft
===R2_INTX_LAW_UNTOUCHED=== norm=47 | law=5 | govdocs=12
ROLLBACK
===R2_SB12_POST===
post_ruleset | post_evo | post_evo_gov
--------------+----------+--------------
| 1 | 0
Separate-session query_pg re-read after ROLLBACK: governance_ruleset = NULL, evolution_snapshots = 1, governance-scope = 0.
58.3 Entry==Exit
| Object | Pre | In-tx | Post (same session) | Post (separate session) | Equal? |
|---|---|---|---|---|---|
to_regclass('governance_ruleset') |
NULL | governance_ruleset | NULL | NULL | ✅ |
evolution_snapshots count |
1 | 2 | 1 | 1 | ✅ |
evolution_snapshots governance-scope |
0 | 1 | 0 | 0 | ✅ |
normative_registry / law_catalog / governance_docs |
47/5/12 | 47/5/12 | — | 47/5/12 (doc 64) | ✅ |
58.4 Success criteria (all met)
- ✅
governance_rulesetcreated then fully removed byROLLBACK(DROP-equivalent reversibility; greenfield, empty at create). - ✅ Zero row persisted in
evolution_snapshots/ law tables (byte-identical; doc 38 §38.10 #4). - ✅ Ruleset recorded
status='draft', not activated (C-7.2/C-7.3 gate respected). - ✅ Ruleset-version hash recipe documented; no law/version bump.
- ✅
os_proposal_approvalsstill 0; no COMMIT. Entry==Exit proven.
58.5 Verdict
R-2 SB-12 = PASS. DDL additive and reversible; reuse of evolution_snapshots works with no schema change. No drift on this object (the doc-48 evolution_snapshots insert column list matched live: snapshot_at, scope, metrics(NOT NULL), delta_previous, notes). Build remains NO-GO (needs C-7.2/C-7.3 ruling + sovereign + os_proposal_approvals>0).