dot-iu-cutter v0.5 — Constitution First Dry-Run: Readiness & Scope (source identity READY; enacted_only; Điều 44 excluded; IU range estimated)
dot-iu-cutter v0.5 — Constitution First Dry-Run: Readiness & Scope
Phase:
v0_5_constitution_first_dryrun_planning_and_command_review· Nature:readiness_check_plus_scope__no_execution· Date: 2026-05-18 · doc 2 of 5nothing_executed: true ; method: KB-SSOT grounding from closed-out production/verification docs decision_authority: GPT / User ONLY ; self_advance: PROHIBITED
1. Readiness checks (QG1, QG2)
Grounded from KB SSOT (closeout + verification-result docs), not from prior-session
memory. No live cutter_governance SELECT was run this phase (KB is the source of truth;
re-confirmation at execution time is a PRE-gate in doc 3/4).
| # | Readiness item | Required | KB evidence | Status |
|---|---|---|---|---|
| R1 | source_document exists, exactly once |
yes | source-seed-from-snapshot production verification-result: source_document_registry total = 1; ref incomex-constitution; docprefix ICX-CONST; closeout B5 = CLOSED |
READY |
| R2 | source_document_version exists, snapshot-bound, exactly once |
yes | verification-result: source_document_version_registry total = 1; document_version_id = icxconst-008a06ace23a96ea6cd456146e805c97; content_checksum = 17660443…cae80c; version_status = snapshot_captured |
READY |
| R3 | Snapshot artifact rehash passes (region sha256 == identity) | yes | verification-result: content_checksum == provenance.snapshot_artifact_checksum == 17660443…cae80c (CKSUM_MATCH=t); E1-rerun report ratified artifact …/snapshots/constitution/constitution-normalized-17660443e0f23e99.md rev1, write-once; snapshot front-matter normalized_content_length = 17522 |
READY (re-rehash mandatory at run time — doc 4) |
| R4 | Grammar profile exists & applicable | yes | grammar-applicability-review: grammar_profile_ref incomex-architecture-constitution-v4 lifecycle=active; address_template at.icx.const.v4; 3 levels NGUYEN_TAC/KIEN_TRUC_SECTION/DIEU all observed = level_structure PASS |
READY |
| R5 | Status-marker map has 4 markers | yes | status-marker-amendment closeout = CLOSED_PASS_LIVE; live map = ✅→enacted, 📋→controlled_draft, 📝→draft, ⛔→obsolete (4 rows); verification-result: grammar_profile_status_marker rows = 4 UNCHANGED |
READY |
| R6 | Scope policy = enacted_only | yes | verification-result: source_family_registry.status_policy(internal_incomex_constitution) = enacted_only UNCHANGED |
READY |
| R7 | Điều 44 excluded (controlled_draft deferred) | yes | verification-result: 📋 still maps controlled_draft; scope enacted_only -> STILL DEFERRED PASS |
READY |
| R8 | Parser reference implementation ratified | yes | parser-refimpl GPT ruling R-RI1: refimpl.r1 RATIFIED as canonical executor; snapshot front-matter parser_reference_implementation = nuxt-incomex-portal-constitution-v1.refimpl.r1, reference_script_sha256 = 8f6220c9… (provenance) |
READY |
| R9 | A safe snapshot→candidate-unit dry-run command/entrypoint exists | yes | NO KB evidence of a ratified entrypoint that ingests the snapshot and emits a Constitution cut manifest. scale-risk-note item 5: "Authoritative Hiến pháp source + ingestion (upstream of the cutter) — undesigned/unauthorized". canonicalization design = DESIGN-ONLY, "no parser runs". Matcher internals OD-MC1-deferred; leaf granularity OD-G2 unruled. | GAP — BLOCKED |
1.1 Readiness verdict
source_identity_foundation: READY (R1..R8 all PASS — B1/B5/B6/SC3 CLOSED)
dry_run_command_path: BLOCKED (R9 GAP — no ratified snapshot-source MARK entrypoint)
overall: NOT_READY_FOR_DRYRUN_EXECUTION_COMMAND_REVIEW
disposition: a command package CANNOT specify an exact runnable command;
it specifies the REQUIRED command + the MISSING capability
and routes the decision to GPT / User (doc 3)
Per task rule "If any readiness gap: flag BLOCKED, no command package": R1–R8 are all green and form a closed source-identity foundation; the only gap is R9 (no existing safe ingestion command). This package therefore proceeds to specify the missing command (QG3 — "or clearly report missing command") rather than fabricate a runnable command.
2. Dry-run scope (QG2)
in_scope:
status_marker: ✅ enacted ONLY
levels: NGUYEN_TAC (1..15) , KIEN_TRUC_SECTION (A/B/C) , DIEU (enacted catalog entries)
out_of_scope (must appear in manifest as EXPLICITLY EXCLUDED, with reason — never silently dropped):
📋 controlled_draft : Điều 44 (UOSL v0.1.2) -> reason: controlled_draft_deferred
📝 draft : Điều 34 (Luật Workflow) -> reason: draft_excluded_by_enacted_only
⛔ obsolete : Luật Luồng DL v1.1 ; Hiến pháp v3.9 -> reason: obsolete_excluded
non_content (classify, do not invent IUs):
preamble / version line / "TUYÊN NGÔN…|HẠ TẦNG" pointer / "THUẬT NGỮ" pointer /
CHANGELOG block -> body_source_policy = EXCLUDED_BOILERPLATE or CONTAINER_HEADING
(exact disposition is a REVIEW decision, recorded explicitly)
2.1 Expected marker census (from the pinned snapshot front-matter — authoritative)
marker_counts (pinned): { enacted: 19, controlled_draft: 1, draft: 1, obsolete: 1 }
Marker-placement note (observed in the snapshot region, material to OD-G2): the ✅ enacted marker is applied at group-header granularity for Nền tảng, Registry & Governance, and Vận hành (one ✅ per group header), and at per-Điều granularity inside Quản trị — ✅ BAN HÀNH (15 per-row ✅). 4 group/section ✅ + 15 per-row ✅ = 19. 📋=Điều 44, 📝=group Dự thảo→Điều 34, ⛔=group Lỗi thời (2 entries). The enacted marker is therefore NOT uniformly per-Điều — this directly drives the open OD-G2 leaf-granularity ruling and is a gating reason the exact IU count cannot be fixed pre-dry-run.
3. Expected IU count & hierarchy (range, not exact — QG2)
The exact count cannot be known before the dry-run because (a) OD-G2 "which level is THE leaf-IU" is unruled, (b) the enacted marker is group-level for 3 of 4 catalog groups, (c) container-heading vs leaf disposition of catalog rows is a REVIEW decision. An acceptable range with verification is defined instead.
observed_structure (from snapshot region, read-only analysis):
NGUYEN_TAC principles 1..15 : 15 (enacted block)
KIEN_TRUC_SECTION A / B / C : 3 (enacted)
DIEU catalog — enacted ✅ groups:
"Nền tảng — ✅" entries (0, 0-B, 0-G, 0-H, 0-S/M/L, 1) : ~6 (+1 pointer row "—/terminology")
"Registry & Governance — ✅" (2..9) : 8
"Vận hành — ✅" (10..20, 22) : 12
"Quản trị — ✅ BAN HÀNH" (24,26,28,29,30,31,32,33,35,36,37,38,39,41,43) : 15
container/parent heading units (principles parent, architecture parent,
3 catalog group headers) : ~5
EXCLUDED (documented, not IUs): Điều 44 (📋), Điều 34 (📝),
2 obsolete (⛔), boilerplate (preamble/version/pointers/CHANGELOG)
estimated_enacted_candidate_IU_range: 55 .. 78
lower bound : leaf = DIEU/principle only, catalog pointer rows folded into group containers
upper bound : leaf-IU per principle + per section + per enacted Điều entry + container headings counted
hierarchy_levels (must resolve to exactly the 3 ratified levels):
NGUYEN_TAC | KIEN_TRUC_SECTION | DIEU (no Chương/Khoản/Điểm — profile correctly omits)
3.1 How the range is verified by the dry-run
acceptance:
- dry-run MUST report the EXACT candidate IU count it produced (single integer)
- that count MUST fall in [55, 78]; outside the range => investigate, do NOT auto-accept
- excluded marker tally in the manifest MUST equal {📋:1, 📝:1, ⛔:>=1-group/2-entries}
and MUST itemise each excluded node with its reason
- every enacted candidate MUST trace to a ✅-covered span; zero enacted unit may
derive from a 📋/📝/⛔ region
- sum(level membership) reconciles: every unit ∈ {NGUYEN_TAC,KIEN_TRUC_SECTION,DIEU}
- the range is a GUARDRAIL, not a target; the authoritative pass criterion is
coverage + no-overlap + scope-correctness over the pinned snapshot region
open_rulings_that_will_sharpen_the_range (route to GPT/User, NOT self-resolved):
OD-G2 : which level is THE leaf-IU (Điều vs principle vs sub-bullet)
OD-MC1 : concrete matcher detection internals for mc.icx.nguyen_tac / kien_truc / dieu
group-vs-row enacted marker application rule for the 3 group-level ✅ catalog groups
4. Scope statement
- enacted_only enforced; 📋 Điều 44 / 📝 Điều 34 / ⛔ obsolete excluded and itemised, never silently dropped (QG2). Input = pinned snapshot identity, not live page (QG1).
- Source-identity foundation = READY (R1–R8). Command path = BLOCKED (R9). Overall NOT ready for dry-run execution; proceed to specify the missing command (doc 3).
- doc 2 of 5; nothing executed; STOP after 5 docs → route GPT/User. Self-advance PROHIBITED.
Companion docs: operational-framing (1), command-package (3), verification-and-cleanup-plan (4), planning-report (5).