dot-iu-cutter v0.5 — Constitution First Dry-Run: Operational Framing (operations-first; pinned snapshot input; manifest-only output; NOTHING executed)
dot-iu-cutter v0.5 — Constitution First Dry-Run: Operational Framing
Phase:
v0_5_constitution_first_dryrun_planning_and_command_review· Nature:planning_and_command_review_only__no_dryrun__no_cut__no_verify__no_production_IU· Date: 2026-05-18 · doc 1 of 5nothing_executed: true ; dry_run: none ; cut: none ; verify: none ; production_mutation: none input_basis: pinned_normalized_snapshot_artifact (NOT live page) KB_is_SSOT: true ; decision_authority: GPT / User ONLY ; self_advance: PROHIBITED
This document is written operations-first (per the binding operating principle in
handoffs/dot-iu-cutter-current-operating-objectives-and-principles-2026-05-18.md):
operational goal → workflow state machine → marking/review model → safety/verification →
data/code. It defines what the first Constitution dry-run means before any mechanism.
1. What "Cắt Hiến pháp dry-run" means operationally
The long-term operator command is simply Cắt Hiến pháp. The first dry-run is the
controlled, read-only rehearsal of the front half of that command, with the destructive
half deliberately amputated.
operational_intent:
user_sentence: "Cắt Hiến pháp" (eventual one-command UX)
this_phase: rehearse the SEMANTIC SEGMENTATION DECISION only, prove it is
correct, lossless, and reproducible — WITHOUT creating any
Information Unit and WITHOUT touching production.
The cutter is a closed-loop decision workflow, not a splitter
(design/dot-iu-cutter-methodology-mark-review-cut-and-split-merge-principles-2026-05-14.md):
MARK → semantic segmentation: propose the cut manifest (candidate IUs)
REVIEW→ independent validation/repair of the manifest (coverage / no-overlap / vocab / hierarchy)
CUT → deterministic execution from an APPROVED manifest (fn_iu_create, production rows) ← FORBIDDEN this phase
VERIFY→ independent post-cut attestation (+15 matrix, lane/XOR) ← FORBIDDEN this phase
The first Constitution dry-run = MARK (+ REVIEW evaluation) over the pinned snapshot, stopping strictly before CUT. It answers, by evidence and on paper:
What source is being cut? -> the PINNED normalized snapshot artifact (frozen identity)
Where are the cut boundaries? -> proposed candidate-IU spans against grammar_profile
Why exactly there? -> cut_reason per unit (heading_boundary / independent_principle / ...)
Which content is in scope? -> enacted_only (✅) ; 📋/📝/⛔ explicitly EXCLUDED, not dropped
Does it lose or overlap text? -> coverage + no-overlap proof over the snapshot region
Is it reproducible? -> deterministic from a fixed snapshot + fixed grammar profile + refimpl.r1
dry_run_is:
- a manifest-producing rehearsal (candidate units, spans, addresses, cut_reason)
- a coverage / no-overlap / classification proof over a FROZEN input
- a determinism check (same snapshot + same profile => same manifest)
dry_run_is_NOT:
- an Information-Unit creation (no fn_iu_create, no tac_logical_unit / cutter_governance writes)
- a production mutation of any kind
- a live-page fetch for identity (live URL = discovery_only)
- a bulk / multi-document run
- a CUT or a VERIFY
2. Input — the pinned snapshot, not the live page (QG1)
input_authority:
source_document_ref: incomex-constitution
source_document_version_id: icxconst-008a06ace23a96ea6cd456146e805c97
source_checksum: 17660443e0f23e994e1807cf8e22920951a9e70c598956dbd0e752f4f5cae80c
source_basis: pinned_normalized_snapshot_artifact
snapshot_artifact_path: knowledge/dev/laws/dieu44-trien-khai/snapshots/constitution/constitution-normalized-17660443e0f23e99.md
parser_reference_impl: nuxt-incomex-portal-constitution-v1.refimpl.r1
grammar_profile: incomex-architecture-constitution-v4
live_url_role: discovery_only (NEVER an identity or input source for the dry-run)
The dry-run reads the BEGIN/END normalized-content region of the write-once snapshot artifact as the only segmentation input. The live Nuxt page is Nuxt-render-volatile and is excluded from the dry-run by construction. The snapshot is rehashed before parsing (see doc 4) so that a drifted/edited artifact aborts the run before any work.
3. Output — dry-run candidate artifacts only, never production IU
output_of_dry_run (allowed):
- a CUT MANIFEST (candidate IU list): per-unit manifest_id, source span over the
snapshot region, canonical_address_proposal (ICX-CONST/<path>), title,
section_type, unit_kind, level (NGUYEN_TAC | KIEN_TRUC_SECTION | DIEU),
parent, cut_reason, body_source_policy, status_marker_observed,
in_scope (enacted) | excluded (📋/📝/⛔ + reason), confidence
- a REVIEW EVALUATION over that manifest (coverage / no-overlap / cohesion /
vocab / hierarchy / size / edge-readiness)
- structured dry-run logs + a determinism digest (manifest hash)
output_of_dry_run (FORBIDDEN):
- any row in tac_logical_unit, cutter_governance.*, manifest_envelope,
cut_change_set, verify_result, canonical_address_alias, or any production table
- any source_document / source_document_version mutation
- any Directus / vector / NoSQL write
The manifest is data about a proposed cut, not the cut. No fn_iu_create is called.
4. What success looks like
success_definition (first Constitution dry-run, when later authorized):
S1 snapshot_rehash: recomputed region sha256 == 17660443…cae80c ; length == 17522
; marker_counts == {✅19, 📋1, 📝1, ⛔1} (else ABORT, no parse)
S2 input_provenance: manifest binds every unit to source_document_version_id
icxconst-008a06… + snapshot span; zero live-URL dependency
S3 scope_correct: only ✅-enacted content enters candidate IUs;
Điều 44 (📋), Điều 34 (📝), and the ⛔ obsolete entries
appear in the manifest ONLY as explicitly EXCLUDED rows
with a recorded reason (not silently dropped)
S4 coverage_no_overlap: candidate spans + explicitly-excluded spans together
cover the snapshot region with no gap and no overlap
S5 addressing: every unit has a unique ICX-CONST/<path> proposal;
no duplicate canonical_address; status NEVER in address
S6 hierarchy: levels resolve to the 3 ratified grammar levels
(NGUYEN_TAC / KIEN_TRUC_SECTION / DIEU); parent/child sane
S7 determinism: re-running on the same pinned snapshot + same grammar
profile + refimpl.r1 yields a byte-identical manifest
S8 reconstruction: the enacted-only subset can be reconstructed from the
manifest spans; excluded markers are itemised
S9 zero_production_touch: no production row created/changed; no CUT; no VERIFY;
system_identifier 7611578671664259111 unchanged
report:
operator_view: one of PASS / FAIL / BLOCKED with a one-line reason
technical_view: full manifest + coverage proof + determinism digest in KB
A dry-run that creates even one IU, touches production, or relies on the live page is a FAIL by definition, regardless of manifest quality.
5. Operational boundary of THIS phase
this_phase_produces: a planning + command-review package (5 KB docs) ONLY
this_phase_executes: NOTHING (no dry-run, no parse, no DB read of cutter_governance,
no SSH, no harness provisioning)
next_gate: GPT / User review of this package -> decide whether/how the
first Constitution dry-run command may exist and run
self_advance: PROHIBITED
Companion docs: readiness-and-scope (2), command-package (3), verification-and-cleanup-plan (4), planning-report (5).