KB-503C
dot-iu-cutter v0.2 — P0-6 + P0-5 Remainder Design Report (2026-05-16)
9 min read Revision 1
dot-iu-cutterdieu44v0.2p0-6p0-5-remainderdesign-reportconsolidatedready-for-gpt-review
dot-iu-cutter v0.2 — P0-6 + P0-5 Remainder Design Report
document_path: knowledge/dev/laws/dieu44-trien-khai/v0.2-design/dot-iu-cutter-v0.2-p0-6-p0-5-remainder-design-report-2026-05-16.md
revision: r1
date: 2026-05-16
author: Agent (Claude Code CLI, Opus 4.7 1M)
sovereign: User / anh Huyên
verifier: GPT (P0-6 + P0-5-remainder design review — PENDING)
phase: v0.2 — P0-6 + P0-5-remainder DESIGN CONSOLIDATED REPORT (logical only)
mutation_performed: false
ddl_written: false
dry_run_started: false
production_migration_allowed: false
predecessor: P0-2 — GPT PASS, LIVE (cutter_governance = 8)
§1 — Files Created (this set, all 2026-05-16, in …/v0.2-design/)
dot-iu-cutter-v0.2-p0-6-p0-5-remainder-batch-design-master-2026-05-16.mddot-iu-cutter-v0.2-p0-6-review-decision-design-2026-05-16.mddot-iu-cutter-v0.2-p0-5-decision-backlog-history-design-2026-05-16.mddot-iu-cutter-v0.2-p0-5-decision-backlog-dependency-design-2026-05-16.mddot-iu-cutter-v0.2-p0-5-decision-backlog-sweep-log-design-2026-05-16.mddot-iu-cutter-v0.2-p0-6-p0-5-remainder-risk-and-dry-run-plan-2026-05-16.md- (this file) design report
§2 — Live Baseline Confirmed
cutter_governance: LIVE, 8 tables, all empty
v0.1 (5): decision_backlog_entry, cut_change_set, cut_change_set_affected_row,
verify_result, dot_pair_signature
phase α (1): canonical_address_alias
p0-2 (2): manifest_envelope, manifest_unit_block
rollback_executed: false
scope_expansion: false
all_batch_parents_LIVE_and_EMPTY: TRUE (no new parent table required)
§3 — Recommended Design (summary)
P0-6 cutter_governance.review_decision (would be table #9):
identity: review_decision_id (uuid PK)
verdict: {PASS, FAIL, NEEDS_HUMAN}; status: pending..superseded
in_schema_FK: manifest_id→manifest_envelope (RD-1);
(manifest_id,unit_local_id)→manifest_unit_block nullable composite (RD-2);
prior/superseded_by → review_decision self (RD-3)
soft_uuid: escalation_ref→decision_backlog_entry; cut_change_set_ref→cut_change_set
jsonb (intent only): findings, reviewer_identity, reviewer_independence_evidence
umbrella: governance_event_kind='review_decision' (Đ44 Step 3 forward-compat)
P0-5 cutter_governance.decision_backlog_history (#10):
history_id uuid PK; decision_id → decision_backlog_entry (in-schema FK)
append-only Đ38 trail; change_kind enum; change_diff jsonb intent
P0-5 cutter_governance.decision_backlog_dependency (#11):
dependency_id uuid PK; from/to_decision_id → decision_backlog_entry (2 in-schema FKs)
dependency_kind {blocks,supersedes,refines,related_to}; cycles = app-layer (DBD-1)
P0-5 cutter_governance.decision_backlog_sweep_log (#12):
sweep_id uuid PK; NO FK (standalone audit); mirror_path = soft text
trigger_kind enum; denormalized counters; findings jsonb intent
constraints_honored:
- schema placement = cutter_governance (resolved; not re-opened)
- in-schema FK ONLY for in-family parent-child; soft uuid for cross-family
- NO cross-schema FK; NO FK to public.*
- NO PG CHECK / trigger / function / RLS / DEFAULT-data in this batch
- all 4 tables EMPTY at create; rollback = DROP empty table(s)
- NO backfill (P1/operational); split/merge & alias execution remain P1
§4 — Relationship to Live Objects (consolidated)
v0.1 decision_backlog_entry: in-schema FK parent for history + dependency; soft target
for review_decision.escalation_ref (P0-2 decoupling precedent)
v0.1 cut_change_set: soft target for review_decision.cut_change_set_ref (P0-3 cross-link)
v0.1 verify_result / dot_pair_signature / cut_change_set_affected_row: no edge
Phase α canonical_address_alias: NO coupling (INV-4; P1 emits)
P0-2 manifest_envelope / manifest_unit_block: in-schema FK targets for review_decision
public.tac_logical_unit: no FK; reached only via manifest (soft, P0-2-side)
no_existing_live_table_modified: TRUE (no column/constraint/trigger added anywhere)
§5 — Open Decisions (registered; NOT closed by Agent)
| ID | Topic | Owner | Lean | Blocks design review | Blocks DDL freeze |
|---|---|---|---|---|---|
| RD-1 | review.manifest_id FK vs soft | GPT | in-schema FK | No | Yes |
| RD-2 | unit-level composite FK vs soft pair | GPT | nullable composite FK | No | Yes |
| RD-3 | re-review chain self-FK vs soft | GPT | in-schema self-FK | No | Yes |
| RD-4 | verdict enum → Đ24 | Đ24+GPT | elevate | No | Yes |
| RD-5 | findings 10-item completeness | GPT+Đ44 | all-10-for-PASS | No | Yes |
| RD-6 | reviewer-independence enforcement | Đ32+GPT | app-layer v0.2 | No | Yes |
| DBH-1 | history granularity | GPT | status/version+critical | No | Yes |
| DBH-2 | change_kind enum owner | Đ24+GPT | cutter-local v0.2 | No | Yes |
| DBD-1 | dependency cycle detection | GPT | app-layer v0.2 | No | Yes |
| DBD-2 | dependency_kind enum owner | Đ24+GPT | cutter-local v0.2 | No | Yes |
| DBS-1 | sweep trigger_kind enum owner | Đ24+GPT | cutter-local v0.2 | No | Yes |
| BATCH-1 | enum impl: PG enum vs Đ24-lookup FK vs CHECK | Đ24+GPT | Đ24-lookup FK | No | Yes |
schema_placement: RESOLVED = cutter_governance (NOT an open decision in v0.2)
agent_self_close: FALSE (leans are for council/GPT consideration only)
§6 — Risk Class Estimate
STANDARD (estimate; not ratified here). Additive, empty, into a live schema; all
parents LIVE & empty; only in-family in-schema FKs + soft cross-family refs; no
live-table/Phase-α/P0-2 touch; no CUT/VERIFY; no data mutation; no backfill. 11 risk
surfaces enumerated (File 6 §2). The two field-level HIGH concerns (RS-5 reviewer
independence, RS-6 cross-sign omission) are P1 / application-layer enforcement, NOT
create-time risks — flagged for Đ32 attention, not escalating the create risk class.
§7 — Readiness
p0_6_p0_5_remainder_design_status: ready_for_gpt_review
all_7_docs_authored: TRUE
internally_consistent: TRUE
- fields re-cast from v0.1 P0-6 §4 + v0.1 P0-5 §4.2/§4.3/§4.4
- schema placement resolved to cutter_governance (v0.1 OPEN item closed by v0.2 reality)
- FK policy uniform: in-schema FK in-family; soft uuid cross-family; no cross-schema FK
- empty-at-create + DROP-table rollback consistent across all 4 tables
- risk STANDARD estimate consistent with v0.1 / Phase α / P0-2 additive precedent
- open decisions registered, none self-closed; DDL-freeze gate consistent everywhere
ddl_authoring_allowed: FALSE
reason: gated on §5 open-decision resolution + this design GPT-reviewed PASS + explicit prompt
mutation_performed: FALSE
dry_run_started: FALSE
production_migration_allowed: FALSE
what_gpt_review_should_decide:
- approve / revise the 7-doc batch
- confirm cutter_governance placement + in-schema-FK/soft-ref split is correct
- direct resolution path + owners for RD-* / DBH-* / DBD-* / DBS-* / BATCH-1
- (only after open-decision closure + this review PASS + explicit prompt) open DDL lane
agent_self_advance: PROHIBITED
§8 — Negative Confirmations
no_DDL_written: TRUE
no_SQL_executed: TRUE
no_CREATE_TABLE / ALTER / INSERT / UPDATE / DELETE: TRUE
no_migration: TRUE
no_dry_run_started: TRUE
no_dry_run_env_provisioned: TRUE
no_production_touch: TRUE
no_CUT_or_VERIFY: TRUE
no_alias_writes: TRUE
no_backfill: TRUE
no_split_merge_execution: TRUE
no_existing_file_or_table_modified: TRUE
no_open_decision_self_closed: TRUE
protected_dry_run_envs_untouched_this_session: TRUE
output_form: p0_6_p0_5_remainder_design_consolidated_report
§9 — Cross-References
batch_master: knowledge/dev/laws/dieu44-trien-khai/v0.2-design/dot-iu-cutter-v0.2-p0-6-p0-5-remainder-batch-design-master-2026-05-16.md
v0.1_p0_6_predecessor: knowledge/dev/laws/dieu44-trien-khai/migration-design/dot-iu-cutter-v0.1-p0-6-review-decision-migration-design-2026-05-15.md
v0.1_p0_5_predecessor: knowledge/dev/laws/dieu44-trien-khai/migration-design/dot-iu-cutter-v0.1-p0-5-decision-backlog-entry-migration-design-2026-05-15.md
p0_2_design_set: knowledge/dev/laws/dieu44-trien-khai/v0.2-design/dot-iu-cutter-v0.2-p0-2-*-2026-05-16.md
this_set: knowledge/dev/laws/dieu44-trien-khai/v0.2-design/dot-iu-cutter-v0.2-p0-6-p0-5-remainder-*-2026-05-16.md + p0-6-review-decision + p0-5-*
End of P0-6 + P0-5-remainder design report.