KB-7E09
dot-iu-cutter v0.2 — Phase α Dry-Run Verification Results (2026-05-16)
7 min read Revision 1
dieu44-trien-khaidot-iu-cutterv0.2phase-alphadry-runverification-results2026-05-15
dot-iu-cutter v0.2 — Phase α Dry-Run Verification Results
document_path: knowledge/dev/laws/dieu44-trien-khai/v0.2-dry-run/dot-iu-cutter-v0.2-phase-alpha-dry-run-verification-results-2026-05-15.md
revision: r1
executed_utc: 2026-05-16T02:04:37Z
env: pg-dry-run-v0.2-phase-alpha-2026-05-16 (isolated; db=directus; user=workflow_admin)
r2_sql_sha256: 65533e0564ee45625b43bff383252ec03f20e284a5cc506d78e1079d6f893fe3
overall: PASS_WITH_NOTES
production_touched: FALSE
§1 — Pre-Backfill Sanity Checks (verification plan §3)
| Check | Query intent | Expected | Actual | Result |
|---|---|---|---|---|
| Q-CHK-1 | section_type vocab all active | 0 | 0 | PASS |
| Q-CHK-2 | parent_id resolution + doc_code parity | 0 | 0 | PASS |
| Q-CHK-3 | canonical_address regex defensive recheck | 0 | 0 | PASS |
Run on the pristine restored baseline before any DDL.
§2 — Post-DDL Verification Queries V-α-1 … V-α-16
| ID | Check | Expected | Actual | Result |
|---|---|---|---|---|
| V-α-1 | public.tac_logical_unit new cols | authority:text:YES:'draft'::text;canonical_address_format_version:text:NO:'canonical-address-v1'::text |
identical | PASS |
| V-α-2 | sandbox_tac.logical_unit mirror cols | same shape as V-α-1 | identical | PASS |
| V-α-3 | alias table exists | 1 | 1 | PASS |
| V-α-4 | alias 9 columns in order | alias_id,target_unit_id,alias_text,alias_kind,valid_from,valid_until,created_by,rationale,scenario_ref | identical | PASS |
| V-α-5 | alias 5 indexes | pkey + idx_alias_alias_kind/alias_text/target_unit_id/validity_window | identical | PASS |
| V-α-6 | public.authority distribution | draft=86 (no enacted/runtime/NULL) | draft=86 | PASS |
| V-α-7 | public.canonical_address_format_version | canonical-address-v1=86 | canonical-address-v1=86 | PASS |
| V-α-8 | sandbox.authority distribution | NULL=76 | NULL=76 | PASS |
| V-α-9 | sandbox.canonical_address_format_version | canonical-address-v1=76 | canonical-address-v1=76 | PASS |
| V-α-10 | alias rows | 0 | 0 | PASS |
| V-α-11 | canonical_address column unchanged | canonical_address:text:NO:NULL | identical | PASS |
| V-α-12 | UNIQUE constraint intact | 1:UNIQUE (canonical_address) | identical | PASS |
| V-α-13 | cutter_governance 6 tables | 5 v0.1 + canonical_address_alias | identical | PASS |
| V-α-13rows | cutter_governance total rows | 0 | 0 | PASS |
| V-α-14 | tac integrity rows:non-null:distinct | 86:86:86 | 86:86:86 | PASS |
| V-α-15 | sandbox rowcount | 76 | 76 | PASS |
| V-α-16 | schema diff additions-only | removed=0 | removed=0, added=6 | PASS |
16/16 PASS (plus V-α-13rows and integrity sub-checks).
V-α-16 added DDL lines (all additive, all within Phase α scope):
> CREATE TABLE cutter_governance.canonical_address_alias (
> ALTER TABLE ONLY cutter_governance.canonical_address_alias (PRIMARY KEY)
> CREATE INDEX idx_alias_alias_kind ON cutter_governance.canonical_address_alias USING btree (alias_kind)
> CREATE INDEX idx_alias_alias_text ON cutter_governance.canonical_address_alias USING btree (alias_text)
> CREATE INDEX idx_alias_target_unit_id ON cutter_governance.canonical_address_alias USING btree (target_unit_id)
> CREATE INDEX idx_alias_validity_window ON cutter_governance.canonical_address_alias USING btree (valid_from, valid_until DESC)
The 4 new columns (2 tables × authority + canonical_address_format_version) are rendered inline by pg_dump inside the recreated CREATE TABLE bodies, so they do not appear as separate ALTER lines; they are independently confirmed by V-α-1 and V-α-2. Zero removed lines → strictly additive.
§3 — In-Transaction Trailing SELECT (inside the committing run)
tac_authority_draft = 86
tac_authority_enacted = 0
tac_authority_runtime = 0
tac_authority_null = 0
tac_format_v1 = 86
sandbox_authority_null= 76
sandbox_format_v1 = 76
alias_table_present = 1
Matches the GPT r2 "required verification expectation" exactly.
§4 — updated_at Bump Measurement
| Metric | Value |
|---|---|
| rows with changed updated_at | 86 / 86 |
| pre-DDL distinct updated_at | 3 |
| post-DDL distinct updated_at | 1 |
| post-DDL updated_at value | 2026-05-16 02:04:38.444072+00 |
| assessment | EXPECTED — Step 3 backfill UPDATE matched all 86 (r2 add-without-default working as designed); trg_tac_birth_gate_lu set NEW.updated_at := now(). Documented/accepted side effect, not a defect. |
This is the decisive positive evidence the BR-4 backfill actually executed — under the rejected r1 form the UPDATE would have matched 0 rows and rows_changed would have been 0.
§5 — Rollback Test Result
| Aspect | Result |
|---|---|
| method | frozen r2 body, final COMMIT; → ROLLBACK; (variant: begin=1, commit=0, rollback=1) |
| psql exit | 0 |
| post-rollback tac|sbx|newcols|alias | 86|76|0|0 (pristine) |
| schema DDL-line diff (pre-DDL vs post-rollback) | EMPTY |
| full-file comparison | differs only by pg_dump \restrict random nonce (4 lines; 26031/26031 identical) — invocation noise |
| verdict | ROLLBACK_TEST_PASS |
§6 — Notes (the "WITH_NOTES")
N-1: updated_at bumped on all 86 rows by Step 3 backfill — expected & documented (DDL draft r2 §4; verification plan). Not a failure.
N-2: rollback full-file comparison "DIFFERS" is purely pg_dump per-invocation \restrict/\unrestrict nonce. Authoritative DDL-line diff is EMPTY.
N-3: V-a-16 surfaced 6 ALTER/CREATE additions; the 4 new columns are pg_dump-inlined and verified via V-a-1/V-a-2 instead. Zero removals — strictly additive.
No FAIL. No safety-critical failure. No STOP condition triggered.
§7 — Cross-References
execution_report: knowledge/dev/laws/dieu44-trien-khai/v0.2-dry-run/dot-iu-cutter-v0.2-phase-alpha-dry-run-execution-report-2026-05-15.md
artefact_index: knowledge/dev/laws/dieu44-trien-khai/v0.2-dry-run/dot-iu-cutter-v0.2-phase-alpha-dry-run-artefact-index-2026-05-15.md
verification_plan_r2: knowledge/dev/laws/dieu44-trien-khai/v0.2-ddl-authoring/dot-iu-cutter-v0.2-phase-alpha-ddl-verification-plan-2026-05-15.md
raw_results_artefact: /opt/incomex/backups/dieu44_phase_alpha_2026-05-16/logs/04_verification_results_20260516T020437Z.txt (sha256 cdbfd2dc…72fc)
End of Phase α dry-run verification results.