KB-1DE4

dot-iu-cutter v0.5 — Constitution First Dry-Run: Verification & Cleanup Plan (no-production-mutation proof; reconstruction check; artifact-only cleanup)

8 min read Revision 1
dot-iu-cutterv0.5constitution-fixturefirst-dryrunverification-plancleanup-planno-production-mutationreconstruction-checkplanning-onlydieu442026-05-18

dot-iu-cutter v0.5 — Constitution First Dry-Run: Verification & Cleanup Plan

Phase: v0_5_constitution_first_dryrun_planning_and_command_review · Nature: verification_and_cleanup_PLAN_only__no_execution · Date: 2026-05-18 · doc 4 of 5

nothing_executed: true ; defines how a FUTURE authorized dry-run would be judged
applies_only_after: the §3-doc-3 missing command exists + GPT/User authorization
decision_authority: GPT / User ONLY ; self_advance: PROHIBITED

1. Verification plan (QG5 — the dry-run is correct AND mutated nothing)

Method = catalog/codepoint/structural assertions over the FROZEN snapshot region and the emitted manifest; never rendered-string equality (C-07 lesson). All checks fail-closed.

ID Check Pass criterion
V-1 snapshot rehash recompute sha256 of the snapshot BEGIN/END normalized-content region == 17660443e0f23e994e1807cf8e22920951a9e70c598956dbd0e752f4f5cae80c; length == 17522 (else ABORT, no parse)
V-2 marker census count ✅/📋/📝/⛔ in the region == {enacted:19, controlled_draft:1, draft:1, obsolete:1} (else ABORT)
V-3 no live fetch scan the run trace for any HTTP/live-URL access for identity/content zero live fetch; live URL = discovery_only; input == snapshot artifact only
V-4 version binding every manifest unit carries source_document_version_id == icxconst-008a06ace23a96ea6cd456146e805c97 for 100% of units; provenance references snapshot path + region sha (not live page)
V-5 enacted-only purity every candidate (in-scope) unit's span ⊆ a ✅-covered region 100%; zero candidate derived from a 📋/📝/⛔ region
V-6 exclusion itemised 📋 Điều 44, 📝 Điều 34, ⛔ obsolete entries present as EXCLUDED rows with reason each excluded node enumerated with reason; none silently dropped
V-7 coverage union(candidate spans ∪ explicitly-excluded spans ∪ classified-boilerplate) vs snapshot region covers the region with no gap
V-8 no-overlap pairwise span intersection over all manifest spans empty (no double-cut; no duplicated body)
V-9 addressing every unit address matches ICX-CONST/<path> (template at.icx.const.v4) well-formed; no duplicate canonical_address; status marker NEVER in address (encodes_status=false)
V-10 hierarchy every unit level ∈ {NGUYEN_TAC, KIEN_TRUC_SECTION, DIEU}; parent/child consistent no foreign level; no orphan child; no cycle
V-11 count guardrail exact candidate IU integer within [55, 78] (doc 2 §3); outside ⇒ investigate, do NOT auto-pass
V-12 determinism re-run on same snapshot+profile+refimpl.r1; compare manifest digest byte-identical manifest hash across runs
V-13 reconstruction from manifest spans, re-assemble the enacted-only subset reconstructed enacted text == concatenation of ✅ spans in canonical order; excluded markers separately listed & accounted
V-14 NO production mutation catalog row-count of production tables PRE vs POST Δ = 0 on tac_logical_unit, cutter_governance.* (incl. source_document_registry, source_document_version_registry, manifest_envelope, cut_change_set, verify_result, canonical_address_alias, dot_pair_signature, decision_backlog_*)
V-15 no CUT/VERIFY scan executed verbs / lanes zero fn_iu_create; zero CUT; zero VERIFY; no DOT-991/992 signature row written
V-16 identity unchanged system_identifier pre vs post (and source identity row unchanged) == 7611578671664259111 pre==post; source_document_version row byte-identical pre/post
V-17 no side-channel Directus / vector / NoSQL / git untouched no Directus mutation; no vector/NoSQL write; no git commit; iu-cutter tree clean at pinned commit
V-18 secret hygiene scan artifacts/logs no secret/password/.env content in any KB-uploaded artifact
verification_verdict_rule:
  PASS  iff V-1..V-18 all PASS
  FAIL  if any correctness check (V-4..V-13) fails while no mutation occurred
  BLOCKED if V-1/V-2 abort (drift) OR the missing command (doc 3 §3) is unresolved
  any V-14/V-15/V-16/V-17 failure = CRITICAL: dry-run invariant violated -> incident,
    not a normal FAIL (a dry-run must be net-zero on production by construction)

2. No-production-mutation proof (QG5, explicit)

proof_design:
  - the required command runs with --no-cut --no-verify --no-db-write --fail-closed
  - it executes in an ephemeral isolated env (DR-sysid ≠ prod 7611578671664259111,
    hard-abort if equal); production is touched READ-ONLY at most (sysid read)
  - PRE and POST integer row-counts of every production cut/governance/source table
    captured; assertion Δ==0 (V-14); source_document_version row hash pre==post (V-16)
  - the snapshot artifact is opened READ-ONLY (write-once; rev1) — never rewritten (V-1)
  - artifacts are written only to KB folder / throwaway scratch (doc 3 §4) — never a
    DB row; "DB write policy = NONE"; uncertainty resolves to no DB write

3. Rollback / cleanup plan (QG5; task §7)

case_A__artifact_only (the ONLY sanctioned case):
  writes:    KB docs under …/v0.5-constitution-first-dryrun/ ; optional throwaway
             scratch $WD (0700, not git-added)
  cleanup:   `shred`/`rm -rf $WD` at teardown; KB artifacts are intended deliverables
             (kept) — a superseded/incorrect manifest is marked SUPERSEDED in a new
             revision, never silently deleted (audit-preserving)
  rollback:  NOT APPLICABLE — no production mutation occurred (V-14/V-16 prove net-zero)
  isolated_env: ephemeral pg + harness containers `docker rm -f` by EXACT name;
             volume/network removed; 3 protected prior dry-run envs verified
             unchanged (docker inspect Id+StartedAt pre==post); no prune, no wildcard
case_B__any_DB_dry_run_table_proposed (NOT sanctioned here):
  status:    OUT OF SCOPE. Requires a SEPARATE design + GPT approval + an explicit
             rollback plan for those tables BEFORE proposal. This package forbids
             DB writes; do not create isolated dry-run IU tables under this phase.
production_rollback:
  none needed and none designed — because no production mutation is permitted
  (forward-compensation/backup-restore disaster paths belong to CUT/VERIFY phases,
  which are FORBIDDEN here)

4. Statement

  • QG5 satisfied: V-14/V-15/V-16/V-17 prove no production mutation, no CUT, no VERIFY; V-1/V-2 gate on pinned-snapshot integrity (not live page); V-13 is the reconstruction check (enacted-only re-assembly + itemised exclusions).
  • Cleanup is artifact-only (case A); DB-backed dry-run tables (case B) are out of scope and would need separate approval + rollback; no production rollback is designed because no production mutation is allowed.
  • doc 4 of 5; nothing executed; STOP after 5 docs → route GPT/User. Self-advance PROHIBITED.

Companion docs: operational-framing (1), readiness-and-scope (2), command-package (3), planning-report (5).

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-first-dryrun-planning/dot-iu-cutter-v0.5-constitution-first-dryrun-verification-and-cleanup-plan-2026-05-18.md