KB-6D5D

dot-iu-cutter v0.5 — Constitution CUT Command Review · Gap Report + Command Contract (BLOCKED_WITH_EXACT_GAP) (doc 3)

7 min read Revision 1
dot-iu-cutterv0.5constitution-cut-command-reviewgap-reportcommand-contractblocked-with-exact-gapminimal-unblockdieu442026-05-19

dot-iu-cutter v0.5 — Constitution CUT Command Review · Gap Report + Command Contract

doc 3 of 6 · review_design_only__no_execution · 2026-05-19 Outcome: BLOCKED_WITH_EXACT_GAP. A runnable production CUT command is NOT authored (authoring one would be fabrication against a non-existent entrypoint). This doc states the exact missing capability and the minimal, separately-gated unblock sequence.

1. Exact gap (evidence-grounded; see doc 2)

GAP-1 (controlling) no committed snapshot-manifest→CUT entrypoint:
  dryrun.py = MARK-only/import-isolated (cannot write); the v0.4 generic phases.cut() does
  not consume manifest 9d908a62… and refuses production. No committed module turns the
  accepted manifest into governed rows.
GAP-2 cut-plan PREVIEW entrypoint uncommitted + ungated:
  cutter_agent/cutplan.py + tests/test_cutplan_snapshot.py exist UNTRACKED (15/15 targeted
  GREEN) but are NOT committed and are pending a GPT/User commit-gate ruling (S2 escalation
  R1/R2/R3). No GPT ruling exists in KB reviews/. Even the safe no-DB first step is not yet
  ratified into the tree.
