Điều 23: Luật DOT Scanning — Tam quyền Phân lập Dữ liệu v2.1 CHÍNH THỨC
ĐIỀU 23: LUẬT DOT SCANNING — TAM QUYỀN PHÂN LẬP DỮ LIỆU
(Hiến pháp Kiến trúc — CHÍNH THỨC)
v2.1 | S130 (2026-03-17) | AI Council 3 agents (Gemini 8.5 + Claude Code 8 + Codex 8) → SỬA + ĐÓNG BĂNG v2.0 | S120 feedback Huyen | v2.1: +Quyền Inspector ghi cứng. +Inspector Layer 2. +2 Exception deploy. +Inverse-Check UNMONITORED. +Ranh giới 23/19/22. +Cross-reference. Nguyên tắc nền tảng: "1 bên LÀM, 1 bên KIỂM TRA, 1 bên GIÁM SÁT"
search_knowledge("DOT scanning system kiểm tra song song")
§1. NGUYÊN TẮC — TAM QUYỀN PHÂN LẬP DỮ LIỆU
| Vai trò | Ai | Làm gì | Quyền |
|---|---|---|---|
| LÀM (Builder) | Hệ thống chính (Directus + PG TRIGGER + Nuxt) | Tạo/sửa/xóa entities, đếm, render UI | READ/WRITE data. KHÔNG sửa kết quả scan. |
| KIỂM TRA (Inspector) | DOT Scanning System | Quét ĐỘC LẬP, phát hiện sai lệch | READ ALL + WRITE ONLY system_issues & registry_changelog. KHÔNG auto-fix. |
| GIÁM SÁT (Supervisor) | User + AI Council | Xem system_issues, quyết định, phê duyệt WCR/ngoại lệ | Kích hoạt self-healing actions. |
Builder KHÔNG BAO GIỜ tự xác nhận mình đúng. Inspector kiểm tra. Supervisor quyết định.
§1.1 Inspector 2 Layer (AI Council S130)
- Layer 1 — Internal: PG functions (verify_counts, check_registry_coverage) + DOT shell scripts. Chạy BÊN TRONG hạ tầng.
- Layer 2 — External: GitHub Actions Health Check workflow + Agent Data /health endpoint. Chạy BÊN NGOÀI PG instance → nếu PG bị compromise, Layer 2 vẫn phát hiện.
Tối thiểu 1 kênh Inspector Layer 2 cho mọi kiểm tra quan trọng.
§1.2 Self-Healing = Action riêng (AI Council S130)
- Inspector CHỈ phát hiện + ghi findings vào system_issues.
- Mọi hành động sửa lỗi = action riêng, PHẢI do Supervisor kích hoạt hoặc phê duyệt.
- KHÔNG trộn trigger sửa lỗi vào script quét. Detection ≠ Correction.
DOT Scanning = HỆ THỐNG SONG SONG, không phải "thêm vài tools":
- Hệ thống chính đi đến đâu → DOT scanning phải quét được đến đó
- Khi tính năng mới tạo → DOT tool kiểm tra PHẢI tạo cùng lúc hoặc ngay sau
- DOT tool thiếu coverage = ĐIỂM MÙ = nguy hiểm ngang bug hệ thống
§2. NGUYÊN TẮC NHẤT QUÁN (Huyen — S120)
Giao diện cần ỔN ĐỊNH để đào tạo.
6 mối quan hệ — LUÔN hiện đầy đủ, CÙNG thứ tự, MỌI entity:
| STT | Mối quan hệ | Câu hỏi tiếng Việt | Nguồn data |
|---|---|---|---|
| 1 | BELONGS_TO | Thuộc ai? | entity_dependencies WHERE source=tôi AND type=belongs_to |
| 2 | CONTAINS | Chứa gì? | entity_dependencies WHERE source=tôi AND type=contains |
| 3 | DEPENDS_ON | Dùng ai? | entity_dependencies WHERE source=tôi AND type=depends_on |
| 4 | USED_BY | Ai dùng tôi? | entity_dependencies WHERE target=tôi AND type=depends_on |
| 5 | PEERS | Cùng nhóm | Cùng collection + composition_level |
| 6 | SIMILAR | Tương tự | Vector search Qdrant (planned — infrastructure ready) |
Trống = để trống. Không gộp, không ẩn, không giải thích.
§3. TỔ CHỨC — 3 THÀNH PHẦN
A. Luật DOT Scanning = tài liệu này + Operating Rules §DOT Scanning. B. Phạm vi Kiểm tra = DOT tools (CAT-006) tổ chức theo góc nhìn giám sát. C. Vấn đề hệ thống = system_issues collection — nơi DUY NHẤT chứa kết quả quét.
2 câu hỏi của mọi DOT scanning:
- Câu A: Có chỗ nào CHƯA HIỂN THỊ đúng? (kiểm tra GIAO DIỆN)
- Câu B: Có chỗ nào CHƯA CẬP NHẬT đúng? (kiểm tra DỮ LIỆU)
§4. PHẠM VI KIỂM TRA + INVERSE-CHECK
§4.1 Minh bạch trên trang chủ
Trang chủ Registries hiển thị: đang quét gì, thiếu gì, DOT nào hoạt động kém. "ĐIỂM MÙ" = lĩnh vực CHƯA có tool quét → rủi ro lớn nhất.
§4.2 Inverse-Check — Phát hiện UNMONITORED (AI Council S130)
- Collection có trong meta_catalog nhưng KHÔNG xuất hiện trong scope của bất kỳ DOT scan → tự cảnh báo UNMONITORED REGISTRY.
- PG tables trong schema public không có trong meta_catalog VÀ không phải directus_/v_ → UNREGISTERED TABLE warning.
- Chênh lệch > 0 → tạo system_issue severity=HIGH.
§5. LUẬT DEPLOY — "KHÔNG CÓ DOT = KHÔNG DEPLOY"
Tính năng mới → DOT kiểm tra PHẢI tạo cùng lúc. DOT coverage là điều kiện deploy.
§5.1 Exception (AI Council S130 — 3 agents đồng thuận)
| Exception | Điều kiện | SLA |
|---|---|---|
| Hotfix P0/Security | Production down hoặc lỗ hổng bảo mật | Deploy ngay. TD + DOT bổ sung trong 24h. WCR bắt buộc. |
| Infrastructure-only | nginx, docker-compose, env vars — KHÔNG tạo/sửa entity | Không cần DOT scanning mới. |
Ngoài 2 exception trên → KHÔNG có ngoại lệ khác.
§6. ĐÃ CÓ + CẦN TẠO
Đã có:
| Tool | Loại | Inspector Layer |
|---|---|---|
| verify_counts() | PG Function | L1 |
| check_registry_coverage() | PG Function | L1 |
| test_counting_contract() T1-T8 | PG Function | L1 |
| fn_sync_trigger_registry() | PG Function | L1 |
| 17 TRIGGER refresh | PG Trigger | Builder |
| dot-orphan-scan | Shell | L1 |
| dot-selftest-registries | Shell | L1 |
| Health Check GH Actions | GH Workflow | L2 |
| Agent Data /health | API endpoint | L2 |
Cần tạo:
| Tool | Ưu tiên |
|---|---|
| audit_relationships() — 6 quan hệ per entity | 🔴 |
| audit_dead_links() — entity_dependencies dead | 🔴 |
| inverse_check_unmonitored() — UNMONITORED registry | 🔴 |
| audit_permissions() — field permissions | 🟡 |
| audit_field_coverage() — field metadata | 🟡 |
| duplicate_engine — entities giống nhau | 🟡 |
§7. RANH GIỚI VỚI CÁC ĐIỀU KHÁC (AI Council S130)
| Điều | Vai trò | Ranh giới |
|---|---|---|
| Điều 23 (này) | Detection Framework — Nhạc trưởng | Phát hiện + ghi findings. KHÔNG tự sửa. |
| Điều 19 (Orphan Scanner) | Triển khai cụ thể | 1 loại scan trong framework Điều 23. |
| Điều 22 (Self-Healing) | Execution | Chạy SAU khi Điều 23 phát hiện + Supervisor phê duyệt. |
Xung đột giữa Điều 19/22 và Điều 23 → Điều 23 ưu tiên (framework bao trùm).
§8. LIÊN KẾT HIẾN PHÁP
| Điều | Liên quan |
|---|---|
| Điều 0-B | DOT scanning quét mọi composition level |
| Điều 19 | Orphan Scanner = triển khai cụ thể |
| Điều 22 | Self-Healing = execution sau detection |
| Điều 24 | Scanning label drift |
| Điều 25 | HC-trigger-* items |
| Điều 26 | verify_counts contract |
Điều 23 v2.1 CHÍNH THỨC ĐÓNG BĂNG | S130 (2026-03-17) | AI Council 3 agents