BỔ SUNG KHẨN CẤP S112 — Chỉ đếm 16 loại nguyên tử, loại log records
BỔ SUNG KHẨN CẤP — MISSION S112-STABILIZE
Huyen chỉ đạo trực tiếp. Agent ĐỌC NGAY nếu đang chạy S112.
VẤN ĐỀ: ĐANG ĐẾM SAI
Hệ thống đang đếm changelog (798) + system_issues (31) vào tổng nguyên tử. Chúng KHÔNG PHẢI nguyên tử. Điều 0 Hiến pháp: Nguyên tử = entity có ID PREFIX-NNN. changelog và system_issues là LOG RECORDS, không cần code, KHÔNG ĐẾM.
HÀNH ĐỘNG BẮT BUỘC
1. ĐÃ ĐÁNH DẤU TRONG DIRECTUS (Claude Desktop đã làm):
- CAT-016 (changelog): status → 'log'
- CAT-017 (system_issues): status → 'log'
Agent CHỈ CẦN: trong PG FUNCTION refresh_registry_counts(), filter WHERE status = 'active'
(hoặc WHERE status != 'log') khi query meta_catalog → tự động loại 2 log collections.
Nếu UI trang registries filter status: thêm điều kiện tương tự.
Chỉ đếm 16 collection nguyên tử: meta_catalog, table_registry, modules, workflows, workflow_steps, workflow_change_requests, dot_tools, ui_pages, collection_registry, tasks, agents, checkpoint_types, checkpoint_sets, entity_dependencies, table_proposals, checkpoint_instances
2. ORPHAN ĐỊNH NGHĨA ĐÚNG
Orphan = record trong 16 collection nguyên tử mà THIẾU code PREFIX-NNN. changelog thiếu code ≠ orphan (nó không phải nguyên tử). Sau khi loại 2 log collections → orphan sẽ rất ít hoặc 0.
3. CROSS-CHECK TỪ 3 NGUỒN KHÁC NHAU
Đọc 1 bảng PG rồi đếm 3 kiểu trên cùng bảng = VÔ NGHĨA (bảng sai → tất cả sai).
3 nguồn THỰC SỰ ĐỘC LẬP:
| # | Nguồn | Cách | Ý nghĩa |
|---|---|---|---|
| 1 | PG trực tiếp | SELECT count(*) FROM collection |
Database nói gì |
| 2 | Directus API | curl /items/collection?aggregate[count]=* |
Qua permission layer, có thể khác nếu permission sai |
| 3 | VPS files (Model B) | ls dot/bin/dot-* | wc -l |
Thực tế vật lý trên server |
Với Model A (Directus-native): nguồn 1 = nguồn 2 thì OK. Với Model B (file scan): nguồn 1 phải = nguồn 3. Nếu khác → chạy dot-catalog-sync.
4. KẾT QUẢ MONG ĐỢI SAU FIX
- Header "Tổng nguyên tử" ≈ 700 (thay vì 1500+ vì bỏ 800 log)
- Header "mồ côi" ≈ 0-10 (chỉ orphan thực trong 16 collections)
- Header "loại thực thể" = 16 (hoặc 18 nếu giữ CAT-ALL + CAT-999)
- Mỗi dòng: count PG = count Directus API → SỰ THẬT
TÓM LẠI
PostgreSQL cung cấp CHUẨN rồi. Việc đơn giản:
- Chỉ đếm 16 loại nguyên tử
- Hiển thị đúng trên web
- So sánh PG vs Directus API vs VPS files XONG. Không cần gì phức tạp hơn.