KB-2DC6

HANDOFF — Sửa rẻ (chuyển phiên 2026-07-06): mục tiêu, hiện trạng, kế hoạch v0, recon, nợ

7 min read Revision 1
sua-rehandoffchuyen-phienpg-draftsimplicityrecon2026-07-06

HANDOFF — "SỬA RẺ" (chuyển phiên, 2026-07-06)

Đọc file này TRƯỚC. Nó là điểm vào cho phiên mới. Kèm theo: (a) kế hoạch chi tiết knowledge/dev/laws-new/kestra/sua-re/nhap-ui/ke-hoach-nhap-ui-v0.md (Rev 2), (b) báo cáo GAP của Codex (đang chạy song song — đối chiếu TRƯỚC khi DOT).


🎯 MỤC TIÊU (thu về một câu)

Làm cho việc sửa/mở rộng thật RẺ — sửa rẻ cho: thiết kế UI, xây quy trình, và đúc task/MOIT/MOUT mới từ chính UI mà Cowork vẽ. Cụ thể ngay trước mắt: Cowork thiết kế UI thoải mái, KHÔNG mất thời gian kiểm điểm hợp đồng thông tin — PG lo phần đếm đầu mối / khử trùng / so khái niệm cũ-mới.

Chuỗi giá trị: Cowork vẽ UI → đếm nhanh đầu mối (PG) → biết cần khái niệm nào (cũ/mới) → viết hợp đồng thông tin → đúc collection/task/MOIT/MOUT. Công cụ đếm 2-bảng là phương tiện, không phải đích.


🚨 NGUYÊN TẮC SỐ 1 — ĐƠN GIẢN (đọc trước mọi thứ khác)

Council (Fable/GPT/Cowork) có xu hướng bơm phức tạp: mỗi bên thêm một thứ "đúng khi xét riêng", cộng lại thành nhà quái vật. Đã lạc 2 lần (3 tháng trước + 3 ngày vừa rồi). Owner phải liên tục kéo về — đó là dấu hiệu quy trình lỗi, không phải Owner khó tính.

PHANH bắt buộc mỗi khi định thêm gì:

  • Hỏi: "Cowork làm việc này bằng mấy câu?" Nếu prompt/kế hoạch của bạn dài hơn nhiều → đang sai, cắt.
  • Ranh giới cứng: v0 = 2 bảng + vài SELECT + cắm vào registry sẵn có + đúc portal bằng khuôn cũ. HẾT. Vượt ra (thêm bảng / component / cơ chế thông minh / tự cảnh báo) → DỪNG, hỏi Owner.
  • Nhớ: 4 Bà Mẹ (UI khổng lồ, nghiệp vụ phức tạp) mà Cowork làm rất nhẹ. Nếu việc của ta phức tạp hơn hẳn → ta đang tự làm khó.

🔍 KỶ LUẬT SỐ 2 — KIỂM THỰC TẾ, ĐỪNG ĐOÁN

Đừng viết kế hoạch/prompt trên giả định. Recon 2026-07-06 đã bắt 2 lỗi trong kế hoạch trước khi kịp chạy DOT (xem dưới). Codex đang soi GAP thêm — kế hoạch phải khớp Codex TRƯỚC khi chạy DOT. Đọc file/query thật rồi mới kết luận (web_fetch có thể dính cache → đọc đĩa/DB là chuẩn).


HIỆN TRẠNG (đã build + verified LIVE)

