KB-47A2

GPT review — Rev 6 simplification check / Sửa rẻ Nhập UI v0

5 min read Revision 1
sua-renhap-uigpt-reviewrev6simplificationoperations2026-07-06

GPT REVIEW — Rev 6 simplification check / Sửa rẻ Nhập UI v0

Ngày: 2026-07-06
Phạm vi: đọc kế hoạch ke-hoach-nhap-ui-v0.md Rev 6 + compat-review-2026-07-06.md + nội dung user chuyển tiếp.
Trạng thái: REVIEW, chưa phải execution. Không DDL/DML.

1. Verdict

Rev 6 đúng hướng và không cần đổi kiến trúc. Các bổ sung về kit, Definition of Done, companion, G1b, và vector policy nhìn chung là khóa vận hành cần thiết, không phải quái vật.

Nhưng cần vá vài chỗ để giữ đơn giản và tránh biến pre-flight thành bụi rậm.

2. Những bổ sung KHÔNG làm phức tạp

  1. Definition of Done: UI file + companion .scan.json + validation PASS. Đây là cách đơn giản nhất để Cowork không quên.
  2. Companion cạnh UI: đúng tinh thần “túi thuốc”. Không cần registry UI ở v0.
  3. scan_id = hash canonical JSON: cần để tránh scan giả do format JSON.
  4. item_key location-or-index: cần vì location là tùy chọn.
  5. pending dedupe = hash(raw_label + purpose): an toàn hơn chỉ hash raw_label; overcount dễ sửa hơn undercount.
  6. Owner decision 3 action: map_existing/create_new/keep_pending là đủ.
  7. No-vector policy: nếu tạo Directus collection thì phải có collection_registry_vector_policy=false; SPE-NVS chỉ là nhãn, không enforce.

3. Những điểm có nguy cơ phức tạp hóa

3.1 Path A đang bị kéo thành quá nhiều việc

Path A dùng dot-collection-create có thể kéo theo collection, registry, species, permissions, vector policy, constraints, rollback. Nếu cố ép Path A trong khi tool không kham, sẽ lại sinh patch/dot phụ.

Đề xuất đơn giản:

  • Path A chỉ chọn nếu pre-flight chứng minh dùng khuôn sẵn được với rất ít thao tác: create collection/table + import + vector policy false + rollback rõ.
  • Nếu Path A cần nhiều vá tùy biến, chọn Path B PG-only tạm thời. Không cố cứu Path A bằng nhiều lớp bọc.

3.2 No-vector nên là điều kiện có điều kiện

No-vector policy chỉ cần khi 2 bảng được đăng ký thành collection/collection_registry.

Quy tắc đơn giản:

  • Nếu G1 dùng Path A và tạo Directus collection → bắt buộc insert policy vector_eligible=false, semantic_search_eligible=false ngay trong G1.
  • Nếu G1 dùng Path B PG-only, chưa có collection_registry → không cần policy ở G1.
  • SPE-NVS chỉ là nhãn tùy chọn, không là gate chính.

3.3 Dòng chảy current+history không nên tự tách bảng

Usage table giữ current + history trong một bảng có thể làm người đọc lo “trộn nguyên tử/log”. Nhưng tách thêm history table sẽ phức tạp hóa v0.

Đề xuất mặc định: giữ một bảng usage với is_current. Chỉ tách history nếu Claude Code trích được luật cấm cụ thể. Không tự thêm bảng.

3.4 Coverage report không nên thành report/UI mới ở v0

Coverage v0 nên là audit/output của cổng hoặc pre-flight: file .html thiếu companion, companion chưa import. Chưa cần publish lên /reports.

3.5 Trạng thái tài liệu đang lệch Rev

File header là Rev 6, nhưng metadata/title và một vài chỗ vẫn nói Rev 5. Cần vá đồng bộ để tránh agent nhầm.

4. Lỗ hổng vận hành còn phải soi trước execution

  1. dot-pg-atomic-apply có nhận companion JSON không, hay cần agent chuyển JSON → SQL trong một atomic apply?
  2. dot-collection-create có tạo được JSONB/FK/unique/check không, hay chỉ standard fields?
  3. Rollback chuẩn của tool là gì?
  4. Nếu tạo collection, vector policy exclusion có thể apply idempotent không?
  5. Usage table current+history có bị luật dòng chảy cấm không? Mặc định không tách, chỉ tách nếu luật bắt buộc.
  6. Coverage filesystem có chạy đúng root /opt/incomex/docs/mcp-writes/ui-preview/ và exclude đúng không?
  7. Canonical JSON/hash/item_key có tạo 30 unique keys từ seed thật không?

5. Đề xuất patch nhỏ vào Rev 6

  1. Đồng bộ nhãn: toàn file gọi là Rev 6 / HOLD_PRE_FLIGHT; metadata/title không còn Rev 5.
  2. §7 Path A: thêm điều kiện “Path A chỉ chọn nếu không cần nhiều patch tùy biến; nếu phải vá nhiều thì Path B đơn giản hơn.”
  3. §7/G-C: viết rõ vector policy chỉ bắt buộc khi collection được đăng ký; Path B PG-only không cần policy ở G1.
  4. §7/§11: SPE-NVS là nhãn tùy chọn, không phải enforcement và không phải blocker.
  5. §9 thêm gate: “Không được đề xuất tách history table trừ khi có trích dẫn luật cấm current+history trong một bảng.”
  6. §3A coverage: ghi rõ coverage v0 là audit/output, chưa cần publish /reports.

6. Verdict cuối

Không cần đổi kiến trúc. Không cần thêm bảng. Không cần thêm parser, watcher, UI, vector, decision-DOT, hoặc registry mới.

Đường đơn giản nhất vẫn là:

UI + companion -> import gate -> 2 bảng PG -> view đếm -> Owner quyết -> report sau khi G1b pass.

Chỉ cần làm sạch điều kiện Path A/Path B, no-vector conditional, và thống nhất Rev label trước khi giao Claude Code pre-flight.