KB-746D

BỔ SUNG KHẨN CẤP S112 — Chỉ đếm 16 loại nguyên tử, loại log records

3 min read Revision 1

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:

  1. Chỉ đếm 16 loại nguyên tử
  2. Hiển thị đúng trên web
  3. So sánh PG vs Directus API vs VPS files XONG. Không cần gì phức tạp hơn.