KB-57AE
TD-131 Vector-Document Sync Investigation Report
2 min read Revision 1
TD-131 Vector-Document Sync Investigation Report
Date: 2026-03-11 | Agent: Claude Code (Opus 4.6)
Root Cause
KHÔNG phải bug sync logic. Chuỗi CRUD → Vector hoạt động đúng qua API.
Vấn đề: S109 import script (import_firestore_to_pg.py) ghi trực tiếp SQL vào PG, bypass toàn bộ API layer → PG có 868 soft-deleted docs mà Qdrant không biết → 137 orphan vectors (497 - 360).
5 Câu trả lời
- webhooks = 0: webhook_config.json có "active": false. ĐÚNG thiết kế — vector sync hardcoded trong CRUD, không qua webhook.
- Health "ok" khi ratio=1.4: Threshold sai: ratio > 50 mới warning. 1.4 nằm trong "ok". Cần sửa: >1.1 warning, >1.3 critical.
- DOT tools không phát hiện: dot-orphan-scan quét Directus registry, KHÔNG quét Qdrant. dot-selftest quét UI. Thiếu dot-vector-audit.
- Chuỗi sync: create/update/delete_document() → _sync/_delete_vector_entry() → Qdrant. Trực tiếp trong code, không qua event system.
- Gãy từ đâu: S109 import script bypass API. Không phải lỗi sync code.
Lỗ hổng giám sát phát hiện
- Health check threshold > 50 (vô nghĩa cho ratio nên ≈ 1.0)
- DOT tools không quét vector layer
- system_issues (CAT-017) không tự phát hiện vector drift
- Toàn bộ Tầng 5 giám sát CÓ LỖ HỔNG ở vector layer
Bài học
- KHÔNG BAO GIỜ ghi trực tiếp SQL bypass API → vector không đồng bộ
- Health check phải cảnh báo đúng: ratio > 1.1 warn, > 1.3 critical
- Cần DOT tool quét vector orphan (dot-vector-audit)
- Quy tắc đã thêm vào Operating Rules §9.3