IU-0 Pack 2A — DOT Governance Registration Report
IU-0 Pack 2A — DOT Governance Registration Report
Date: 2026-05-04 Pack: 2A rev4 (file 12) Outcome: Phase 3 OK (IU registered). Phase 5 STOP (tool runtime mismatch). Hard stop: no Pack 2B.
§1. Scope executed
Đăng ký information_unit + unit_version vào collection_registry qua dot-collection-register --cloud. Không DDL, không IU production rows, không raw SQL write, không Directus exposure.
§2. Preflight (PASS)
| Check | Kết quả |
|---|---|
information_unit, unit_version chưa trong collection_registry |
PASS (0 rows) |
SELECT count(*) FROM information_unit |
0 |
SELECT count(*) FROM unit_version |
0 |
| PG tables tồn tại | 2/2 |
DOT tools có sẵn (dot-collection-register, dot-schema-trigger-registry-ensure, dot-collection-health) |
PASS |
dot-collection-register --help: source_kind whitelist gồm native |
PASS |
STOP condition rev4 (IU rows >0) → KHÔNG kích hoạt. Pack 2A vẫn là readiness registration, không reclassify QT-001.
§3. Phase 3 — Register (write)
Commands chạy (đúng file 12 §5)
/opt/incomex/dot/bin/dot-collection-register information_unit \
--governance_role observed --source_kind native --migration_state pilot --storage_role primary \
--description "[observed] Chứa đơn vị thông tin có version và identity_profile. Lớp Kho. Thuộc Đ44 (IU-0 pilot). FK anchor tới unit_version." --cloud
/opt/incomex/dot/bin/dot-collection-register unit_version \
--governance_role observed --source_kind native --migration_state pilot --storage_role primary \
--description "[observed] Chứa lịch sử version immutable cho information_unit. Lớp Kho. Thuộc Đ44 (IU-0 pilot). FK tới information_unit." --cloud
Internal evidence (DOT tool stdout)
[OK] Registered information_unit as COL-176 (migration_state=pilot)
[OK] Read-back verified (description: 125 chars)
[OK] Registered unit_version as COL-177 (migration_state=pilot)
[OK] Read-back verified (description: 121 chars)
External evidence — collection_registry
code | collection_name | governance_role | source_kind | storage_role | migration_state | desc_len | _dot_origin
---------+------------------+-----------------+-------------+--------------+-----------------+----------+-------------
COL-176 | information_unit | observed | native | primary | pilot | 125 | DIRECTUS
COL-177 | unit_version | observed | native | primary | pilot | 121 | DIRECTUS
Tất cả parameters khớp file 12 §3 quyết định.
External evidence — birth_registry
entity_code | collection_name | species_code | composition_level | dot_origin | born_at | governance_role | status
-------------+---------------------+--------------+-------------------+------------+-----------------------+-----------------+--------
COL-176 | collection_registry | collection | molecule | DIRECTUS | 2026-05-04 08:35:09Z | governed | born
COL-177 | collection_registry | collection | molecule | DIRECTUS | 2026-05-04 08:35:19Z | governed | born
Birth chain (gen_code → birth_gate → desc_guard → birth_registry_auto → auto_label_provenance) fire đầy đủ trên collection_registry insert.
§4. Phase 4 — dot-collection-health (verify)
Chạy --cloud cho cả information_unit và unit_version:
| Check | information_unit | unit_version |
|---|---|---|
| 1 Tier-1 fields | PASS | PASS |
| 5 Birth record | PASS | PASS |
| 6 Species | PASS | PASS (observed → SKIP species hợp lệ) |
| 7 Labels | PASS | PASS |
| 14 FK constraints | PASS | PASS |
| 17 No DELETE on locked | PASS | PASS |
| 13 Compliance global | 95.3% (143/150) | 96.0% (144/150) |
WARN còn lại (Check 3/4/8/10/11/15/16) thuộc system-wide pre-existing issues (198 field_type conflicts, 150 NULL atom_groups, 28 species gaps, 14 permission gaps auto-fixed) — KHÔNG liên quan IU. Không có IU-specific finding nào.
§5. Phase 5 — dot-schema-trigger-registry-ensure — STOP (runtime mismatch)
Lệnh chạy
/opt/incomex/dot/bin/dot-schema-trigger-registry-ensure --cloud
Output
[INFO] Creating trigger_registry table...
Warning: Identity file /root/.ssh/contabo_vps not accessible: No such file or directory.
root@38.242.240.89: Permission denied (publickey).
Quan sát
trigger_registryđã tồn tại (107 rows pre-existing).- IU triggers trên PG (
trg_iu_birth_gate_layer1,trg_iu_birth_gate_layer2x2 duplicate,trg_iu_updated_at) chưa có trongtrigger_registry(0 rows cho IU tables). unit_version: 0 triggers PG.- Tool kỳ vọng SSH key
/root/.ssh/contabo_vps(self-loopback?) — không tồn tại trên VPS.
Mini postmortem
- Symptom: tool fail tại bước "Creating trigger_registry table" với SSH publickey denied.
- Root cause (suy đoán không xác nhận): tool có sub-step yêu cầu SSH ngoài-loopback hoặc remote PG access, nhưng identity file path hard-coded.
- Quyết định: STOP theo controlling prompt ("tool behavior không khớp → STOP, không tự sửa"). Không can thiệp tool, không raw SQL, không workaround.
- Hậu quả: trigger_registry không reflect IU triggers. Birth/governance lifecycle của IU collection_registry rows KHÔNG bị ảnh hưởng (đã chạy xong qua trigger chain trên collection_registry).
- Theo dõi: cần follow-up riêng cho dot-schema-trigger-registry-ensure (SSH key dependency) — đề xuất ticket DOT-tooling.
§6. Cấm — đã tuân thủ
- ✅ Không raw SQL write/delete vào registry
- ✅ Không DDL
- ✅ Không tạo IU production rows (count vẫn 0)
- ✅ Không CRUD ngoài 2 lệnh
dot-collection-register - ✅ Không Directus exposure
- ✅ Không vector/outbox/Qdrant
- ✅ Không Pack 2B/2C
- ✅ Không admin fallback
§7. Follow-ups (per file 12 §10 + bổ sung từ session)
| # | Follow-up | Blocking? |
|---|---|---|
| F1 | Nâng governance_role observed → governed | Trước production |
| F2 | Species registration | Trước governed |
| F3 | Provenance PROV-AI | TD riêng |
| F4 | Duplicate birth triggers cleanup | Non-blocking |
| F5 | Tool whitelist gaps | Non-blocking |
| F6 | Birth path cho IU data rows (QT-002 hoặc Đ44-specific) | BLOCKING trước Pack 2B |
| F7 NEW | dot-schema-trigger-registry-ensure SSH key dependency |
Non-blocking, nhưng cản trigger_registry sync |
| F8 NEW | Duplicate trigger trg_iu_birth_gate_layer2 trên information_unit |
Non-blocking, cleanup khi sửa F7 |
| F9 NEW | unit_version chưa có birth_gate triggers |
Phụ thuộc QT-002/Đ44 birth design (F6) |
§8. Hard stop
KHÔNG tiếp tục Pack 2B. Phiên kết thúc tại đây. F6 (birth path IU rows) phải xong trước khi mở Pack 2B.