KB-577D
dot-iu-cutter v0.5 WS-Q5 — Seed Rollback REVISED Draft (R-A exact DELETE / R-B lifecycle-retire; DO NOT EXECUTE)
6 min read Revision 1
dot-iu-cutterv0.5ws-q5seed-rollbackrevisedcompensationauthoring-onlynot-executedno-cascadedieu442026-05-18
dot-iu-cutter v0.5 WS-Q5 — Seed Rollback REVISED Draft
Phase:
v0_5_WS_Q5_seed_privilege_revised_command_package· Nature:command_package_revision_only / no_execution· Date: 2026-05-18 Inverts: seed-data-revised-draft (this package; 31 rows / 8 tables). Doctrine: hard delete is NOT the default — prefer deactivate/retire when data exists/referenced.⚠️ GATING BANNER — DO NOT EXECUTE
phase: seed_rollback_revision ; sql_executed: none ; cascade_used: false rollback_executed: false ; execution_authorized: false # QG8 self_advance: PROHIBITED ; decision_authority: GPT / User ONLYScope identical to the prior package's seed set (the revision did not change the 31-row executable subset — it made the 6-family deferral explicit). Two-path doctrine retained.
1. Path selection (read-only probe before choosing)
-- ALL must be 0 for PATH_R-A (clean exact-inverse DELETE) eligibility:
SELECT count(*) FROM cutter_governance.entity_reference_registry;
SELECT count(*) FROM cutter_governance.source_document_registry;
SELECT count(*) FROM cutter_governance.source_document_version_registry;
SELECT count(*) FROM cutter_governance.authority_override;
-- AND total seeded rows == 31 with registered_by/created_by='ws-q5-seed-bootstrap'
-- (verification-plan §1). Any downstream reference / extra row -> PATH_R-B.
2. PATH_R-A — exact-inverse DELETE, reverse FK order, NO CASCADE (DO NOT EXECUTE)
BEGIN;
DELETE FROM cutter_governance.metadata_key_registry
WHERE metadata_key IN ('idempotency_key');
DELETE FROM cutter_governance.source_family_registry
WHERE source_family IN ('internal_incomex_constitution','internal_incomex_law','external_government_law');
DELETE FROM cutter_governance.entity_kind_registry
WHERE entity_kind IN ('sql_entity','code_module','git_file','directus_item','report_path');
DELETE FROM cutter_governance.grammar_profile_status_marker
WHERE grammar_profile_ref='incomex-architecture-constitution-v4' AND marker IN ('✅','📋');
DELETE FROM cutter_governance.grammar_profile_level
WHERE (grammar_profile_ref='incomex-architecture-constitution-v4' AND level_seq IN (1,2,3))
OR (grammar_profile_ref='vn-national-law' AND level_seq IN (1,2,3,4,5));
DELETE FROM cutter_governance.grammar_profile
WHERE grammar_profile_ref IN ('incomex-architecture-constitution-v4','vn-national-law');
DELETE FROM cutter_governance.address_template_registry
WHERE address_template_ref IN ('at.icx.const.v4','at.vn.law');
DELETE FROM cutter_governance.matcher_config_registry
WHERE matcher_ref IN ('mc.icx.nguyen_tac','mc.icx.kien_truc','mc.icx.dieu',
'mc.vn.chuong','mc.vn.dieu','mc.vn.khoan','mc.vn.diem','mc.vn.doan');
COMMIT;
-- Post: 8 seeded tables back to 0 rows; the 12 WS-Q5 tables empty as at apply;
-- schema/constraints/owner/grants UNCHANGED by this (data-only) rollback;
-- zero data loss (rows were exactly the known bootstrap set).
3. PATH_R-B — lifecycle retire / forward-compensation (data exists/referenced; DO NOT EXECUTE)
-- Append-only doctrine: demote, do NOT delete. Only the lifecycle column is
-- touched. Child tables without a lifecycle column (grammar_profile_level /
-- grammar_profile_status_marker) retire via parent grammar_profile + supersede.
BEGIN;
UPDATE cutter_governance.matcher_config_registry SET lifecycle='deprecated' WHERE matcher_ref LIKE 'mc.icx.%' OR matcher_ref LIKE 'mc.vn.%';
UPDATE cutter_governance.address_template_registry SET lifecycle='deprecated' WHERE address_template_ref IN ('at.icx.const.v4','at.vn.law');
UPDATE cutter_governance.grammar_profile SET lifecycle='deprecated' WHERE grammar_profile_ref IN ('incomex-architecture-constitution-v4','vn-national-law');
UPDATE cutter_governance.source_family_registry SET lifecycle='deprecated' WHERE source_family IN ('internal_incomex_constitution','internal_incomex_law','external_government_law');
UPDATE cutter_governance.entity_kind_registry SET lifecycle='deprecated' WHERE entity_kind IN ('sql_entity','code_module','git_file','directus_item','report_path');
UPDATE cutter_governance.metadata_key_registry SET lifecycle='deprecated' WHERE metadata_key IN ('idempotency_key');
COMMIT;
-- Then supersede with corrected rows in a fresh sovereign-gated cycle;
-- quarantine writes on affected keys; ESCALATE to GPT/User. No DELETE.
4. Notes / flags
QG5_safe_for_seed_rows: yes — R-A only on known unreferenced seed PKs;
otherwise R-B retire (no hard delete). No CASCADE anywhere.
path_decision: RUNTIME determination at the future separately-authorized
execution phase, gated on §1 probe; Agent does NOT pre-decide; escalate
any ambiguity.
privilege_rollback: handled separately (privilege-rollback-revised-draft) —
this file is data-only.
5. Statements
- QG8: nothing executed. QG5/doctrine: hard delete only for known unreferenced seed rows; otherwise lifecycle-retire + escalate; no CASCADE.
- No GRANT, no schema ALTER, no Directus, no CUT/VERIFY, no deploy, no git commit, no self-advance.
- Self-advance PROHIBITED — doc 2 of 6; STOP → route GPT/User.
Companion: seed-data-revised-draft, privilege-grant-revised-draft, privilege-rollback-revised-draft, seed-privilege-revised-verification-plan, seed-privilege-revised-command-package-report.