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:
- INSERT IU row hoạt động qua schema/gates hiện có
- trg_birth_information_unit fire tự động
- birth_registry nhận entity_code dạng
information_unit::<uuid> - unit_version subordinate: không tạo independent birth
- 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.