KB-4F24

Rà soát tương thích hệ thống — Sửa rẻ v0 ⇄ Incomex (meta_catalog, species, vector pipeline, dòng chảy data)

8 min read Revision 1
sua-renhap-uicompat-reviewvector-policyno-vectormeta-catalogentity-speciesdata-flow2026-07-06fable

RÀ SOÁT TƯƠNG THÍCH HỆ THỐNG — "Sửa rẻ / Nhập UI v0" ⇄ phần còn lại của Incomex

Ngày: 2026-07-06 · Tác giả: Fable (Reviewer #3) · Cách làm: READ-ONLY — query PG thật (query_pg, information_schema, pg_get_viewdef) + search_knowledge. Không DDL/DML. Đối tượng: kế hoạch ke-hoach-nhap-ui-v0.md (Rev 5) đặt cạnh: meta_catalog, entity_species, vector pipeline/Qdrant (D36/D44 NVSZ), collection_registry, table_registry, dòng chảy data, 4 Bà Mẹ. VERDICT: Cốt lõi sửa rẻ TƯƠNG THÍCH và đứng riêng — KHÔNG giẫm hệ đã có. Có 1 lỗi thật phải sửa (cơ chế no-vector), 1 điểm cần xác nhận (dòng chảy data), và vài ghi chú clarity. Không có xung đột kiến trúc lớn.


Ⓐ Catalog khái niệm ⇄ meta_catalog — KHÔNG TRÙNG (khác tầng)

meta_catalog (169 dòng) = catalog của KHO DỮ LIỆU / loại thực thể: mỗi dòng một collection/table với source_model, source_location, registry_collection, sync_script, record_count, composition_level, identity_class, atom_group… → trả lời "hệ có những kho nào".

sua_re_khai_niem_nhap = catalog nhãn-UI-mức nghiệp vụ (Người lập, Ngày lập, Trạng thái quy trình…) → trả lời "nhãn UI trỏ tới những khái niệm phân biệt nào".

Hai tầng khác nhau, không duplicate. meta_catalog thô (một dòng/kho), sửa rẻ mịn (một dòng/nghĩa-nhãn). ⇒ cốt lõi sửa rẻ đáng giá, đứng riêng — xác nhận đúng nhận định Owner.

  • Lưu ý phụ (không chặn): 2 bảng sua_re, khi tạo qua Path A, sẽ tự có một dòng trong meta_catalog (như MỌI collection) — đó là hệ đăng ký chúng ở tầng kho, đúng và mong đợi. Nội dung 13 khái niệm KHÔNG vào meta_catalog.

Ⓑ Taxonomy loài ⇄ concept_kind — ổn, một ghi chú clarity

entity_species phân loại KHO/THỰC THỂ (species catalog/collection/page/table_ui/task/workflow/workflow_step + composition atom/molecule/compound). concept_kind (sửa rẻ) phân loại NHÃN-UI (workflow/step/task/field/role/org).

  • Đã tránh va chạm CỘT: đổi loaiconcept_kind (khỏi đụng "loài"=entity_species). ✔
  • Còn chồng TỪ VỰNG: workflow/step/task có trong CẢ hai taxonomy. Khác tầng (species=thực thể workflow; concept_kind=nhãn trỏ tới workflow) nhưng dễ khiến agent lẫn. → Ghi chú clarity: trong README kit + doc, nói rõ concept_kind là từ vựng RIÊNG mức nhãn-UI, KHÔNG phải species. Không phải lỗi, chỉ cần một câu phân định.

Ⓒ Vector pipeline / Qdrant — ⚠️ LỖI THẬT PHẢI SỬA

Phát hiện (tool-verified): cơ chế no-vector KHÔNG đến từ loài SPE-NVS. Nó đến từ public.collection_registry_vector_policy (sidecar per-collection: vector_eligible bool, semantic_search_eligible bool, policy_reason) + view v_collection_vector_eligibility.

Định nghĩa view (đọc thật):

COALESCE(crvp.vector_eligible, true) AS vector_eligible

MẶC ĐỊNH = true (OPT-OUT). Collection đăng ký mà KHÔNG có policy row → mặc định ĐỦ điều kiện vector hóa + semantic search.

Bằng chứng cơ chế: chỉ 2 dòng policy tồn tại — iu_staging_record + iu_staging_payload, cả hai vector_eligible=false, policy_reason="D36 Rule N1 — No-Vector Staging Zone…". Tức NVSZ enforce no-vector bằng policy row, KHÔNG bằng species. entity_species không có cột vector nào.

Hệ quả cho sửa rẻ:

  • Plan Rev 5 §7 ghi "map species SPE-NVS → giải no-vector"SAI/thiếu. SPE-NVS chỉ là nhãn taxonomy; không chặn vector. Nếu chỉ gắn SPE-NVS mà không thêm policy row, data khái niệm nháp (chưa Owner duyệt) sẽ đủ điều kiện lọt vào embedding + semantic search — đúng thứ D36 cảnh báo ("contaminating retrieval").
  • SỬA (đúng cơ chế hệ, D36 đã dùng): khi 2 bảng sua_re trở thành collection (Path A ở G1, hoặc G2 nếu Path B), BẮT BUỘC insert 2 dòng collection_registry_vector_policy vector_eligible=false, semantic_search_eligible=false, policy_reason='sua-re draft — not for embedding/semantic search' (idempotent precheck). Đây là 2 dòng vào bảng SẴN CÓ, không đẻ cơ chế mới.
  • SPE-NVS giữ lại như nhãn taxonomy tùy (đánh dấu "vùng nháp"), tách khỏi chuyện enforce no-vector.
  • Điểm nghiêng Path: Path B (bảng PG-thuần, KHÔNG đăng ký collection_registry) thì KHÔNG có dòng eligibility nào → inherently no-vector ở giai đoạn nháp. Path A phải thêm exclusion tường minh. Cả hai đều làm được; chỉ là Path A gánh thêm 2 dòng.

Ⓓ Va chạm tên — SẠCH

Query thật: 0 kết quả cho sua_re* / v_report_sua_re / report-sua-re / report_sua* trong information_schema.tables, table_registry (table_id/page_url/collection/view_name), collection_registry, entity_species. ⇒ tên sua_re_khai_niem_nhap, sua_re_ui_khai_niem_nhap, v_report_sua_re, /reports/report-sua-re đều trống, dùng được.

Ⓔ Dòng chảy data (Nguyên tử / Log / Action — "không trộn") — CẦN XÁC NHẬN

  • Bảng khái niệm = dữ liệu Nguyên tử (định nghĩa, 1 bản/khái niệm) → sạch, đúng loại.
  • Bảng usage giữ CẢ bản current (is_current=true) LẪN bản cũ (is_current=false) trong một bảng → có màu Log (lịch sử scan) lẫn Nguyên tử (usage hiện hành). Câu hỏi: có vi phạm "không trộn" không?
  • Tiền lệ có lợi: IU system (iu_core.iu_staging_record) versioning + 7-state lifecycle trong một bảng — tức versioning-trong-bảng đã có tiền lệ được chấp nhận. Và is_current là mẫu chuẩn, không phải trộn 3 dòng chảy kiểu event-log + entity + action-queue.
  • Đánh giá Fable: nhiều khả năng ổn — usage table là MỘT thứ mạch lạc (quan sát UI theo scan, có phiên bản), không phải nhồi ba dòng chảy. Nhưng đây là câu governance → cần Owner/Claude Code xác nhận so luật dòng chảy thật (Đ22–Đ45) trước G1. Nếu muốn tuyệt đối sạch: tách bản cũ sang view/history riêng — NHƯNG đó là phức tạp hóa, chỉ làm nếu luật buộc.

Ⓕ Birth-gate / governance_role / cơ chế dot-collection-create — đã nằm trong pre-flight

collection_registryspecies_code + governance_role; dot-collection-create làm birth + species + permissions. Những cái này là hành vi của tool, đã được hỏi trong §9 G-A (tạo chính xác gì, birth?, governance_role?) và G-C (species map). ⇒ không cần đào thêm ở đây; Claude Code trả lời khi chạy §9.

Ⓖ 4 Bà Mẹ (MOW/MOT/MOIT/MOUT) — tương thích ở tầng khái niệm, tích hợp để G3+

Mission dài hạn: "đúc task/MOIT/MOUT từ UI Cowork vẽ". concept_kind (workflow/step/task/field/role/org) trùng miền với đầu vào Mẹ (field+trigger+person). ⇒ cùng ngôn ngữ, không xung đột. Nhưng nối sửa-rẻ → Mẹ là việc G3+, KHÔNG phải v0. v0 chỉ đếm/so khái niệm; đúc task để sau. Không có gì phải làm bây giờ, chỉ ghi nhận hướng khớp.


TÓM: THAY ĐỔI PLAN (Rev 6) TỪ VÒNG NÀY

  1. [BẮT BUỘC] Sửa cơ chế no-vector §7: SPE-NVS = nhãn taxonomy tùy (KHÔNG enforce); no-vector = insert collection_registry_vector_policy vector_eligible=false, semantic_search_eligible=false cho 2 collection (idempotent). Nêu rõ mặc định eligibility = true (opt-out).
  2. [Pre-flight] Mở rộng G-C thành "vector-exclusion": Claude Code xác nhận dot-collection-create để mặc định eligibility (true) hay tự set policy; xác nhận insert exclusion chạy được + precheck (bảng policy chưa có unique?).
  3. [Ghi chú] Ⓑ clarity: README kit + doc nói rõ concept_kind ≠ species.
  4. [Xác nhận] Ⓔ dòng chảy: thêm mục pre-flight/Owner: usage table (current+history một bảng) có hợp luật dòng chảy Đ22–Đ45 không.
  5. [Ghi nhận] Ⓖ: nối 4 Mẹ để G3+, không v0.

KHÔNG có xung đột nào buộc đổi kiến trúc 2-bảng hay bỏ hướng. Cốt lõi sửa rẻ giữ nguyên.