KB-A747

dot-iu-cutter v0.5 — Constitution First Dry-Run: Readiness & Scope (source identity READY; enacted_only; Điều 44 excluded; IU range estimated)

10 min read Revision 1
dot-iu-cutterv0.5constitution-fixturefirst-dryrunreadinessscopeenacted-onlydieu44-excludediu-count-rangeplanning-onlydieu442026-05-18

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 5

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

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