KB-5434

IU-0 Pack 2 — Readiness and Scope Decision Pack

7 min read Revision 1
iu-0pack-2readinessscopedecision-packplanning

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 /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:

  1. 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.
  2. Option A nhỏ, rủi ro thấp, không DDL trên production schema, một Claude Code run là xong.
  3. 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."
  4. 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.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/design/10-iu0-pack2-readiness-and-scope-decision-pack.md