GAP-3 no information_unit writer / schema binding:
  ledger.py writes manifest/ledger/signature families but has NO `information_unit` insert.
  The live directus.public.information_unit schema (canonical_address/unit_kind/
  lifecycle_status/identity_profile/version_anchor_ref/parent_or_container_ref/
  conformance_status/doc_code/section_type/section_code) has no committed mapping from the
  60 manifest candidates. The CUT objective ("persist 60 canonical IU rows") has no
  implementing writer. (This also subsumes N-2: the IU-vs-container level decision is an
  input to this missing writer's design.)
GAP-4 production credential cycle / real signing not built:
  signing.py is Stub/Deferred ("no production key/secret in v0.4"); DeferredSigning raises;
  cli + db_adapter refuse production. cutter_exec/cutter_verify principals, DOT-991/992
  real signing, and the governed-ledger substrate GRANTs are design-only / unconfirmed.
GAP-5 no separate explicit production-DB-write authorization on record.
conclusion: production CUT = BLOCKED (missing-capability). Net effect identical in spirit
  to the MARK-lineage "R9" framing: the honest move is to declare the gap, not fabricate a
  command with flags against an entrypoint that does not exist.

2. CUT command — CONTRACT ONLY (NOT runnable today)

A production CUT command is WITHHELD (cannot be honestly written — GAP-1/3/4/5). The recommended first reviewable step remains the artifact-only cut-plan dry-run, whose entrypoint must first be committed via the gated S2 path:

# CONTRACT — requires the committed S2 cutplan entrypoint. DO NOT RUN (uncommitted today).
cd /Users/nmhuyen/iu-cutter-build/repo/iu-cutter      # branch feature/constitution-snapshot-mark-dryrun
WD="$(mktemp -d /tmp/icx-const-cutplan.XXXXXX)"; chmod 700 "$WD"   # OUTSIDE the repo
# step 0: regenerate the full manifest deterministically (N-1) into $WD/manifest.json
#         then assert sha256==7d56f3ce…012179 AND digest==9d908a62…dd324f  (else ABORT)
python3 -m cutter_agent.cutplan \
  --mode cut-plan-only --no-db-write --no-cut --no-verify --fail-closed \
  --manifest "$WD/manifest.json" \
  --expect-manifest-digest    9d908a62fcf01bb88e05a1af4335b960710006ddcfd21c811ca63efb33dd324f \
  --expect-manifest-file-sha  7d56f3ce066950ccef3de4156c5afeea81b2450b8e38393205b52c1fca012179 \
  --expect-candidate-count    60 \
  --source-version-id         icxconst-008a06ace23a96ea6cd456146e805c97 \
  --docprefix ICX-CONST --scope enacted_only --exclude-dieu-44 \
  --out-dir "$WD/cutplan" \
  --emit cut_plan.json,write_set_preview.jsonl,iu_mapping_preview.json,idempotency_keys_preview.json,dryrun_report.md
# net-zero: emits the 60-row IU set + ledger rows it WOULD insert; writes ZERO DB rows.
eventual_production_CUT (CONTRACT — needs ALL of: ratified manifest→CUT+IU-writer entrypoint
  · cutter_exec/cutter_verify credential cycle · substrate GRANTs · separate production-write
  approval):
  mandatory_flags: --manifest, --expect-manifest-digest 9d908a62…, --expect-manifest-file-sha
    7d56f3ce…, --expect-candidate-count 60, --source-version-id icxconst-008a06…,
    --exclude-dieu-44, --idempotent, --fail-closed ; production credential at connect-time only
  would_write (append-only, one atomic txn): 60 information_unit rows (one per candidate;
    canonical_address ICX-CONST/<path>; unit_kind ∈ {nguyen_tac,kien_truc_section,dieu};
    version_anchor_ref → source_document_version icxconst-008a06…; parent_or_container_ref
    linkage preserving reconstruction) + 1 cut_change_set + manifest_envelope/unit_block(60)
    + DOT-991 executor signature + decision_backlog_history → cut_applied. Điều 44 + 3
    excluded rows: ZERO rows. NO UPDATE-in-place except write-once superseded_by_*; NO
    DELETE/TRUNCATE.

3. Minimal unblock sequence (each step a SEPARATE GPT/User gate — no self-advance)

U-1  GPT/User commit-gate ruling on S2 (R1 ratify targeted-suite gate + commit the 2
     untracked files as-is, tracking the pre-existing security-test heuristic vs
     dryrun.py/cutplan.py DB-env guard token as a SEPARATE remediation; R2 remediate-first;
     R3 other). Recommended by S2E evidence: R1 (consistent with the MARK afb7bfc precedent).
U-2  (after U-1=R1) commit cutplan.py (sha 548eabc5…) + test_cutplan_snapshot.py
     (sha 06e871e7…) to the feature branch ONLY (no merge/push/tag/deploy).
U-3  separate command-review → GPT/User execution approval for the FIRST cut-plan dry-run
     (mirrors the MARK first-dry-run gate); N-1 manifest regen+sha-verify is its C-3 gate.
U-4  design → author → CI → commit the snapshot-manifest→CUT entrypoint INCLUDING the
     information_unit writer + schema binding (resolves GAP-3 / rules N-2 IU-vs-container);
     mirror the ratified MARK entrypoint lineage; feature branch only.
U-5  cutter_exec/cutter_verify credential cycle build + GPT review + governed-ledger
     substrate/GRANT confirmation (resolves GAP-4).
U-6  production CUT command-review + a separate explicit production-DB-write approval
     (resolves GAP-5). Only then is a runnable production CUT command authorable.

4. Why BLOCKED and not a green command (honesty statement)

- Fabricating `python3 -m <module> --flags …` against an entrypoint that is not committed
  (or does not exist) is the exact failure the MARK command-package explicitly forbade
  ("OMITTED ON PURPOSE … would crash"). The honest deliverable is the contract + the exact
  gap + the minimal gated unblock path — not a runnable command.
- Nothing here authorizes U-1..U-6; each is its own GPT/User-gated phase.

doc 3 of 6. Nothing executed. Self-advance PROHIBITED.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-cut-command-review/dot-iu-cutter-v0.5-cut-gap-report-and-command-contract-2026-05-19.md