One-Roof Nonprod Clone — 09 Step F Rollback/Drop/Reset
09 — Step F: Rollback / Drop / Reset Plan
Verdict: PASS — full reversal proven; clone retained as evidence; teardown is one statement. SQL sql/F_rollback_drop_clone.sql sha256 709ecae44df57846c7fec8b9ead74f43d3544e6dabeee344eb447f63bf02fd72.
Rehearsal (BEGIN..ROLLBACK so clone keeps advanced state). Entry advanced: seed=30, gap=0, cand_obj=35, cand_state=5, scan_runs=2, ruleset=1. (1) Scanner write rollback FK-order object→state→scan_run→cursor→ruleset: DELETE 35/5/2/1/1 → all 0. (2) Ownership seed rollback DELETE FROM governance_object_ownership WHERE created_by='CLONE_TEST_F6_SEED': DELETE 30 → own=0, gap back to 210. (3) Assert clean baseline reachable (own=0 gap=210 candidates=0) OK. (4) ROLLBACK → clone retains seed=30 gap=0 cand_obj=35 cand_state=5 scan_runs=2.
Three reversal levers: seed rollback (DELETE by created_by=CLONE_TEST_F6_SEED) undo A; scanner rollback (FK-ordered DELETEs by ruleset_version=RS-CLONE-TEST-1 / run_id LIKE SCAN-CLONE-TEST-% / worker_name=clone-test-worker) undo C/E; drop (docker exec postgres psql -U workflow_admin -d postgres -c "DROP DATABASE IF EXISTS directus_gov_test_20260602;") remove clone.
Drop already proven (ran at clone creation, idempotent pre-clean). Reset-in-place alt: run levers 1+2 for real (BEGIN..COMMIT) → clean F-6 baseline without re-clone. Retention: clone intentionally retained (1.2GB of 22GB free) as evidence; droppable anytime; production unaffected.