KB-2142

19 — IU-0 Pack 2B Pilot CRUD + Birth Fire

4 min read Revision 1
iu-0pack-2bpilotcrudbirth-firedesign

19 — IU-0 Pack 2B: Pilot CRUD + Birth Fire Verification

Date: 2026-05-05 | Status: DESIGN — chờ GPT/User review Prerequisite: 18c PASS (trg_birth_information_unit installed) Scope: 1–2 pilot IU rows, verify birth trigger fire, verify synthetic entity_code


§1. Mục tiêu

Chứng minh 5 điều:

  1. INSERT IU row hoạt động qua schema/gates hiện có
  2. trg_birth_information_unit fire tự động
  3. birth_registry nhận entity_code dạng information_unit::<uuid>
  4. unit_version subordinate: không tạo independent birth
  5. Không drift fn/trigger/governance ngoài scope

§2. Approach: Schema-first, không đoán

KHÔNG viết INSERT từ trí nhớ. Preflight PHẢI inspect actual columns, constraints, triggers, defaults trước khi build payload.


§3. Execution structure

P2B-P0: Schema inspection (read-only)

-- IU columns
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name='information_unit' ORDER BY ordinal_position;

-- UV columns
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name='unit_version' ORDER BY ordinal_position;

-- Constraints
SELECT conname, pg_get_constraintdef(oid)
FROM pg_constraint WHERE conrelid='information_unit'::regclass;

SELECT conname, pg_get_constraintdef(oid)
FROM pg_constraint WHERE conrelid='unit_version'::regclass;

-- Triggers on both tables
SELECT tgname, tgfoid::regproc, pg_get_triggerdef(oid)
FROM pg_trigger WHERE tgrelid='information_unit'::regclass AND NOT tgisinternal;

SELECT tgname, tgfoid::regproc
FROM pg_trigger WHERE tgrelid='unit_version'::regclass AND NOT tgisinternal;

-- Current counts
SELECT count(*) FROM information_unit;  -- must 0
SELECT count(*) FROM unit_version;      -- capture
SELECT count(*) FROM birth_registry WHERE collection_name='information_unit';  -- must 0

Upload P0 report. HARD STOP. GPT review schema trước INSERT.

P2B-P1: Pilot INSERT (after schema review)

Build exact INSERT payloads FROM actual schema:

  • 1–2 IU rows với pilot namespace (e.g. canonical_address like pilot.iu0.test-001)
  • Fill all NOT NULL columns
  • Use defaults where available
  • unit_version row(s) nếu IU design requires

P2B-P2: Verify birth fire

-- IU birth rows
SELECT entity_code, collection_name, born_at
FROM birth_registry WHERE collection_name='information_unit';
-- Must: count = number of pilot rows inserted
-- entity_code format: information_unit::<uuid>

-- UV birth check
SELECT count(*) FROM birth_registry WHERE collection_name='unit_version';
-- Expected: 0 (subordinate = no independent birth trigger)

P2B-P3: Decision — keep or cleanup pilot rows

GPT/User decide:

  • Keep pilot rows (for subsequent testing)
  • Soft-delete/archive
  • Hard delete (rollback)

§4. Hard boundaries

  • No raw trigger/function work
  • No schema changes
  • No DOT-119 rewrite
  • No Pack 2C/vector/outbox/Qdrant
  • No Directus exposure
  • No P3/HC

19 Pack 2B design | 2026-05-05 | Opus 4.6 | Schema-first pilot. Chờ review.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/design/19-iu0-pack2b-pilot-crud-and-birth-fire-execution-pack.md