KB-468F

dot-iu-cutter v0.5 — Constitution First Dry-Run: Command Package (REQUIRED command specified; status BLOCKED — snapshot-source MARK entrypoint missing)

9 min read Revision 1
dot-iu-cutterv0.5constitution-fixturefirst-dryruncommand-packageblockedmissing-commandsnapshot-source-markallowed-outputsplanning-onlydieu442026-05-18

dot-iu-cutter v0.5 — Constitution First Dry-Run: Command Package

Phase: v0_5_constitution_first_dryrun_planning_and_command_review · Nature: command_review_authoring_only__NOTHING_EXECUTED · Date: 2026-05-18 · doc 3 of 5

status: BLOCKED — required safe dry-run command does NOT exist as a ratified entrypoint
nothing_executed: true ; every command below is PROPOSED / pseudo, requiring a separate
                   GPT ruling + sovereign authorization AND a missing-capability fix first
decision_authority: GPT / User ONLY ; self_advance: PROHIBITED

1. Command-path finding (QG3)

existing_command_surface (KB-grounded):
  v0.4 pg-backed dry-run command-review : an ISOLATED restored-prod-DB harness that
    exercises the role/privilege matrix + scenario battery using `cutter_agent`
    (phases.mark) over PRE-EXISTING tac_logical_unit rows. It does NOT ingest a
    source document.
  v0.4 first controlled CUT/VERIFY command-review : MARK→SWEEP→REVIEW→CUT→VERIFY on
    ONE already-existing pinned tac_logical_unit PK. Upstream of MARK it assumes
    the IU rows already exist.
  v0.5 full-document dry-run-at-volume plan : explicitly "no real Hiến pháp
    ingestion here"; volume source = synthetic / replay of restored corpus.
gap:
  The step that turns the PINNED NORMALIZED SNAPSHOT TEXT into a Constitution
  CUT MANIFEST against grammar_profile incomex-architecture-constitution-v4
  (refimpl.r1) — i.e. the actual "Cắt Hiến pháp" segmentation — is, per KB SSOT,
  "undesigned/unauthorized — upstream of the cutter" (scale-index-risk-note item 5),
  and the canonicalization/address-grammar design is DESIGN-ONLY ("no parser runs").
  Matcher detection internals = OD-MC1 deferred; leaf granularity = OD-G2 unruled.
conclusion:
  No existing CLI/entrypoint supports the exact safe Constitution snapshot-source
  dry-run path. Per QG3 this package CLEARLY REPORTS THE MISSING COMMAND rather
  than fabricating a runnable one.  STATUS = BLOCKED.

2. The REQUIRED dry-run command — exact specification (pseudo; not runnable today)

This is the precise contract the missing entrypoint MUST satisfy. It is a specification for GPT/User to rule on, not an authorized command.

# PSEUDO — NOT RUNNABLE; requires the missing entrypoint (§3) + separate authorization.
# Isolation env reuses the proven pattern (ephemeral postgres:16, no published port,
# DR-sysid ≠ 7611578671664259111 hard abort, iu-cutter mounted READ-ONLY at pinned
# commit, ephemeral psycopg3 harness, env-destruction teardown, prod read-only only).

python -m cutter_agent.dryrun \
  --mode               mark-manifest-only \
  --no-cut --no-verify --no-db-write \
  --source-version-id  icxconst-008a06ace23a96ea6cd456146e805c97 \
  --snapshot-artifact  knowledge/dev/laws/dieu44-trien-khai/snapshots/constitution/constitution-normalized-17660443e0f23e99.md \
  --expect-region-sha  17660443e0f23e994e1807cf8e22920951a9e70c598956dbd0e752f4f5cae80c \
  --expect-length      17522 \
  --expect-markers     'enacted=19,controlled_draft=1,draft=1,obsolete=1' \
  --grammar-profile    incomex-architecture-constitution-v4 \
  --parser-refimpl     nuxt-incomex-portal-constitution-v1.refimpl.r1 \
  --scope              enacted_only \
  --exclude-markers    'controlled_draft,draft,obsolete' \
  --address-template   at.icx.const.v4 \
  --docprefix          ICX-CONST \
  --out-dir            $WD/manifest \
  --emit               manifest.json,review_eval.json,coverage_proof.json,determinism.digest \
  --fail-closed

2.1 Mandatory behaviour the command MUST enforce (gating)

B1 read source_document_version_id icxconst-008a06… and bind every manifest unit to it
B2 REHASH the snapshot BEGIN/END region BEFORE parsing; assert
   region_sha256 == 17660443…cae80c AND length == 17522 AND
   marker_counts == {✅19,📋1,📝1,⛔1}  ; any mismatch => ABORT (no parse, no output)
