KB-1E9F

dot-iu-cutter v0.5 — Constitution Status-Marker Amendment Verification Plan (pre/post/negative; catalog+codepoint; authoring)

8 min read Revision 1
dot-iu-cutterv0.5constitution-fixturestatus-marker-amendmentverification-plancodepointauthoring-onlynot-executeddieu442026-05-18

dot-iu-cutter v0.5 — Constitution Status-Marker Amendment Verification Plan

Phase: v0_5_constitution_status_marker_amendment_authoring · Nature: verification_authoring_only / no_execution · Date: 2026-05-18 Method (mandated): assert by UTF-8 hex codepoint (encode(convert_to(marker,'UTF8'),'hex')) and exact maps_to text, never by rendered glyph; catalog/codepoint preferred over rendered-string equality (C-07 / v0.3 / WS-Q5 SMV-2 lesson).

verification_executed: false ; authoring_only: true                # QG2
outcome_vocabulary: PASS | FAIL(detail)
self_advance: PROHIBITED ; decision_authority: GPT / User ONLY

This plan proves the §2 DML draft, when later executed under separate authorization, adds exactly 📝→draft and ⛔→obsolete while leaving ✅/📋 and all other profiles untouched.


0. Codepoint reference (assertion ground truth)

markers:
  "✅" enacted          : U+2705  UTF-8 hex e29c85    (PRE-EXISTING — must persist)
  "📋" controlled_draft : U+1F4CB UTF-8 hex f09f938b  (PRE-EXISTING — must persist)
  "📝" draft            : U+1F4DD UTF-8 hex f09f939d  (NEW — must appear)
  "⛔" obsolete         : U+26D4  UTF-8 hex e29b94    (NEW — must appear)
profile_ref: incomex-architecture-constitution-v4

1. PRE-checks (must hold BEFORE execution) — DO NOT EXECUTE

PRE-1  grammar_profile row exists & active
       SELECT lifecycle FROM cutter_governance.grammar_profile
        WHERE grammar_profile_ref='incomex-architecture-constitution-v4';
       EXPECT exactly 1 row, lifecycle='active'.

PRE-2  ✅ row present (pre-existing), correct codepoint+mapping
       encode(convert_to(marker,'UTF8'),'hex')='e29c85' AND maps_to='enacted'
       for that profile.                                            EXPECT 1.

PRE-3  📋 row present (pre-existing), correct codepoint+mapping
       hex='f09f938b' AND maps_to='controlled_draft' for profile.   EXPECT 1.

PRE-4  📝 ABSENT before execution
       count(*) WHERE profile AND hex(marker)='f09f939d'            EXPECT 0.

PRE-5  ⛔ ABSENT before execution
       count(*) WHERE profile AND hex(marker)='e29b94'              EXPECT 0.

PRE-6  exactly 2 marker rows for this profile pre-amendment
       count(*) FROM grammar_profile_status_marker
        WHERE grammar_profile_ref='incomex-architecture-constitution-v4'
       EXPECT 2.

PRE-7  baseline snapshot of OTHER profiles' marker rows (e.g. vn-national-law)
       — record count & key set for the unintended-touch check (POST-6).
       (WS-Q5 baseline: vn-national-law marker rows = 0.)
PRE_PASS := PRE-1..PRE-7 all as EXPECTED. Any deviation -> DO NOT EXECUTE; escalate.

2. POST-checks (must hold AFTER execution) — DO NOT EXECUTE

POST-1  exactly 4 marker rows for the profile
        count(*) WHERE grammar_profile_ref='incomex-architecture-constitution-v4'
        EXPECT 4  (was 2, +2 inserted).

POST-2  all 4 mappings present, codepoint-exact (the core proof)
        SELECT encode(convert_to(marker,'UTF8'),'hex') AS hx, maps_to
        FROM cutter_governance.grammar_profile_status_marker
        WHERE grammar_profile_ref='incomex-architecture-constitution-v4'
        ORDER BY hx;
        EXPECT exactly this set (no more, no fewer):
          e29b94    -> obsolete          (⛔ U+26D4)
          e29c85    -> enacted           (✅ U+2705)
          f09f938b  -> controlled_draft  (📋 U+1F4CB)
          f09f939d  -> draft             (📝 U+1F4DD)

POST-3  ✅ / 📋 PRESERVED unchanged (byte+mapping identical to PRE-2/PRE-3)
        e29c85->enacted still 1 row; f09f938b->controlled_draft still 1 row.

