KB-6EA2

dot-iu-cutter v0.3 — Read-Observability Inventory (12 base tables + 12 observe views) (2026-05-16)

7 min read Revision 1
dot-iu-cutterdieu44v0.3read-observabilityinventorycutter_governancecloseout

dot-iu-cutter v0.3 — Read-Observability Inventory

document_path: knowledge/dev/laws/dieu44-trien-khai/v0.3-execution/dot-iu-cutter-v0.3-read-observability-inventory-2026-05-16.md
revision: r1
date: 2026-05-16
author: Agent (Claude Code CLI, Opus 4.7 1M)
phase: v0.3 — CLOSEOUT inventory (read-only production introspection)
source: live production (container postgres / db directus / sysid 7611578671664259111), read-only @ 2026-05-16T23:33Z UTC
schema: cutter_governance | base_tables: 12 | observe_views: 12 | total_rows: 0

Read-only catalog snapshot of the LIVE v0.3 read-observability layer. No mutation performed to produce this inventory.


§1 — 12 Base Tables (unchanged from v0.2; LIVE)

# Base table Source phase Cols Rows Primary Key
1 decision_backlog_entry v0.1 6 0 (entry_id)
2 dot_pair_signature v0.1 16 0 (signature_id)
3 cut_change_set v0.1 24 0 (change_set_id)
4 cut_change_set_affected_row v0.1 8 0 (affected_row_id)
5 verify_result v0.1 26 0 (verify_result_id)
6 canonical_address_alias Phase α 9 0 (alias_id)
7 manifest_envelope P0-2 12 0 (envelope_id)
8 manifest_unit_block P0-2 13 0 (envelope_id, unit_local_id)
9 review_decision P0-6 25 0 (review_decision_id)
10 decision_backlog_history P0-5-rem 9 0 (history_id)
11 decision_backlog_dependency P0-5-rem 6 0 (dependency_id)
12 decision_backlog_sweep_log P0-5-rem 10 0 (sweep_id)
base_table_count: 12   PK: 12   FK: 19 (in-schema; 0 cross-schema)
all_base_tables_rows: 0
base_tables_unchanged_by_v0_3: true (v0.3 added NO base-table object;
  per-table column counts == v0.2 inventory)

§2 — 12 Observe Views (NEW in v0.3; LIVE)

# View cutter_governance.<name> Over base table Visible cols
1 v_canonical_address_alias_observe canonical_address_alias 7
2 v_cut_change_set_observe cut_change_set 19
3 v_cut_change_set_affected_row_observe cut_change_set_affected_row 6
4 v_decision_backlog_dependency_observe decision_backlog_dependency 6
5 v_decision_backlog_entry_observe decision_backlog_entry 4
6 v_decision_backlog_history_observe decision_backlog_history 7
7 v_decision_backlog_sweep_log_observe decision_backlog_sweep_log 9
8 v_dot_pair_signature_observe dot_pair_signature 11
9 v_manifest_envelope_observe manifest_envelope 11
10 v_manifest_unit_block_observe manifest_unit_block 9
11 v_review_decision_observe review_decision 22
12 v_verify_result_observe verify_result 23
observe_view_count: 12 (exactly one per base table)
rows_each: 0 (base tables empty)

§3 — Visible / Redacted Column Counts

per_view_visible_columns: [7,19,6,6,4,7,9,11,11,9,22,23]
total_visible_columns: 134
total_redacted_columns: 30
  (absent from every view by construction; information_schema.columns
   confirms 0 redacted columns present; pg_get_viewdef scan = 0 leak of
   any of the 15 sensitive base column names)
redaction_mechanism: column projection in the view definition
  (redacted base columns are simply not selected; no masking function)

§4 — cutter_ro Privileges (LIVE)

role: cutter_ro — NOLOGIN group role, 0 memberships
  (NOSUPERUSER, NOCREATEROLE, NOCREATEDB, NOREPLICATION, NOBYPASSRLS)
schema:    USAGE on cutter_governance = GRANTED (has_schema_privilege=t)
views:     SELECT on each of the 12 v_*_observe views = GRANTED (12/12)
base_tab:  SELECT on cutter_governance base tables = 0 (NONE — views-only)
writes:    INSERT/UPDATE/DELETE/TRUNCATE/REFERENCES/TRIGGER = 0 (NONE)
total_grants_to_cutter_ro: 13 (1 schema USAGE + 12 view SELECT)
public_schema_USAGE: inherited (PostgreSQL cluster default for ALL roles;
  NOT v0.3-introduced; grants no object/data privilege — v0.3 created no
  object in schema `public`; NOTE only, not revoked — carry note N-1)

§5 — Directus State (UNCHANGED by v0.3)

directus_collections: 164  (== v0.2/C-04 baseline)
directus_permissions: 1173 (== baseline)
directus_roles: 9          (== baseline)
directus_policies: 8       (== baseline)
directus_access: 9         (== baseline)
verdict: Directus authz UNCHANGED — v0.3 made no collection/role/policy/
  permission/access creation or edit. The cutter_governance tables & views
  remain UNregistered in Directus (invisible to the Directus API by design;
  PG is the control plane for the read layer — MODEL-C, Directus
  registration deferred).

§6 — RLS State (UNCHANGED by v0.3)

cutter_governance_tables_with_relrowsecurity: 0
verdict: RLS UNCHANGED — no RLS created / enabled / disabled / policy on any
  cutter_governance object. v0.3 isolation is achieved purely via the
  views-only grant model (no base-table grant), not via RLS.

§7 — Notes for Future Login / Member Binding (informational; NOT authorized)

- cutter_ro is intentionally NOLOGIN with 0 memberships (B-4 deferred). To
  make the read layer consumable by a service, a SEPARATE authorized
  workstream must either: (a) create a LOGIN role and GRANT cutter_ro to it,
  or (b) ALTER cutter_ro WITH LOGIN PASSWORD (less preferred — group roles
  should stay NOLOGIN). Neither is authorized here.
- Binding design must decide credential custody (PG password vs Directus app
  role reuse) — see the Tier 2 routing note (credential strategy area).
- The 12 views are owned by workflow_admin (security_invoker=false): a
  consumer needs ONLY the 12 view SELECT grants — no base-table privilege.
  Any future LOGIN principal must inherit cutter_ro, NOT receive base grants.
- Redaction is structural (column projection). Adding a column to a base
  table does NOT auto-expose it; the view must be re-authored (a future
  authorized DDL cycle) to surface or redact new columns.
- Directus registration of the cutter_governance read layer remains deferred
  (MODEL-C). If UI/API exposure is later wanted, that is a distinct
  design→review→execution chain (Directus collection metadata + read policy).
- All base tables are empty; first writes must come through the authorized
  cutter-agent write path (Tier 2), never ad-hoc INSERT.

End of v0.3 read-observability inventory.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.3-execution/dot-iu-cutter-v0.3-read-observability-inventory-2026-05-16.md