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 ONLY

Scope 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.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-ws-q5-seed-privilege-revised-command-package/dot-iu-cutter-v0.5-WS-Q5-seed-rollback-revised-draft-2026-05-18.sql.md