POST-4  📝 / ⛔ mapping exactness
        hex f09f939d -> maps_to='draft'   (exactly 1 row)
        hex e29b94   -> maps_to='obsolete'(exactly 1 row)

POST-5  NO duplicate marker rows
        SELECT marker, count(*) FROM grammar_profile_status_marker
        WHERE grammar_profile_ref='incomex-architecture-constitution-v4'
        GROUP BY marker HAVING count(*) > 1;                 EXPECT 0 rows.
        (also: no duplicate on (grammar_profile_ref,marker) pair overall.)

POST-6  NO unintended grammar profile touched
        marker rows for every grammar_profile_ref != 'incomex-architecture-
        constitution-v4' == PRE-7 baseline (count & key set identical).
        vn-national-law marker rows still 0.

POST-7  FK integrity intact
        anti-join grammar_profile_status_marker.grammar_profile_ref
        -> grammar_profile.grammar_profile_ref orphan = 0.

POST-8  parent / sibling registries UNCHANGED
        grammar_profile, grammar_profile_level, source_family_registry,
        address_template_registry row counts == pre-amendment snapshot.

POST-9  system_identifier unchanged (pre == post)  [WS-Q5: 7611578671664259111]
POST_PASS := POST-1..POST-9 all as EXPECTED.
overall_PASS := PRE_PASS AND POST_PASS.
fail_action: on any FAIL -> invoke rollback PATH_R-A pre-probe (rollback-draft §2);
  if pre-probe not clean -> PATH_R-C escalate. No CASCADE. Decision = GPT/User.

3. NEGATIVE checks (any TRUE ⇒ FAIL) — DO NOT EXECUTE

NEG-1  classification-only, NOT cut-eligibility: confirm no scope/policy object
       was changed by this amendment —
         source_family_registry.status_policy for internal_incomex_constitution
         / internal_incomex_law still = 'enacted_only' (unchanged).
       => adding 📝/⛔ recognizability does NOT enroll them into any cut scope.

NEG-2  first Constitution dry-run scope still enacted_only (ruling R2):
       no dry-run artifact/scope object includes 📋/📝/⛔; only ✅ is cut-scope.
       (Asserted as a documentation/design invariant — there is no dry-run in
       this phase; this check forbids any scope drift introduced by the amend.)

NEG-3  controlled-draft Điều 44 still deferred (ruling R3) — amendment did not
       flip 📋 controlled_draft into an included/enacted scope.

NEG-4  no UPDATE/DELETE side effect: ✅/📋 row ctid/content stable across the
       transaction (insert-only proven: pre count 2 -> post count 4, delta = +2,
       no row replaced).

NEG-5  no source_document / source_document_version row created
       (both registries still 0 rows).

NEG-6  no GRANT/REVOKE, no schema change, no Directus/vector mutation occurred
       around the amendment (relacl / catalog snapshot unchanged).
negative_PASS := NEG-1..NEG-6 all FALSE (i.e., none of the failure conditions hold).

4. What this plan can prove

proves:
  - all 4 marker->status mappings exist with EXACT UTF-8 codepoints (POST-2)
  - ✅ and 📋 preserved byte-identical (POST-3, NEG-4)
  - exactly +2 rows, no duplicates (POST-1/POST-5)
  - no other grammar profile touched (POST-6), FK intact (POST-7)
  - draft/obsolete remain NON-cut-eligible; dry-run scope still enacted_only
    and Điều 44 still deferred (NEG-1..NEG-3)
cannot_prove_here: nothing executed — these are assertions for the future
  separately-authorized command-review/execution gate (QG2).

5. Statements

  • QG6: plan proves all 4 mappings, codepoint-exact, no duplicates, no unintended profile touched. QG3: codepoint (hex) assertions, never glyph equality. QG4: ✅/📋 preservation explicitly asserted (POST-3/NEG-4). QG5: NEG-1..NEG-3 hold draft/obsolete non-cut-eligible and freeze dry-run scope. QG2: nothing executed.
  • Self-advance PROHIBITED — doc 3 of 4; STOP after package → route GPT/User command-review.

Companion: status-marker-amendment-DML-draft, status-marker-amendment-rollback-draft, status-marker-amendment-authoring-report.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.5-constitution-status-marker-amendment-authoring/dot-iu-cutter-v0.5-constitution-status-marker-amendment-verification-plan-2026-05-18.md