KB-4AC3

dot-iu-cutter v0.5 — Snapshot MARK Test+Fixture Fix Report (fix_status=BLOCKED; test mismatch explained→recommend ratify 454d9fc8; fixture non-identity 86d6aea7≠17660443; no commit; STOP→GPT/User)

8 min read Revision 1

dot-iu-cutter v0.5 — Snapshot MARK Test Transport + Fixture CI Fix Report

Phase: v0_5_constitution_snapshot_MARK_test_transport_fixture_CI_fix · Nature: test_and_fixture_fix__BLOCKED_on_byte_transport__no_commit · Date: 2026-05-18 · doc 4 of 4

fix_status: BLOCKED
decision_authority: GPT / User ONLY ; self_advance: PROHIBITED

1. Required report fields

fix_status: BLOCKED
  # test-file mismatch EXPLAINED (transport artifact; recommend OPT_2 ratify);
  # fixture provisioning BLOCKED (pinned identity not byte-reproducible via transport)
test_file_hash_before: 454d9fc84e940fdcf9da10bf29d12c5c420e21b1147ccc8da6a29a81f2843a4a
test_file_hash_after : 454d9fc84e940fdcf9da10bf29d12c5c420e21b1147ccc8da6a29a81f2843a4a
  # UNCHANGED — not edited; line-for-line ≡ KB doc-2 verbatim block;
  # prior declared 31143968… is NOT byte-recoverable from KB
mismatch_explanation: KB-authoring transport/whitespace artifact, NOT a
  content change. dryrun.py from the same doc is byte-exact (f1f42e83…),
  proving transport is faithful for code; the repo test file is line-for-line
  identical to the patch-SSOT verbatim block; no whitespace/newline/CRLF
  variant reproduces 31143968 (bounded experiment, doc 1 §3). 31143968 was
  computed on a pre-embed scratch copy whose whitespace layout was lost when
  embedded into KB markdown.
fixture_path: tests/fixtures/constitution-normalized-17660443e0f23e99.md
  (GPT-preferred test-only path; NON-IDENTITY — quarantined, not wired;
   repo-root path intentionally left ABSENT to avoid a misleading run)
fixture_checksum_rehash: region_length 17522 == pinned ✓ ;
  marker_counts {enacted:19,controlled_draft:1,draft:1,obsolete:1} == pinned ✓ ;
  region_sha256 86d6aea7539d006f3e3af35b784b2599ff6dc6f330607939e4d86bde53097550
  != pinned 17660443e0f23e994e1807cf8e22920951a9e70c598956dbd0e752f4f5cae80c
  -> identity_match FALSE (NFC/NFD/NFKC/NFKD none match; ≥3× U+2013 EN-DASH
  class same-width substitution; transport not byte-faithful for this artifact)
tests_run: python3 -m unittest (pytest absent) — full suite + non-fixture subset
test_result: full 21 -> 14 ERROR (fixture-bound; no identity fixture) + 7 OK;
  non-fixture subset 7/7 PASS (dryrun.py byte-exact, no regression)
git_status_diff: branch feature/constitution-snapshot-mark-dryrun @ 4367c83
  (unchanged HEAD); untracked only: cutter_agent/dryrun.py,
  tests/test_dryrun_snapshot_mark.py, tests/fixtures/ ; tracked diff EMPTY;
  0 existing files modified; no staged/committed change; main untouched
commit_status: NOT_COMMITTED (GPT: no commit; also blocked pre-green CI)
downstream_not_executed: TRUE — no first Constitution dry-run, no CUT, no
  VERIFY, no production IU, no production DB write, no source_document/
  source_version mutation, no schema change, no Directus mutation, no
  deploy/restart, no remote/push, no self-advance
next_recommended_phase: GPT/User RULING + byte-exact transport supply (§4)

2. Quality gates

QG1 dryrun.py unchanged unless justified : PASS — UNCHANGED f1f42e83…
    (no defect found; explicitly not modified)
QG2 test mismatch explained or escalated  : PASS — explained (transport
    artifact) AND escalated with recommendation OPT_2 ratify 454d9fc8
QG3 fixture derived from pinned snapshot   : PASS — derived ONLY from the
    pinned KB artifact; BEGIN/END region preserved; len+markers exact;
    but byte-identity unreachable via transport -> BLOCKED & reported
