Điều 10-13: Luật Vận hành
ĐIỀU 10-13: LUẬT VẬN HÀNH & TỰ ĐỘNG HOÁ
Ghi chú v4.0: Constitution mục lục liệt kê 4 file riêng (law-10, 11, 12, 13). File này gộp tạm — sẽ tách khi hội đồng duyệt.
ĐIỀU 10: LUẬT INJECT — RULES PHẢI ĐẾN ĐÚNG NƠI AGENT ĐỌC
Rules chỉ có giá trị nếu agent BUỘC PHẢI đọc. Rules trong Agent Data mà agent phải search → quên → vi phạm. Giống biển báo không có camera.
Cơ chế:
CLAUDE.md+AGENTS.mdchứa BẢN RÚT GỌN Hiến pháp — checklist. Agent đọc TỰ ĐỘNG khi khởi động..claude/skills/incomex-rules.mdcập nhật mỗi khi Hiến pháp thay đổi.- DOT scripts TỰ KIỂM TRA tuân thủ — không phụ thuộc agent "nhớ".
Agent vi phạm rule mà rule KHÔNG trong CLAUDE.md → lỗi thuộc HỆ THỐNG (chưa inject).
ĐIỀU 11: LUẬT IDEMPOTENT — SCRIPT PHẢI CHẠY LẠI ĐƯỢC
Mọi DOT script PHẢI idempotent — chạy lại không tạo duplicate, tự bỏ qua bước đã xong.
Verify step bắt buộc: Mỗi DOT sinh entity PHẢI có bước VERIFY CUỐI: kiểm tra TẤT CẢ outputs tồn tại. Thiếu → tự fix hoặc báo lỗi cụ thể.
Script lỗi giữa chừng + không verify = bất đồng bộ ẩn tích lũy — bug nguy hiểm nhất.
ĐIỀU 12: LUẬT VÒNG ĐỜI ĐẦY ĐỦ — SINH + SỬA + XOÁ
Entity Lifecycle phải cover TOÀN BỘ:
- SINH: Qua DOT → ID → registry → metadata (Điều 4)
- SỬA: Sửa → cập nhật TẤT CẢ registries + dependencies tự động
- XOÁ: Query dependencies → có nơi dùng → CHẶN → deprecate trước → 0 dependencies → retire
- GỘP: Entity mới → migrate data → update deps → deprecate cũ
Chỉ biết tạo mà không biết dọn = phình to mãi mãi.
→ Chi tiết: knowledge/dev/architecture/entity-lifecycle.md
ĐIỀU 13: LUẬT DANH MỤC SỐNG — TẠO = TỰ XUẤT HIỆN, XOÁ = TỰ BIẾN MẤT
"Điểm gãy của điểm gãy." Điều 2 nói "mọi thứ trong registry" — nhưng NẾU đăng ký registry phải NHỚ → quên → lệch → Registry-First = vô nghĩa.
§1. Nguyên tắc LIVE CATALOG
TẠO → danh sách TỰ ĐỘNG hiện
XOÁ → danh sách TỰ ĐỘNG ẩn
SỬA → danh sách TỰ ĐỘNG cập nhật
Phải "nhớ cập nhật danh sách" = THIẾT KẾ SAI.
§2. Hai mô hình
Mô hình A (ưu tiên): Registry IS source. Tạo TRONG registry → hệ thống đọc → UI hiện. Mô hình B: Source tách rời → auto-sync. DOT tools (file) → script scan → registry cập nhật.
v4.0 bổ sung: Mô hình A/B đều phải đảm bảo 5 tầng đồng bộ (Điều 0-H). DOT = cổng duy nhất cho cả 2 mô hình. Tạo entity qua DOT → PG + Directus + Nuxt + Agent Data + Qdrant đều tự biết.
§3. Quy tắc chọn mô hình
| Thực thể | Source thực tế | Mô hình | Giải pháp |
|---|---|---|---|
| Bảng UI | table_registry (Directus) |
A — registry IS source | ✅ Đã đúng |
| Modules | modules (Directus) |
A — registry IS source | ✅ Đã đúng |
| Workflows | workflows (Directus) |
A — registry IS source | ✅ Đã đúng |
| DOT tools | Files trong dot/bin/ |
B — auto-sync | dot-catalog-sync |
| Pages/Routes | Files trong web/pages/ |
B — auto-sync | Cần scan script |
| API endpoints | Files trong web/server/api/ |
B — auto-sync | Cần scan script |
| Components | Files trong web/components/ |
B — auto-sync | Cần scan script |
| Collections | Directus system | A — Directus IS source | Query trực tiếp |
| Fields | Directus system | A — Directus IS source | Query trực tiếp |
| Agent Data docs | Agent Data API | A — API IS source | list_documents |
Nguyên tắc: Mô hình A > Mô hình B. Nếu có thể di chuyển source vào Directus → chuyển sang Mô hình A.
§4. Meta-catalog = Catalog of Catalogs
meta_catalog (Directus collection):
| Field | Mục đích |
|---|---|
| registry_name | Tên registry (vd: "table_registry") |
| entity_type | Loại thực thể (vd: "Bảng UI") |
| source_model | Enum: A hoặc B |
| source_location | Nơi source thực tế |
| sync_script | Tên DOT script sync (null nếu Mô hình A) |
| record_count | Số records hiện tại — auto-query |
| species_count | Số species liên quan |
| orphan_count | Số orphans phát hiện |
| ui_page | URL trang UI hiển thị |
| status | active/planned/deprecated |
AI hỏi "hệ thống có gì?" → query meta_catalog → trả lời CHÍNH XÁC.
§5. Danh sách phải đọc được bởi CẢ AI VÀ Con người
Mỗi danh mục (catalog) phải có 2 giao diện:
- AI đọc: Query Directus API hoặc Agent Data search → JSON/structured data
- Con người đọc: UI page trên Nuxt (dùng DirectusTable) hiển thị + filter/search
Con người xác nhận đúng trên UI → chắc chắn đúng cho AI. Một nguồn sự thật, hai cách truy cập.
§6. Auto-sync Mô hình B — BẮT BUỘC
PHẢI có: (1) Script scan (DOT tool) (2) Cron trigger (3) Event trigger sau deploy. Thiếu 1 → registry CHẮC CHẮN lệch.