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 5nothing_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).