QG4 local tests rerun                      : PASS — full + subset rerun,
    results recorded (doc 3)
QG5 no commit/deploy/dry-run/CUT/VERIFY/DB  : PASS — none performed
QG6 stop after uploading 4 files           : PASS — exactly 4 docs; STOP

3. What was done (chronological)

1 read KB SSOT: GPT BLOCKED ruling; code-authoring doc 2 (verbatim patch);
  pinned snapshot artifact; branch CI package
2 verified repo state: branch feature/constitution-snapshot-mark-dryrun,
  HEAD 4367c83, dryrun.py f1f42e83, test 454d9fc8, no commit
3 side-by-side: repo test file ≡ KB doc-2 verbatim block line-for-line
4 bounded recovery experiment: no whitespace/newline/CRLF variant -> 31143968
  => mismatch = KB-authoring transport artifact; recommend OPT_2 ratify
5 provisioned fixture from pinned artifact -> tests/fixtures/…; rehashed via
  cutter_agent.dryrun.extract_region: len 17522 ✓ markers 19/1/1/1 ✓ but
  sha 86d6aea7 ≠ 17660443 -> NON-IDENTITY (transport not byte-faithful);
  not wired to any test path (no false PASS); dryrun.py NOT touched
6 reran local unittest: 7/7 non-fixture PASS; 14 fixture-bound still ERROR
7 recorded git status/diff (no commit, HEAD unchanged); uploaded 4 docs; STOP
NOT done: commit, deploy, first dry-run, CUT, VERIFY, DB, Directus, mutate
  dryrun.py, character-guessing to force a hash, self-advance

4. Routed to GPT / User (sovereign)

ISSUE: markdown-fenced / KB-MCP-text transport is NOT byte-faithful for
  whitespace- and codepoint-significant artifacts. Two artifacts affected:
  (a) tests/test_dryrun_snapshot_mark.py — declared 31143968, transported 454d9fc8
  (b) pinned snapshot fixture — pinned 17660443, transported 86d6aea7
  (cutter_agent/dryrun.py was unaffected: byte-exact f1f42e83 — accepted.)
options:
  R1 (test file): ratify current 454d9fc8 as canonical (OPT_2 — recommended;
     side-by-side equivalent, dryrun.py byte-exact, 7/7 pass) AND update KB
     hash-of-record 31143968 -> 454d9fc8.
  R2 (fixture): publish the pinned snapshot as a BYTE-EXACT transport — a
     base64 / content-addressed blob in KB (decodes to region sha 17660443…),
     so a later gated phase can drop a byte-identity test-only fixture and
     run full 21/21 CI. (Markdown re-embed cannot carry it faithfully.)
  R3 (durable): adopt base64/content-addressed transport for ALL future
     iu-cutter patch + fixture artifacts (whitespace/codepoint-significant).
gating_unchanged: first Constitution dry-run, CUT, VERIFY, production DB,
  commit-to-default, deploy ALL remain SEPARATELY gated.

5. Explicit non-execution statement

  • No commit. No deploy/restart. No first Constitution dry-run. No CUT. No VERIFY. No production DB write. No source_document/source_version mutation. No schema change. No Directus mutation. No remote/push. cutter_agent/dryrun.py NOT modified (byte-exact f1f42e83 preserved). tests/test_dryrun_snapshot_mark.py NOT modified (454d9fc8 preserved). No character-guessing to force any hash. No self-advance.
  • Only actions: read-only KB/repo inspection, bounded deterministic hash experiments, additive quarantined non-identity fixture under tests/fixtures/ (not wired), local unittest rerun, git status read. Baseline main & HEAD 4367c83 byte-unchanged; fully reversible (delete the 3 untracked paths).
  • Exactly 4 docs under …/v0.5-constitution-snapshot-mark-test-transport-fixture-ci-fix/.
  • doc 4 of 4 — STOP. Route to GPT / User review for R1/R2/R3 (§4). Self-advance PROHIBITED.

Companion docs: test-transport-analysis (1), fixture-provision-log (2), ci-rerun-result (3).

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-snapshot-mark-test-transport-fixture-ci-fix/dot-iu-cutter-v0.5-snapshot-mark-test-fixture-fix-report-2026-05-18.md