B3 parse using ONLY refimpl.r1 semantics for parser_profile
   nuxt-incomex-portal-constitution-v1 (R-RI3 N8: drop all empty lines) over the
   normalized snapshot content — NO live URL fetch (live = discovery_only)
B4 apply grammar_profile incomex-architecture-constitution-v4 (levels NGUYEN_TAC /
   KIEN_TRUC_SECTION / DIEU; address_template at.icx.const.v4; status NEVER in address)
B5 apply enacted_only: only ✅ spans become candidate IUs; 📋/📝/⛔ spans emitted
   as EXCLUDED rows with reason; ZERO silent drop (coverage must still close)
B6 write ONLY dry-run artifacts to $WD/manifest (files, §4); NO row in
   tac_logical_unit / cutter_governance.* / manifest_envelope / cut_change_set /
   verify_result / canonical_address_alias / any production or DR governance table
B7 NO CUT, NO VERIFY, NO fn_iu_create, NO production mutation, NO Directus/vector write
B8 fail-closed: any unrecognised marker / uncovered span / overlap / address
   collision / determinism mismatch => STOP with BLOCKED, partial output quarantined

3. The MISSING command / capability (what GPT/User must rule on)

missing_capability: cutter_agent snapshot-source MARK dry-run entrypoint
  ( e.g. `cutter_agent.dryrun --mode mark-manifest-only` )
why_missing:
  - no ratified code path ingests a normalized snapshot artifact + grammar profile
    and emits a cut manifest WITHOUT writing IU rows; MARK today presumes existing
    tac_logical_unit input or a restored-DB corpus
prerequisite_rulings (BLOCKING — none self-resolvable):
  M1 OD-MC1 : concrete matcher detection internals for mc.icx.nguyen_tac /
              mc.icx.kien_truc / mc.icx.dieu must be specified & ratified
  M2 OD-G2  : which grammar level is THE leaf-IU (Điều vs principle vs sub-bullet)
  M3 group-vs-row enacted rule: how ✅ at GROUP-header granularity (Nền tảng /
              Registry / Vận hành) maps to per-Điều enacted membership
  M4 a no-DB-write MARK dry-run mode must be designed + GPT-approved + code-pinned
     (commit pin, iu-cutter mounted read-only) BEFORE any execution command-review
  M5 isolation harness reuse confirmed (ephemeral pg, DR-sysid≠prod hard abort,
     env-destruction teardown) — pattern exists; binding to this mode does not
sequencing:
  ruling(M1,M2,M3) -> design+approve(M4) -> code+pin -> execution command-review
  -> (separate) authorized dry-run execution.  THIS phase is only the first link.

4. Allowed dry-run outputs (QG4)

primary_output_location (KB):
  knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-first-dryrun/
  files (when a future authorized run produces them):
    - …-manifest-2026-..md / .json        (candidate IU manifest)
    - …-review-evaluation-2026-..md       (coverage/no-overlap/vocab/hierarchy eval)
    - …-coverage-proof-2026-..md          (span reconciliation over the snapshot region)
    - …-determinism-digest-2026-..md      (manifest hash; re-run equality)
    - …-dryrun-report-2026-..md           (PASS/FAIL/BLOCKED + operator one-liner)
large_output_handling:
  if the manifest is too large for KB, write it to ephemeral local/throwaway
  scratch ($WD/manifest, 0700, never git-added, shredded at teardown) and upload
  ONLY a redacted summary + digests + the report to the KB folder above
forbidden_output_targets:
  - any production DB row (tac_logical_unit, cutter_governance.*, manifest_envelope,
    cut_change_set, cut_change_set_affected_row, verify_result,
    canonical_address_alias, dot_pair_signature, decision_backlog_*)
  - any DR/isolated governance table  (no approved isolated dry-run IU tables exist;
    DB writes are therefore FORBIDDEN — uncertainty resolves to "no DB write")
  - source_document_registry / source_document_version_registry (no mutation)
  - Directus, Qdrant/vector, NoSQL, git
db_write_policy: NONE. The dry-run is artifact-only. If any party later proposes a
  DB-backed dry-run table, that requires a SEPARATE design + GPT approval +
  rollback plan and is out of scope here (doc 4 §3).

5. Statement

  • QG3 satisfied by clearly reporting the MISSING command and specifying the exact required command contract (§2) + prerequisite rulings (§3). No runnable command is asserted because none exists; nothing was executed.
  • QG4 satisfied: allowed outputs are the …/v0.5-constitution-first-dryrun/ KB folder (or throwaway scratch + KB summary); all DB writes forbidden.
  • STATUS = BLOCKED. doc 3 of 5; STOP after 5 docs → route GPT/User. Self-advance PROHIBITED.

Companion docs: operational-framing (1), readiness-and-scope (2), 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-command-package-2026-05-18.md