Clone Finalization — 07 Production Rollout Rehearsal (Tiers 1-6, gated) (2026-06-03)
07 — Production Rollout Rehearsal (Objective F)
Rehearsal only. Nothing executed against production. Entire rollout gated on os_proposal_approvals >= 1 (currently 0 → NO-GO). Clone is the evidence. Production has no axis substrate today (axis_tables=0) → full rollout spans 6 tiers.
Tiers, deltas, stop-gates
- Tier 0 Preflight (G_prod_00_preflight.sql): read-only; ABORT unless db=directus AND ospa≥1.
- Tier 1 Base axis substrate (prior pkg axis-topic-substrate G_prod_00–03): DDL, ratification-independent; +6 tables + base views.
- Tier 2 Ownership seed 30 anchors (prior full-coverage F-6 commit-on-ratification): GATED; owner_gap 210→0; +30 ownership.
- Tier 3 Axis/topic values + containment assignments (G_prod_20_containment_seed_GATED.sql + topic seed): GATED; +1 rule, +35 containment assign, +35 ownership; containment gap=0.
- Tier 4 Promotion: topic activation + kg ratification + reconcile decisions (G_prod_30_topic_finalization_GATED.sql + topic-promotion A): GATED; divergent=0, projection_gap=0.
- Tier 5 Scanner/candidate (prior topic-promotion D_scanner + full-coverage): DDL; +fn_governance_scan, scan_run, drift_state.
- Tier 6 Detector/reconcile/UI-API read views = finalization delta (G_prod_60_finalization_structure.sql = structural subset of A + D): DDL; +1 table, +5/6 view replacements.
- Tier 90 Verify (G_prod_90_verify.sql): critical=0, emittable=0.
- Tier 99 Rollback (G_prod_99_rollback.sql): reverts tiers 3/4/6 by tag.
Ordering rules
Structure tiers (1/5/6) ratification-independent (empty objects, honest gaps). Data seeds (2/3/4) are the accountable acts, each self-guarded ABORT unless ospa≥1. Tier-6 reconcile decisions are environment-specific: production re-derives its own orthogonal_facet/no_label_rule set from v_reconcile_collection_topic_vs_label (gated file does INSERT…SELECT WHERE reconcile_flag='orthogonal_facet') — clone names not copied.
Stop-gates (proven on clone, mirrored in prod)
Every gated file opens with DO $$ IF ospa<1 RAISE EXCEPTION $$ (no mutation if gate closed) and closes with a post-condition assertion (gap=0/divergent=0/critical=0) in the same txn (no partial commit).
Rollback
G_prod_99 reverses 6→4→3 (drop finalization views/table; delete PROD_* rows; revert kg-domain-x; drop CR-CONTAIN). Tiers 1/2 have their own rollback in base packages, left intact.
Verdict: rollout rehearsed end-to-end; final SQL, deltas, stop-gates, rollback produced. Execution NO-GO (ospa=0).