KB-1EA2

Tổng hợp phiên S111 — PostgreSQL + Assembly First

5 min read Revision 1

TỔNG HỢP PHIÊN S111 — 2026-03-12

8 missions trong 1 phiên. Thành tựu chính: chuyển đếm sang PostgreSQL. Nhiều bài học đau thương.


I. MISSIONS ĐÃ CHẠY

Mission PRs Kết quả Ghi chú
Mission D #485 ✅ DONE Nhật ký format, tổng nguyên tử, cột kiểm chứng, auto deploy sync
Mission E #486-487 ⚠️ PARTIAL CAT-ALL có số, /registries/all có data, dot-id-collision-check ✅. NHƯNG: đếm sai, nav bị xoá, agent báo 17/17 KHỚP khi thực tế FAIL
Mission E-FIX #488 ⚠️ PARTIAL Crosscheck logic fix, header fix, baseline fix. Nhưng CAT-006/007 vẫn lệch
Mission E-FIX-2 #489 ✅ DONE Nav khôi phục 5 mục, header 20 loại, điều tra DOT/Pages
S108-REGISTRY-PG #490 ✅ DONE Chuyển đếm sang PG TABLE + FUNCTION. Directus API hoạt động
S111-COUNT-VERIFY #491 ⚠️ PARTIAL 3 cách đếm nhưng count_a≈count_b vô nghĩa cho Model B

II. THÀNH TỰU CHÍNH

  1. Chuyển đếm sang PostgreSQL — v_registry_counts + v_registry_summary + refresh_registry_counts() FUNCTION
  2. Luồng đúng kiến trúc: PG → Directus → Nuxt (không bypass)
  3. Phát hiện Directus 11.5.1 không introspect VIEW → dùng TABLE + FUNCTION
  4. Nav khôi phục — Knowledge, Modules, Tasks, Workflows, Registries
  5. dot-id-collision-check — 660 codes scanned, 0 collision

III. VẤN ĐỀ CÒN TỒN ĐỌNG (ưu tiên cho S112)

🔴 P0 — Cross-check Model B vô nghĩa

count_a và count_b đều đếm CÙNG TABLE PG → luôn khớp. Với Model B (DOT tools, Pages, Agents = file scan): cần so Directus record vs VPS files. CAT-006 (108≠118) và CAT-007 (37≠38) vẫn báo KHỚP = VÔ LÝ.

🔴 P1 — Header vs CAT-ALL không nhất quán

Header hiện 1527, CAT-ALL hiện 1542. Số liệu thay đổi giữa các lần refresh do changelog liên tục tăng.

🔴 P2 — 814 orphan gây hoang mang

783 changelog + 31 system_issues = log records không có PREFIX-NNN. Đây là bình thường nhưng hiển thị "814 mồ côi" gây hoảng. Giải pháp: Phân biệt "orphan thực sự" vs "log records không cần code".

🟡 P3 — AD↔Directus Sync Gap

Agent Data 162 docs, Directus 174 docs → gap 12. Cần điều tra.

IV. BÀI HỌC S111 (Huyen — ghi vĩnh viễn)

  1. "Stupid = đi làm lại cái xã hội đã làm rồi." 4 tầng code đếm vs 1 câu SQL. Hơn 10 lần vi phạm Assembly First, mất hàng chục ngày.
  2. Assembly First câu 0 = PostgreSQL. DB làm việc DB giỏi nhất. Đếm, quan hệ, bắc cầu, constraint = PG.
  3. ID sinh từ PG TRIGGER, KHÔNG Directus Flow. 13 AUTO-ID Flows fail → 776+ orphan. PG TRIGGER = 0 orphan by design.
  4. Luồng data: PG → Directus → Nuxt. KHÔNG BAO GIỜ bypass Directus.
  5. SCOPE LOCK. Agent tự ý sửa navigation → mất 2 mission fix. Agent chỉ được sửa files trong scope.
  6. VERIFY ĐẾM. Agent báo 17/17 KHỚP khi thực tế FAIL. Phải đối chiếu TỪNG DÒNG số liệu.
  7. Directus 11.5.1 không introspect VIEW → dùng TABLE + FUNCTION refresh.

V. TÀI LIỆU ĐÃ CẬP NHẬT S111

Tài liệu Version Nội dung
Operating Rules v4.18 Assembly First viết lại (PG #1). Assembly Gate v2 (6 câu, câu 0=PG). ID từ PG TRIGGER. SCOPE LOCK. VERIFY ĐẾM. Luồng PG→Directus→Nuxt. Directus VIEW limitation.
Hiến pháp v3.2 Điều 5 K3 cập nhật. Điều 7 K1 thêm PG ưu tiên #0. Migration entries DONE.
tech-debt.md S111 TD-123✅, TD-085✅, TD-122✅, TD-111✅. TD-132 (đếm+bugs), TD-133 (PG native + ID TRIGGER).
roadmap.md v3.0 Viết lại toàn bộ. 42 PRs, Phase 2 chi tiết.
sync-governance.md v1.4 Phase 2 cập nhật.
current-state/index.md S111 S111 entry chi tiết. TD summary. Lớp 1/2/3 status.
s108-s109-session-summary.md rev 4 TD ĐÃ DONE + kế hoạch mới.
urgent-pg-view-architecture.md NEW Luồng PG→Directus→Nuxt, KHÔNG bypass.
Memory Cập nhật Assembly First = PG first.

VII. INSIGHT CUỐI PHIÊN (Huyen — quan trọng nhất)

  1. CHỈ ĐẾM NGUYÊN TỬ ĐÚNG ĐỊNH NGHĨA. 16 loại là nguyên tử. changelog + system_issues = log records, KHÔNG PHẢI nguyên tử → KHÔNG ĐẾM. 814 "orphan" là do đếm nhầm.
  2. Cross-check từ 1 bảng = VÔ NGHĨA. Bảng sai → tất cả sai theo. Cần 3 nguồn THỰC SỰ KHÁC: PG direct, Directus API, VPS files. Mục tiêu: TÌM SỰ THẬT, không tìm con số.
  3. ID đã có trong PG. Sinh ID bên ngoài = sai mọi nguyên tắc = nguồn gốc orphan. PG TRIGGER sinh ID = giải pháp gốc rễ.
Ưu tiên Việc TD
🔴 P0 Fix cross-check Model B (so Directus vs VPS, không phải PG vs PG) TD-132
🔴 P1 Phân biệt orphan thực vs log records không cần code TD-132
🔴 P2 PG TRIGGER sinh ID thay 13 Directus Flows → 0 orphan TD-133
🟡 AD↔Directus sync gap 12 docs Mới
🟡 Lớp 3 quan hệ PG CTE TD-133