KB-294B
dot-iu-cutter v0.2 — Structural Schema Inventory (12 tables, cutter_governance) (2026-05-16)
7 min read Revision 1
dot-iu-cutterdieu44v0.2inventoryschemacutter_governancecloseout
dot-iu-cutter v0.2 — Structural Schema Inventory
document_path: knowledge/dev/laws/dieu44-trien-khai/v0.2-execution/dot-iu-cutter-v0.2-structural-schema-inventory-2026-05-16.md
revision: r1
date: 2026-05-16
author: Agent (Claude Code CLI, Opus 4.7 1M)
phase: v0.2 — CLOSEOUT inventory (read-only production introspection)
source: live production (container postgres / db directus / sysid 7611578671664259111), 2026-05-16
schema: cutter_governance | table_count: 12 | total_rows: 0
Read-only catalog snapshot of the completed v0.2 structural schema. All 12 tables are EMPTY (0 rows). No mutation performed to produce this inventory.
§1 — Table Inventory (all 12; source phase, columns, rows, PK)
| # | Table | Source phase | Cols | Rows | Empty | Primary Key |
|---|---|---|---|---|---|---|
| 1 | decision_backlog_entry |
v0.1 | 6 | 0 | yes | (entry_id) |
| 2 | dot_pair_signature |
v0.1 | 16 | 0 | yes | (signature_id) |
| 3 | cut_change_set |
v0.1 | 24 | 0 | yes | (change_set_id) |
| 4 | cut_change_set_affected_row |
v0.1 | 8 | 0 | yes | (affected_row_id) |
| 5 | verify_result |
v0.1 | 26 | 0 | yes | (verify_result_id) |
| 6 | canonical_address_alias |
Phase α | 9 | 0 | yes | (alias_id) |
| 7 | manifest_envelope |
P0-2 | 12 | 0 | yes | (envelope_id) |
| 8 | manifest_unit_block |
P0-2 | 13 | 0 | yes | (envelope_id, unit_local_id) |
| 9 | review_decision |
P0-6 | 25 | 0 | yes | (review_decision_id) |
| 10 | decision_backlog_history |
P0-5-remainder | 9 | 0 | yes | (history_id) |
| 11 | decision_backlog_dependency |
P0-5-remainder | 6 | 0 | yes | (dependency_id) |
| 12 | decision_backlog_sweep_log |
P0-5-remainder | 10 | 0 | yes | (sweep_id) |
source_phase_rollup:
v0_1: 5 (decision_backlog_entry, dot_pair_signature, cut_change_set,
cut_change_set_affected_row, verify_result)
phase_alpha: 1 (canonical_address_alias)
P0_2: 2 (manifest_envelope, manifest_unit_block)
P0_6_P0_5_remainder: 4 (review_decision, decision_backlog_history,
decision_backlog_dependency, decision_backlog_sweep_log)
total_rows_all_tables: 0
§2 — Primary Key Summary
single_column_pk: 11 tables (decision_backlog_entry.entry_id,
dot_pair_signature.signature_id, cut_change_set.change_set_id,
cut_change_set_affected_row.affected_row_id, verify_result.verify_result_id,
canonical_address_alias.alias_id, manifest_envelope.envelope_id,
review_decision.review_decision_id, decision_backlog_history.history_id,
decision_backlog_dependency.dependency_id, decision_backlog_sweep_log.sweep_id)
composite_pk: 1 table — manifest_unit_block (envelope_id, unit_local_id)
§3 — Foreign Key Summary (19 in-schema FKs; 0 cross-schema)
total_fk_in_cutter_governance: 19
pre_existing (v0.1 + P0-2): 12
added_by_final_batch (P0-6 + P0-5-remainder): 7
cross_schema_fk: 0
Per-table outbound FKs:
dot_pair_signature:
- prior_signature_id -> dot_pair_signature(signature_id) [self]
cut_change_set:
- decision_backlog_entry_id -> decision_backlog_entry(entry_id)
- executor_signature_id -> dot_pair_signature(signature_id)
- verifier_signature_id -> dot_pair_signature(signature_id)
cut_change_set_affected_row:
- change_set_id -> cut_change_set(change_set_id)
verify_result:
- change_set_id -> cut_change_set(change_set_id)
- escalation_ref -> decision_backlog_entry(entry_id)
- executor_signature_id -> dot_pair_signature(signature_id)
- prior_verify_result_id -> verify_result(verify_result_id) [self]
- rollback_change_set_id_triggered -> cut_change_set(change_set_id)
- verifier_signature_id -> dot_pair_signature(signature_id)
manifest_unit_block:
- envelope_id -> manifest_envelope(envelope_id)
review_decision: # final batch
- manifest_id -> manifest_envelope(envelope_id)
- (manifest_id, manifest_unit_local_id) -> manifest_unit_block(envelope_id, unit_local_id) [composite]
- prior_review_decision_id -> review_decision(review_decision_id) [self]
- superseded_by_review_decision_id -> review_decision(review_decision_id) [self]
decision_backlog_history: # final batch
- entry_id -> decision_backlog_entry(entry_id)
decision_backlog_dependency: # final batch
- from_entry_id -> decision_backlog_entry(entry_id)
- to_entry_id -> decision_backlog_entry(entry_id)
no_outbound_fk: decision_backlog_entry, canonical_address_alias,
manifest_envelope, decision_backlog_sweep_log
(decision_backlog_sweep_log uses soft uuid refs by design — no hard FK)
§4 — Empty Status
all_12_tables: 0 rows (confirmed by exact COUNT(*) on each)
business_data_in_cutter_governance: NONE
§5 — Notes for App / Tooling Integration (informational; NOT authorized work)
- The schema is structurally complete and empty. First writes must come through
the authorized cutter agent write path (review → command-review → execution),
NOT ad-hoc INSERT.
- Soft-reference columns (no hard FK) require application-layer integrity:
decision_backlog_sweep_log (sweep refs), verify_result.escalation_ref is a
hard FK but the cut_change_set_ref-style soft refs in the backlog family are
app-enforced. Integration design must specify the enforcing component.
- decision_backlog_entry is the lean canonical entry table (6 cols: entry_id
uuid, kind, status, payload jsonb, emitted_at, scenario_ref). History /
dependency / sweep_log hang off it via entry_id (uuid) — there is NO
decision_id column anywhere (the old name was retired pre-execution).
- review_decision (25 cols) binds to the manifest pair: single FK to
manifest_envelope plus a composite FK to manifest_unit_block; plus two self
FKs (prior / superseded) for decision lineage. Lineage writes must set these
consistently in one transaction.
- manifest_unit_block PK is composite (envelope_id, unit_local_id) — the unit
addressing key for CUT/VERIFY tooling.
- No DEFAULTs / triggers / CHECK on the 4 final tables: all invariants are
app/agent-enforced by design (BATCH-1 GPT override = text + documented
allowed values, no PG enum / no lookup FK). Integration must own validation.
- canonical_address_alias is empty; alias resolution is a runtime concern,
unauthorized until the canonicalization-library workstream is approved.
- Directus permissions / RLS / read roles are NOT yet configured for these
tables — required before any UI or API exposure.
End of v0.2 structural schema inventory.