Hệ pilot JS (SHADOW, trong /opt/incomex/docs/mcp-writes/ui-preview/, bind-mount nginx, sửa=live ngay):

  • concept-ledger.js v0.5 = 13 thẻ (sổ khái niệm). Sắp retire → migrate sang PG.
  • ui-contracts.js v0.1-chot2 = 30 usage items / 14 khái niệm (27 matched + 2 candidate + 1 review sau CHỐT #2). Sắp retire.
  • verify-contracts.js (máy kiểm), SUA-RE-README.md, quy-trinh-sua-re.html (2 lớp + hàng chờ chốt). Sẽ đóng băng khi PG lên.
  • Git: GIT="git --git-dir=/opt/incomex/git/ui-preview.git --work-tree=/opt/incomex/docs/mcp-writes/ui-preview". Tag mới nhất v13-chot2 (LOCAL-ONLY — chưa có remote/bundle = death-point).
  • 2 file khóa (sha PHẢI giữ): system-manifest.js (76194B), qa-contracts.js (59745B).
  • QA: headless throttle-off (3 cờ --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-renderer-backgrounding), runner ở /opt/incomex/work/suare-*/. Tiêu chí xanh = fail:0 + reds:[] (bỏ wdcut/warn nhiễu).

CHỐT #2 đã xong (Owner duyệt): tạo 4 thẻ (field.duong_dan_7_tang, role.nguoi_lap, field.ngay_lap, field.trang_thai_quy_trinh); hoãn 2 (lien_ket_me, co_tu_dong).


KẾ HOẠCH v0 (đích) — ĐỌC DOC KB, đây chỉ tóm

2 bảng nháp PG trong DB directus: sua_re_khai_niem_nhap (danh mục = định nghĩa, 1 bản/khái niệm) + sua_re_ui_khai_niem_nhap (bảng kê từng UI/scan, mô tả công dụng nhiều bản bất biến). PG đếm/khử trùng/so. JS retire. Tích hợp reports/loài/balo bằng khuôn sẵn có. 6 guard toàn vẹn (purpose CHECK≥15, dedupe_key NOT NULL, match_status rule, scan-current guard, registry idempotent, tách GĐ1/GĐ2). Chi tiết đầy đủ + schema + SELECT mẫu: trong doc KB Rev 2.

RECON ĐÃ XÁC MINH (query PG thật — DÙNG ĐƯỢC)

  1. DB directus có sẵn 4 ổ cắm: table_registry, entity_species, species_collection_map, balo_thuc_the.
  2. Loài "quy trình" ĐÃ TỒN TẠI = workflow (display "Quy trinh", SPE-WKF), cùng họ catalog/table_ui/page/task/workflow_step. ⇒ KHÔNG tạo loài mới — tái dùng (catalog cho bảng danh mục là ứng viên mạnh). Nếu không: tự đẻ khái niệm trùng = đúng thứ hệ này diệt.
  3. Reports = Directus collection + table_registry(collection, page_url), KHÔNG dùng view_sql. ⇒ 2 bảng phải đăng ký thành Directus collection trước khi lên portal / gắn loài. (GĐ2 phải recon công thức đăng ký collection thật trước.)
  4. incomex_metadata: chỉ plpgsql/postgres_fdw (không pg_trgm).

CHỜ OWNER CHỐT (5 điểm — §8 doc KB)

  1. purpose ≥15 ký tự (đã thành CHECK) — đề xuất ✔. 2. Loài tag: catalog? table_ui? workflow? — CẦN OWNER. 3. v0 không tự bật review khi mô tả lệch — ✔. 4. Bảng ở DB directus — ✔. 5. GĐ2 recon collection recipe trước DOT — ✔.

GIAI ĐOẠN TIẾP

  • Đối chiếu GAP của Codex với kế hoạch → sửa nếu lệch.
  • GĐ1 (sau khi Owner chốt 5 điểm): prompt Claude Code → DOT tạo 2 bảng thường (kèm 6 guard) + migrate 13 khái niệm/30 usage từ JS → JS đóng băng → chạy SELECT đếm. Đếm nhanh chạy được. (Chưa cần Directus collection.)
  • GĐ2: recon collection recipe → đăng ký 2 collection → insert reports/loài/balo (idempotent).
  • HOÃN (không làm bây giờ): pg_trgm (~300 khái niệm), Qdrant, tab UI thật.

HẠ TẦNG (facts agent cần)

  • MCP: Incomex VPS (query_pg read các DB directus/incomex_metadata/workflow; pg_schema; read_file allowlist /opt/incomex/docs+/dot/specs+/var/log/nginx; write_file CHỈ /opt/incomex/docs/mcp-writes/; list_docker). Incomex KB (search_knowledge/get_document/upload_document/update_document/patch_document).
  • 100% DOT cho mọi DDL + ghi PG (cổng dot-pg-atomic-apply). Fable/MCP đây CHỈ read PG → không tự tạo bảng; Claude Code/claude-go trên VPS chạy DOT.
  • PG→app chỉ qua Directus/Nuxt bằng khuôn (đăng ký collection + table_registry + SharedDirectusTable). Không Codex ở Nuxt — cần UI thì đổ khuôn (khuôn A route + DOT B publish view).
  • Council: Fable (Reviewer #3/prompt-author, kiểm thực tế bằng tool), GPT (bắt lỗi logic/wording — nhưng hay đoán sai trạng thái file, khi vênh thì tool-verified thắng), Cowork (vẽ UI). Cadence: 1 vòng GPT/prompt rồi chạy (trừ lỗi cấu trúc thật).

NỢ (task riêng, đừng trộn)

  • Bundle backup off-VPS cho ui-preview.git (chuỗi v8→v13 local-only — rủi ro mất trắng). Làm TRƯỚC khi đụng nhiều hơn.
  • ~51 file untracked trong docroot (chưa điểm lùi) — audit riêng.
  • MEMORY.md ~995KB (chỉ ~24KB được nạp) — backup + tạo index ngắn, KHÔNG tự nén mù, chờ Owner duyệt.

Câu cuối cho phiên mới: đích không phải "xây hệ đếm khái niệm hoành tráng". Đích là Cowork vẽ UI mà không tốn công kiểm điểm, và mọi thứ sửa được rẻ. Nếu thấy mình đang xây to hơn thế → dừng lại, hỏi Owner. Đơn giản trước.