IU-0 Pack 2 — Readiness and Scope Decision Pack
IU-0 Pack 2 — Readiness and Scope Decision Pack
Date: 2026-05-04 Status: DECISION PENDING — chờ User/GPT chọn scope Prerequisite: Pack 1 PASS (2026-05-04) Ranh giới: Tài liệu planning. Không DDL, không execute, không mở Pack 2.
§1. Pack 1 Final State
| Object | Trạng thái | Ghi chú |
|---|---|---|
dot_config vocab (3 keys) |
Live | vocab.unit_kind.design_doc_section, vocab.section_type.section, vocab.publication_type.design_doc |
information_unit (15 cột) |
Live, 0 rows | 5 custom indexes + pkey + unique + GIN trên identity_profile |
unit_version (9 cột) |
Live, 0 rows | Deferred FK fk_iu_version_anchor (condeferrable=t, condeferred=t) |
| Birth gate L1 | Active | BEFORE INSERT — UMC + identity profile + vocab lookup. Dùng WHERE key = (khớp runtime) |
| Birth gate L2 | Active | CONSTRAINT TRIGGER DEFERRED — version anchor verify tại COMMIT, re-query final row |
fn_iu_updated_at + trigger |
Active | BEFORE UPDATE auto-touch updated_at |
| Test data | 0 rows | Smoke T1–T14 PASS, cleanup hoàn tất |
| Backup | Có | /opt/incomex/backups/pre-pack1-*-20260504-113258.sql |
| Hard stop | Còn hiệu lực | Không Pack 2, không outbox, không Qdrant, không Directus, không production units |
§2. Follow-up F1–F3
F1. TRIGGER-GUARD governance registration
Hiện trạng: DB có event trigger TRIGGER-GUARD audit DDL operations. Khi Pack 1 tạo 3 triggers (trg_iu_updated_at, trg_iu_birth_gate_layer1, trg_iu_birth_gate_layer2), event trigger log 3 WARNING. Triggers hoạt động bình thường, warning không block.
Cần làm: Điều tra cơ chế đăng ký trigger hợp lệ với TRIGGER-GUARD. Có thể là INSERT vào bảng whitelist, hoặc tag trigger metadata. Cần Claude Code đọc function body fn_trigger_guard_ddl() (hoặc tên tương đương) để xác định cơ chế. Sau đó đăng ký 3 triggers mới.
Mức độ: Nhỏ. Không DDL trên information_unit/unit_version. Chỉ INSERT metadata vào bảng audit.
F2. Patch 09a rev4 — doc hygiene
Hiện trạng: 09a rev3 dùng config_key/config_value/created_at. Runtime thực tế là key/value/updated_at. DDL đã chạy đúng (Giai đoạn 2 prompt sửa kịp thời), nhưng tài liệu SSOT chưa khớp.
Cần làm: Patch 09a rev4 — sửa tên cột trong SQL examples cho khớp runtime. Chỉ tài liệu, không DDL. Đã thực hiện trong phiên này (xem ghi chú cuối tài liệu).
F3. collection_registry registration
Hiện trạng: 2 bảng mới (information_unit, unit_version) chưa đăng ký trong collection_registry. Đ13 Live Catalog yêu cầu bảng mới phải xuất hiện trong registry.
Cần làm: INSERT 2 rows vào collection_registry với governance_role phù hợp (likely governed). Đây là Directus integration readiness — nên đi kèm với quyết định Pack 2 scope vì cần xác định governance_role, species_code, và các metadata khác.
Mức độ: Nhỏ nhưng liên quan Pack 2 scope. Nếu chọn Option A, có thể làm cùng lượt. Nếu defer Pack 2, defer F3 luôn.
§3. Pack 2 Scope Options
Option A: Governance Cleanup Only
Scope: Đóng nợ hành chính từ Pack 1, không thêm tính năng.
| Việc | Chi tiết |
|---|---|
| F1 Trigger registration | Đăng ký 3 triggers với TRIGGER-GUARD |
| F3 Collection registry | INSERT 2 rows cho information_unit + unit_version |
| 09 doc sync | 09a rev4 đã patch (F2 done) |
Ưu: Nhỏ, nhanh, đóng governance debt, nền sạch cho bước tiếp. Không rủi ro DDL trên production schema. Nhược: Không thêm capability mới. information_unit vẫn empty, chưa dùng được. Effort: Low. Một Claude Code run, chủ yếu INSERT metadata.
Option B: Minimal CRUD Smoke (chưa vector)
Scope: Tạo 1-2 pilot units thật trong information_unit để kiểm chứng CRUD end-to-end. Chưa outbox, chưa vector.
| Việc | Chi tiết |
|---|---|
| Governance cleanup (A) | Làm trước |
| Pilot unit creation | Tạo 1-2 units thật (vd: IU-0 §1 hoặc P38-XC §1) qua transaction chuẩn |
| CRUD verify | Create → Read → Edit (new version) → Profile update → Soft-delete → verify |
| Performance baseline | Đo latency hot path (<10ms target) |
Ưu: Chứng minh schema hoạt động end-to-end với data thật. Phát hiện sớm vấn đề trước khi thêm vector complexity. Nhược: Tạo production units → cần quy trình birth đầy đủ (Đ4), dependency tracking question (Đ8), canonical_address convention cần chốt. Effort: Medium. Cần soạn pilot unit creation prompt, chốt canonical address format, CRUD test script.
Option C: Outbox + Vector Prep (chưa Qdrant collection)
Scope: Tạo outbox table logical, chưa worker, chưa Qdrant collection.
| Việc | Chi tiết |
|---|---|
| Governance cleanup (A) | Làm trước |
| Outbox DDL | CREATE TABLE iu_outbox (hoặc shared outbox) |
| Outbox trigger | INSERT outbox row khi create/edit/delete unit |
| Chưa làm | Worker, Qdrant collection, embedding. Outbox rows tích lũy chờ worker. |
Ưu: Chuẩn bị hạ tầng async trước khi cần vector. Outbox rows tích lũy = evidence cho worker design. Nhược: Thêm DDL phức tạp (shared vs separate outbox = OPEN IU-0-λ chưa chốt). Chưa có worker = rows pending mãi. Overhead governance cho thêm 1 table + triggers. Effort: Medium-High. Cần chốt shared/separate outbox, DDL design review, trigger design.
§4. Opus Recommendation
Chọn Option A trước.
Lý do:
- Pack 1 vừa xong — nợ hành chính nên đóng ngay khi còn nóng, không để tích lũy.
- Option A nhỏ, rủi ro thấp, không DDL trên production schema, một Claude Code run là xong.
- Nền sạch (governance debt = 0) trước khi quyết Option B hay C — tránh tình trạng "xây tiếp mà sổ sách tầng trước chưa xong."
- Sau Option A xong, User/GPT quyết tiếp B hay C với thông tin đầy đủ hơn — không cần quyết tất cả ngay bây giờ.
Nếu User muốn nhanh hơn: A+B gộp cũng hợp lý — governance cleanup + 1-2 pilot units trong cùng một vòng. Nhưng tôi khuyên tách vì Pack 1 đã cho thấy checkpoint giữa chừng có giá trị thực tế (CP1 bắt schema mismatch).
§5. Decision Request
User/GPT chọn một:
| Lựa chọn | Nghĩa |
|---|---|
| A | Governance cleanup only → Opus soạn prompt, dispatch Claude Code |
| B | A + CRUD pilot → Opus soạn prompt gộp |
| C | A + Outbox prep → Opus soạn design trước, review, rồi prompt |
| A+B | Gộp governance + CRUD trong 1 vòng |
| Defer | Không mở Pack 2 lúc này, chuyển sang việc khác |
Sau khi User/GPT chọn, Opus sẽ soạn execution design + prompt tương ứng, không execute cho đến khi được duyệt.