dot-iu-cutter v0.2 — Phase α Production Execution Report (2026-05-16)
dot-iu-cutter v0.2 — Phase α Production Execution Report
document_path: knowledge/dev/laws/dieu44-trien-khai/v0.2-execution/dot-iu-cutter-v0.2-phase-alpha-production-execution-report-2026-05-16.md
revision: r1
date: 2026-05-16
executed_utc: 2026-05-16T02:26:57Z .. 2026-05-16T02:27:30Z
author: Agent (Claude Code CLI, Opus 4.7 1M)
phase: v0.2 — Phase α PRODUCTION execution (C-01..C-08 executed; C-09 NOT triggered)
predecessor_gate: GPT PASS on Phase α Production Command Review Package (2026-05-16)
execution_status: success
production_touched: TRUE
ddl_executed: TRUE (C-07 only)
mutation_performed: TRUE (C-07 only)
rollback_executed: FALSE
self_advance: PROHIBITED — STOP, await GPT review
§1 — execution_status
execution_status: success
- C-01 → C-08 executed exactly as defined in the command-review package.
- C-07 (the single planned production-mutating command) committed atomically (psql exit 0).
- C-08 post-migration verification: 17/17 PASS (VA-1..VA-15 + VA-13rows + VA-16).
- C-09 rollback not triggered (C-08 passed; no rollback condition met).
- All 11 safety gates (G-1..G-11) held; no abort fired.
§2 — Production identity (G-4 / P-1)
host = vmi3080463 (VPS 38.242.240.89)
container = postgres
database = directus
migration role = workflow_admin (rolsuper = t)
server_version = 16.13 (Debian 16.13-1.pgdg13+1)
target distinct from dry-run env container 'pg-dry-run-v0.2-phase-alpha-2026-05-16' = confirmed
Provenance integrity (G-10): dry-run env container present; frozen r2 artefact
/opt/incomex/backups/dieu44_phase_alpha_2026-05-16/sql/dot-iu-cutter-v0.2-phase-alpha-r2.sql
sha256 verified == required before use.
§3 — Artefact directory + checksums
DEST = /opt/incomex/backups/dieu44_phase_alpha_prod_20260516T022657Z/
| Artefact | Path (under DEST) | SHA256 |
|---|---|---|
| Fresh prod backup (custom fmt, 64,587,082 B) | phase_alpha_prod_20260516T022657Z.dump |
e0b178a96f03283fba278eff66a0c351a7f81bedb8f71ffcc22982471352f449 |
| Pre-migration schema snapshot | schema/predll_schema_prod_20260516T022657Z.sql |
c5b1b695bc5732ba20787e24a7b8fc73c616d346b6694dbbcacbe1ed2efd2ec0 |
| Pre updated_at CSV (86 rows) | schema/prod_pre_updated_at_20260516T022657Z.csv |
07454b1d076e4b6ad5498d280a7fd6f70df4889f1fad2980265d8ca94989b3ad |
| Pre state probe | schema/pre_state_probe_20260516T022657Z.txt |
2e393cb0105e39cf6ad5501fe2cba4f8f5293ee080bcf10d82f58e18ababb167 |
| Frozen DDL r2 (source for C-07) | sql/dot-iu-cutter-v0.2-phase-alpha-r2.sql |
65533e0564ee45625b43bff383252ec03f20e284a5cc506d78e1079d6f893fe3 |
| Post-migration schema snapshot | schema/postddl_schema_prod_20260516T022657Z.sql |
aae7fc447d6eaea7c078649a94982660e84f9446d63a2b39edfe295bc84f33d8 |
| Post updated_at CSV (86 rows) | schema/prod_post_updated_at_20260516T022657Z.csv |
67ab51c7b4b87234aff4596d0309a6d480230ee8b5b0a0bc2d46c3d4f0db672b |
| Post state probe | schema/post_state_probe_20260516T022657Z.txt |
31899491964a61730f884f2322d3fa617bbc5b79ab79410a83aa21b9baca5930 |
| Schema DDL-line diff | schema/schema_ddl_diff_20260516T022657Z.txt |
ebc9da71a10174654bbbab8206c9ec0d6592be624dcf9475b0a192a453c60f0f |
Logs: logs/driver_*.log, logs/c06_preflight_*.txt, logs/c07_migration_*.out, logs/c08_verify_*.txt. Run summary: SUMMARY.txt. SHA256SUMS aggregates all of the above.
Backup freshness (G-2): backup_epoch = 1778898445; backup age at migration start = 2 s (limit 3600 s) — well within bound.
§4 — DDL source
ddl_source_path: $DEST/sql/dot-iu-cutter-v0.2-phase-alpha-r2.sql
ddl_source_sha256: 65533e0564ee45625b43bff383252ec03f20e284a5cc506d78e1079d6f893fe3
match_required: 65533e0564ee45625b43bff383252ec03f20e284a5cc506d78e1079d6f893fe3 → EXACT MATCH (G-3 PASS)
provenance: copied verbatim from the dry-run-frozen artefact (sha-proven by Phase α dry-run, GPT PASS_WITH_NOTES); NOT re-extracted (no whitespace/sha risk).
§5 — Command sequence summary
| Cmd | Action | Result |
|---|---|---|
| P-1/G-4 | Production identity | PASS (postgres/directus/workflow_admin/PG16.13) |
| G-10 | Dry-run provenance + frozen r2 sha | PASS |
| C-01 | Fresh prod backup (pg_dump -F c -Z 6, workflow_admin) |
PASS — 64,587,082 B, restorable (pg_restore --list = 2712 TOC entries) |
| C-02 | Backup checksum + freshness marker | PASS |
| C-03 | Pre-migration schema snapshot | PASS |
| C-04 | Pre-migration row-count + updated_at CSV (86 rows) | PASS |
| C-05 | Freeze DDL r2 + assert sha256 (G-3) | PASS |
| C-06 | Preflight P-3..P-10 (P-1/P-2 done earlier) | 10/10 PASS |
| G-2 | Backup age ≤ 3600 s at migration | PASS (2 s) |
| C-07 | Migration — single transaction, ON_ERROR_STOP=1, r2 only | psql exit 0, COMMIT |
| C-08 | Post-migration verification | 17/17 PASS |
| C-09 | Rollback | NOT TRIGGERED (no failure) |
§6 — C-06 preflight results
P-3 cutter_governance schema exists ............................. PASS
P-4 v0.1 5 tables exist ......................................... PASS
P-5 canonical_address_alias does NOT exist ...................... PASS
P-6 public.tac_logical_unit new cols do NOT exist ............... PASS
P-7 sandbox_tac.logical_unit new cols do NOT exist .............. PASS
P-8 count(public.tac_logical_unit) = 86 ......................... PASS
P-9 count(sandbox_tac.logical_unit) = 76 ........................ PASS
P-10 Q-CHK-1 section_type vocab all active ....................... PASS (0)
P-10 Q-CHK-2 parent_id resolution + doc_code parity ............. PASS (0)
P-10 Q-CHK-3 canonical_address regex defensive recheck .......... PASS (0)
P-1 (production identity) and P-2 (DDL checksum) confirmed at preamble — see §2, §4.
§7 — C-07 migration result
command: docker exec postgres psql -U workflow_admin -d directus -v ON_ERROR_STOP=1 --echo-errors -f /tmp/r2_phase_alpha.sql
psql_exit: 0
outcome: single BEGIN..COMMIT applied atomically; COMMIT reached
statements: 1×BEGIN, 3×SET LOCAL, 5×ALTER TABLE (add cols / set defaults),
UPDATE 86 (Step 3 BR-4 backfill), 1×CREATE TABLE, 4×CREATE INDEX,
6×COMMENT, 1×trailing SELECT, 1×COMMIT
In-transaction trailing SELECT (matches GPT r2 verification expectation exactly):
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
UPDATE 86 confirms the BR-4 backfill actually fired on all 86 rows (the decisive r2-vs-r1 evidence; the rejected r1 form would have shown UPDATE 0).
§8 — C-08 verification results
| ID | Check | Result | Detail |
|---|---|---|---|
| VA-1 | public new cols shape | PASS | authority:text:YES:'draft'::text; canonical_address_format_version:text:NO:'canonical-address-v1'::text |
| VA-2 | sandbox mirror cols shape | PASS | identical shape to VA-1 |
| VA-3 | alias table exists | PASS | 1 |
| VA-4 | alias 9 columns in order | PASS | alias_id,target_unit_id,alias_text,alias_kind,valid_from,valid_until,created_by,rationale,scenario_ref |
| VA-5 | alias 5 indexes | PASS | pkey + idx_alias_alias_kind/alias_text/target_unit_id/validity_window |
| VA-6 | public.authority distribution | PASS | draft=86 enacted=0 runtime=0 null=0 |
| VA-7 | public.format_version distribution | PASS | canonical-address-v1=86 |
| VA-8 | sandbox.authority distribution | PASS | null=76 nonnull=0 |
| VA-9 | sandbox.format_version distribution | PASS | canonical-address-v1=76 |
| VA-10 | alias row count | PASS | rows=0 |
| VA-11 | canonical_address unchanged | PASS | canonical_address:text:NO:NULL |
| VA-12 | UNIQUE constraint intact | PASS | UNIQUE (canonical_address) |
| VA-13 | cutter_governance 6 tables | PASS | 5 v0.1 + canonical_address_alias |
| VA-13rows | cutter_governance total rows | PASS | 0 |
| VA-14 | tac integrity rows:nonnull:distinct | PASS | 86:86:86 |
| VA-15 | sandbox rowcount | PASS | 76 |
| VA-16 | schema diff additions-only | PASS | removed=0, added=6 |
17/17 PASS. Pass thresholds identical to the dry-run verification-results doc; trailing SELECT exact; V-α-16 removed=0 (strictly additive).
VA-16 added DDL lines (all additive, all within Phase α scope):
> 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)
> CREATE TABLE cutter_governance.canonical_address_alias (
Zero removed lines. The 4 new columns (2 tables × authority + canonical_address_format_version) are pg_dump-inlined into the recreated CREATE TABLE bodies and are independently confirmed by VA-1/VA-2 — exactly as observed and accepted in the dry-run (N-3).
§9 — updated_at before/after measurement (mandatory, §5 of package)
| Metric | Pre (C-04) | Post (C-08) |
|---|---|---|
| rows with changed updated_at | — | 86 / 86 |
| distinct updated_at | 3 | 1 |
| min updated_at | 2026-04-29 05:27:37.951703+00 | 2026-05-16 02:27:27.789235+00 |
| max updated_at | 2026-04-30 03:12:19.569465+00 | 2026-05-16 02:27:27.789235+00 |
rows_changed: 86/86 (expected 86/86) — MATCH
assessment: EXPECTED & ACCEPTED. The Step 3 (operation b) BR-4 backfill UPDATE matched
all 86 public.tac_logical_unit rows; trg_tac_birth_gate_lu set
NEW.updated_at := now() on each → all 86 bumped to a single timestamp
(2026-05-16 02:27:27.789235+00; post distinct = 1).
dry-run reference: pre distinct=3 → post distinct=1; rows_changed=86/86 — production MATCHES dry-run exactly.
acceptance: accepted because every other preflight + verification check passed.
Positive evidence the backfill executed (rejected r1 form ⇒ rows_changed=0).
restore note: original updated_at values are NOT restorable by the §6 rollback;
recoverable only from the C-01 backup .dump
(sha e0b178a96f03283fba278eff66a0c351a7f81bedb8f71ffcc22982471352f449).
§10 — Created / changed objects
public.tac_logical_unit:
+ column authority text (nullable, DEFAULT 'draft' — set Step 4, post-backfill; future rows only)
+ column canonical_address_format_version text NOT NULL DEFAULT 'canonical-address-v1'
~ 86 rows: authority backfilled 'draft' via BR-4 CASE (all 86 were lifecycle_status='draft_only')
~ 86 rows: updated_at bumped (trg_tac_birth_gate_lu side effect — accepted)
sandbox_tac.logical_unit:
+ column authority text (nullable, DEFAULT 'draft'; 76 existing rows stay NULL — no backfill)
+ column canonical_address_format_version text NOT NULL DEFAULT 'canonical-address-v1' (76 rows → v1)
cutter_governance.canonical_address_alias:
+ CREATE TABLE (9 cols; soft uuid ref; no FK; no CHECK) — 0 rows
+ 4 indexes: idx_alias_alias_text, idx_alias_target_unit_id, idx_alias_alias_kind, idx_alias_validity_window
+ PK index canonical_address_alias_pkey (auto)
COMMENTs: 6 (2 tac cols, 2 sandbox cols, 1 table + 2 alias cols)
unchanged: public.tac_logical_unit.canonical_address (text NOT NULL, UNIQUE constraint intact);
all 5 v0.1 cutter_governance tables (present, 0 rows, unchanged)
§11 — Non-scope confirmation (NOT performed)
manifest_envelope created ......................... NO
manifest_unit_block created ....................... NO
review_decision created ........................... NO
identity_profile cleanup .......................... NO
alias rows inserted ............................... NO (canonical_address_alias created EMPTY, 0 rows)
production CUT run ................................ NO
production VERIFY run ............................. NO
Qdrant / vector / Agent-Data mutation ............. NO (no vector op issued)
app code deploy (nuxt/directus/agent-data) ........ NO (no container redeploy/restart)
NOT NULL promotion on authority ................... NO (Phase β)
CHECK constraint on authority ..................... NO (GPT Q3)
cross-schema FK ................................... NO (GPT Q2)
Directus collection-metadata registration ......... NO (out of Phase α)
SQL outside approved C-01..C-08 ................... NONE (only read-only rehearsal of preflight/assumptions pre-exec; no mutation)
scope self-expansion .............................. NONE
§12 — Rollback status
c09_rollback_executed: FALSE
reason: C-08 verification = 17/17 PASS; no rollback trigger condition (T-1..T-9) met.
in_transaction_failure: none (C-07 psql exit 0; COMMIT reached).
note: had C-08 failed, the driver would have STOPPED without auto-rollback,
preserving evidence for an explicit C-09 decision (rollback SQL not improvised;
it would have used rollback-draft r2 §3 verbatim). Not invoked.
§13 — Final posture
production CUT/VERIFY run: FALSE
Qdrant/vector touched: FALSE
deploy performed: FALSE
self_advance_to_v0.2_P0-2: PROHIBITED
manifest_design_started: FALSE
further_migration_run: FALSE
next_gate: GPT review of THIS execution report
§14 — Next recommended step
GPT review of this Phase α production execution report. Upon GPT ratification, the recommended next milestone is v0.2 P0-2 scoping (manifest_envelope / manifest_unit_block / review_decision family) under a fresh design → dry-run → command-review → execution chain. No work on P0-2 / manifest design / any further migration is performed in this session — execution stops here and awaits GPT review.
§15 — Cross-references
command_review_package: knowledge/dev/laws/dieu44-trien-khai/v0.2-execution/dot-iu-cutter-v0.2-phase-alpha-production-command-review-package-2026-05-16.md
command_review_gpt: knowledge/dev/laws/dieu44-trien-khai/reviews/dot-iu-cutter-v0.2-phase-alpha-production-command-review-gpt-review-2026-05-16.md
dry_run_gpt_review: knowledge/dev/laws/dieu44-trien-khai/reviews/dot-iu-cutter-v0.2-phase-alpha-dry-run-gpt-review-2026-05-16.md
dry_run_verif_results: 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
ddl_draft_r2: knowledge/dev/laws/dieu44-trien-khai/v0.2-ddl-authoring/dot-iu-cutter-v0.2-phase-alpha-ddl-draft-2026-05-15.sql.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
rollback_draft_r2: knowledge/dev/laws/dieu44-trien-khai/v0.2-ddl-authoring/dot-iu-cutter-v0.2-phase-alpha-rollback-draft-2026-05-15.md
artefact_dir (VPS): /opt/incomex/backups/dieu44_phase_alpha_prod_20260516T022657Z/
frozen_r2_sql (VPS): /opt/incomex/backups/dieu44_phase_alpha_2026-05-16/sql/dot-iu-cutter-v0.2-phase-alpha-r2.sql (sha 65533e05…893fe3)
exec_kit (VPS): /opt/incomex/backups/_phase_alpha_prod_exec_kit/ (driver+SQL; sha-stamped)
End of Phase α production execution report — execution_status: success. STOP; await GPT review.