G1-2A Render Seed — READY_FOR_AUDIT
G1-2A Render Seed — READY_FOR_AUDIT
Ngày: 2026-07-07. Nhiệm vụ: SỬA RẺ G1-2A — render seed-map vàng + SQL vàng cho "LẬP sổ khái niệm UI" (pilot master-list-quy-trinh-v1 / scan_0). CHƯA APPLY: 0 append manifest, 0 chạy dot-pg-atomic-apply, 0 ghi PG.
1. Verdict
READY_FOR_AUDIT
2. Seed sources (đọc thật, byte-exact)
- concept-ledger:
/opt/incomex/docs/mcp-writes/ui-preview/concept-ledger.js— sha256ad89043ab288a3b0ee0af586ef803f3d5a46495d76a5f7e57fbdfa2740b24920(22306 B),window.CONCEPTS.items= 13 thẻ, version v0.5. - ui-contracts:
/opt/incomex/docs/mcp-writes/ui-preview/ui-contracts.js— sha256d18f59de4426701bce5d07b86ca9ce43b05c892f571ef9d23197bb1d076265e3(20132 B),surfaces[0].surface_id = 'master-list-quy-trinh-v1'= 30 điểm dùng, version v0.1-chot2. - Cách đọc:
ssh catvề máy render, sha256 đối chiếu khớpsha256sumtrên VPS (0 chép tay, 0 bịa).
3. Golden seed-map
- path:
/opt/incomex/docs/mcp-writes/sua-re/golden/import-seed-master-list.seed-map.golden.json - sha256:
4cce468a139f3bc589e40e01feaa4b23c39ea5c9bbfb16ffd2f5a00332e1aa77(38879 B) - concepts count: 13 (13 concept_key distinct)
- usages count: 30
- slot_key distinct: 30 · item_key distinct: 30 · location_anchor distinct: 30
- anchor split: 14 config_key / 2 code_marker / 14 text_marker = 30
- matched/candidate/review theo seed: 27 / 2 / 1 (candidate = 2×
candidate.lien_ket_me; review = 1×review.co_tu_dong) - Cấu trúc:
{ui_id:'master-list-quy-trinh-v1', scan_id:'scan_0', concepts[13], usages[30]}; map đúng đặc tả G1-2A (concept: id→concept_key, name→ten, type→concept_kind, description→mo_ta, boundary→ranh_gioi, aliases||[], match_policy||'auto', status='active', first_seen_/contract_ref/promoted_at=null; usage: location_anchor=kind:':'||COALESCE(key,marker), slot_key=ui_id||'::'||anchor, item_key=slot_key||'::'||scan_0, anchor_quality strong/strong/weak, dedupe_key=duplicate_group, concept_key_ref chỉ khi matched, near_concepts||[], owner_/decision_*=null). Không nạp examples/non_examples/locations.
4. Golden SQL
- golden_sql_path:
/opt/incomex/docs/mcp-writes/sua-re/golden/import-seed-master-list.golden.sql - apply_sql_path:
/opt/incomex/dot/sql/sua-re/import-seed-master-list.sql(copy bằngcptừ golden, không viết riêng) - sha256 (cả golden VÀ apply, trùng nhau):
e17cae62240a8d73a28bcccf79718dbe714d54ebf9209894a94b7199ba730d5c(47958 B, 1172 dòng) - diff result:
diff -u golden apply= RỖNG (byte-identical, sha256 khớp cả bản render local) - Nội dung: chỉ 43 INSERT (13 concept trước → 30 usage sau),
ON CONFLICT (concept_key|item_key) DO NOTHING; concept_id = subquery(SELECT id FROM public.sua_re_khai_niem_nhap WHERE concept_key = …)cho 27 matched,NULLcho 3 không matched; không có cột match_status (GENERATED); text/jsonb seed-derived đều dollar-quoting ($sr_text$…$sr_text$,$sr_json$…$sr_json$::jsonb, tag tự đổi nếu collision); nháy đơn chỉ cho 3 hằng kỹ thuật'master-list-quy-trinh-v1','scan_0','active'; bỏ qua id/date_created/scan_at (IDENTITY / DEFAULT now() — đã verify information_schema).
5. Self-check seed-map (20/20 PASS)
| # | Mục | Kết quả |
|---|---|---|
| 1 | concepts.length = 13 | PASS (13) |
| 2 | usages.length = 30 | PASS (30) |
| 3 | 13 concept_key distinct | PASS (13) |
| 4 | 30 slot_key distinct | PASS (30) |
| 5 | 30 item_key distinct | PASS (30) |
| 6 | không slot_key chứa raw_label | PASS |
| 7 | không slot_key chứa scan_id | PASS |
| 8 | không slot_key dùng chỉ số mảng [n] | PASS (chỉ có items[] rỗng) |
| 9 | concept_kind ⊆ {workflow,step,task,field,role,org,relation} | PASS (dùng 6/7, không có relation) |
| 10 | mọi mo_ta ≥ 15 ký tự (btrim) | PASS |
| 11 | mọi purpose ≥ 15 ký tự (btrim) | PASS |
| 12 | mọi location.kind ⊆ {config_key,code_marker,text_marker} | PASS |
| 13 | mọi matched ref ∈ 13 concept_key | PASS (12 key được dùng) |
| 14 | đúng 27 usage matched theo seed | PASS (27, khớp 27 concept_key_ref non-null) |
| 15 | đúng 2 candidate theo dedupe_key candidate.* |
PASS (2) |
| 16 | đúng 1 review theo dedupe_key review.* |
PASS (1) |
| 17 | anchor split 14/2/14, tổng 30 | PASS |
| 18 | 30 location_anchor distinct | PASS (30) |
| 19 | mọi aliases là array, không NULL | PASS (13/13) |
| 20 | mọi near_concepts là array, không NULL | PASS (30/30; matched → []) |
6. Self-check SQL (20/20 PASS)
| # | Mục | Kết quả |
|---|---|---|
| 1 | đúng 13 INSERT concept | PASS |
| 2 | đúng 30 INSERT usage | PASS |
| 3 | không cột match_status trong INSERT (soi 43 column-list + toàn khung statement) | PASS |
| 4 | không hardcode số cho concept_id (0 chữ số ngoài dollar-quote/hằng kỹ thuật/comment) | PASS |
| 5 | concept_id chỉ là subquery theo concept_key (27) hoặc NULL (3) | PASS |
| 6 | không DROP/DELETE/TRUNCATE/ALTER/UPDATE/CREATE TABLE-VIEW-FUNCTION-TRIGGER dạng statement | PASS |
| 7 | chỉ đụng 2 bảng public.sua_re_khai_niem_nhap + public.sua_re_ui_khai_niem_nhap | PASS |
| 8 | SQL concept nằm trước SQL usage | PASS |
| 9 | 13/13 concept có ON CONFLICT (concept_key) DO NOTHING | PASS |
| 10 | 30/30 usage có ON CONFLICT (item_key) DO NOTHING | PASS |
| 11 | mọi seed-derived text/jsonb dollar-quoting | PASS (86 seg text + 43 seg json) |
| 12 | không seed text/jsonb bằng nháy đơn thô (nháy đơn chỉ {ui_id, scan_0, active}) | PASS |
| 13 | JSONB literal có cast ::jsonb (43 = 13 aliases + 30 near_concepts) | PASS |
| 14 | tag dollar-quote không xuất hiện trong nội dung (dq/dj tự kiểm collision, tự đổi tag) | PASS |
| 15 | aliases không bao giờ NULL | PASS (13/13 jsonb) |
| 16 | near_concepts không bao giờ NULL | PASS (30/30 jsonb) |
| 17 | aliases luôn jsonb array | PASS |
| 18 | near_concepts luôn jsonb array | PASS |
| 19 | 43/43 JSONB parse lại hợp lệ, đều là array — 0 rủi ro escape | PASS |
| 20 | golden vs apply byte-identical (diff rỗng + sha256 trùng) | PASS |
7. DB pre-check (read-only, ngay trước audit)
to_regclass: cả 2 bảng tồn tại —public.sua_re_khai_niem_nhap,public.sua_re_ui_khai_niem_nhap(DBdirectus).- Cả 2 bảng đang RỖNG: concept_rows = 0, usage_rows = 0 (kiểm 2 lần: trước render và ngay trước báo cáo).
- Kiểm thêm phục vụ render (read-only information_schema):
match_statusis_generated=ALWAYS (không INSERT);date_created/scan_atDEFAULT now() (an toàn khi bỏ qua trong INSERT).
8. Next gate
Chỉ được chạy G1-2B (append manifest approved-sql-manifest.tsv dòng e17cae62240a8d73a28bcccf79718dbe714d54ebf9209894a94b7199ba730d5c<TAB>sua-re/import-seed-master-list.sql + dot-pg-atomic-apply) sau khi Owner nói GO_APPLY_G1_2. G1-2A này KHÔNG append manifest, KHÔNG chạy atomic-apply, KHÔNG ghi PG.
Ghi chú kênh ghi file: golden ghi qua scp (root) + chown 10001:10001 + chmod 664 để khớp quy ước cây mcp-writes (tránh gotcha quyền của G1-1); byte-exact đã chứng minh bằng sha256 trùng bản render local. cp/diff/sha256sum chạy qua SSH contabo (root) — đúng đường G1-1.