KB-2797

§7 Roadmap 4 pha + D0-D9 + Đợt 1-9

6 min read Revision 1
s176pg-reconfigroadmapinvestigatedesignimplement

§7 ROADMAP THỰC THI — ĐIỀU TRA → DESIGN → IMPLEMENT

Part of: PG Reform Tools — S176 mission Prev: 09-khai-sinh-collection.md ← | → Next: 11-tham-chieu-td.md


§7.1 Pha điều tra (đang làm — phiên S176)

Khối Trạng thái Báo cáo Phát hiện chính
K0 Timeline + Retention ✅ DONE s176-invest-k0-timeline-retention 4 mốc, WAL OFF, dot_run_log missing, last_executed bulk-backfill
K1 L1 Official Channels ✅ DONE s176-invest-k1-official-channels 272 DOT, 148/223 thiếu cặp, 42 cặp trùng tên, 60/272 fp=NULL, 79 fn_*, fn_transition_lifecycle là phôi gateway
K2 L3 Bypass Writers ✅ DONE s176-invest-k2-bypass-writers 4 DB cluster, 4 bypass L3, CAT-ALL known hack, password leak, 6 cron không installer
KS.1 DDL audit gap ✅ DONE s176-invest-k2-supplement rev 3 🔴 INVISIBLE AUDIT GAP — DDL qua psql không log. 2084 events H2. Admin monopoly
KS.2 Mốc 2026-03-10 ✅ DONE s176-invest-k2-supplement rev 3 Hypothesis reset BỊ BÁC. 2 collection tạo mới S108 #471+#473. SELF-HEALING-LATE (4 tháng tối). WHY-5 = argument Phương án C
KS.3 15 script unregistered ✅ DONE s176-invest-k2-supplement rev 3 14/15 là metadata catch-up gap (b), 1/15 di tích (c), 0/15 cố tình. Pattern ~22% registry. dot-script-lint self-exempt
KS.4 DOT MA (chiều ngược) NEXT s176-invest-k2-supplement rev 4 Quét 212 record có file_path → file còn tồn tại trên disk không?
KS.5 SELECT-then-INSERT vs 9 writer S175 ⏳ Pending rev 5 Cross-check 12 file race risk K1 vs dot-collection-health S175 — giao điểm?
KS.6 Cron installer mapping ⏳ Pending rev 6 6 cron LIVE nrm/doc/script-lint ai cài? Manual hay DOT?
K3 Credentials + quyền PG ⏳ Pending s176-invest-k3-credentials-permissions \du, role_table_grants, fn_* SECURITY DEFINER, IP forensic
K4 Shadow patterns + dead code ⏳ Pending s176-invest-k4-shadow-patterns Markers .sql-applied, 5 cron unknown, 0048_mysql, placeholder doc-*
K5 Catalog DOT baseline ⏳ Pending s176-invest-k5-catalog-baseline Quét 46 record fp=NULL còn lại, xác định cụm MATRIX/KG/MISC

§7.2 Pha thiết kế (sau điều tra — CHƯA bắt đầu)

Nguyên tắc: KHÔNG vội thiết kế khi chưa điều tra xong. Design 1 lần, tổng hợp mọi phát hiện, không vá lẻ tẻ. Bài học S176: HP v4.4.0 quên kiến trúc cũ → mất buổi mò.

Bước Nội dung Đầu vào
D0 Vẽ lại tổng thể bức tranh PG hiện trạng Sơ đồ 4 DB × 3 lớp × mọi writer × mọi bypass × mọi gap audit K0+K1+K2+KS.1..6+K3+K4+K5
D1 Design 5 nhóm DOT + field mới (kind, file_path_status) Chốt phân loại, constraint, validation K1+KS.3+K5
D2 Design dot_run_log + ddl_audit_log + dot-find Schema 2 bảng mới + cổng tra cứu K0+KS.1+K5
D3 Design password rotation + GSM flow .env structure, rotate procedure, DOT credential audit K3
D4 Design DOT-MIGRATION-APPLY + DOT-CAT-ALL-REFRESH Thay thế 2 CI bypass K2+KS.2
D5 Design DOT-COLLECTION-CREATE Quy trình khai sinh đầy đủ 9 bước Đ36 + Birth Law
D6 Design dot-file-path-orphan-check + CI pre-merge gate Chặn metadata shells KS.3
D7 Design dot-ddl-audit-monitor + event trigger Bắt mọi DDL KS.1
D8 Chốt "Phương án A+" cuối cùng Tổng hợp D1-D7, decide gap nào dùng gateway PG function (C-partial) vs constraint PG Tất cả trên
D9 Sửa luật đồng bộ 1 lần HP v4.6.0 + Đ33 v2.1 + Đ35 v5.1 + OR bổ sung — không sửa lẻ tẻ D0-D8

§7.3 Pha thực thi (sau thiết kế — CHƯA bắt đầu)

Đợt 1 — Hạ tầng password (rủi ro thấp): Đẩy GSM → .env VPS → PG container đọc → test 1 DOT → rotate test.

Đợt 2 — REVOKE direct + 5 ngoại lệ: REVOKE password-less → whitelist E1-E5 → test mọi DOT chính thức.

Đợt 3 — Dedupe DOT + metadata catalog + bảng mới: Dedupe 42 cặp → thêm 7 field mới (5 cũ + kind + file_path_status) → backfill 230 DOT canonical → tạo dot_run_log + ddl_audit_log + event trigger.

Đợt 4 — Fix 4 bypass L3: DOT-MIGRATION-APPLY + DOT-CAT-ALL-REFRESH + đăng ký pg-client.js + đăng ký dot-script-lint/dot-cron-matrix-setup.

Đợt 5 — Fix NT12 cặp (batch): Batch 1 (10 direct-PG writer rủi ro cao) → Batch 2 (38 schema bootstrap) → Batch 3 (100 còn lại). Mỗi batch 1 phiên.

Đợt 6 — DOT-COLLECTION-CREATE + Birth fix: Test 1 collection → backfill birth_registry → trigger guard.

Đợt 7 — Catalog DOT cho AI: dot-find semantic search → README auto-gen → test agent gọi.

Đợt 8 — (MỚI KS.1+KS.3) DDL audit + file_path orphan check: Deploy event trigger → backfill ddl_audit_log rỗng (forward only) → deploy dot-ddl-audit-monitor + dot-file-path-orphan-check → CI pre-merge gate.

Đợt 9 — Backfill 46 record file_path=NULL còn lại: Sau KS.4+K5 xác định chính xác còn bao nhiêu → one-shot migration script.


§7.4 Quy tắc thực thi

  • Mỗi lần phát hiện bệnh mới = ghi ngay vào master + tracker (KS.1/KS.2/KS.3 đã thực hiện)
  • Mỗi khối báo cáo xong = đọc FULL, không đọc tóm tắt (bài học KS.3)
  • Mỗi vấn đề = đặt câu hỏi WHY và trả lời bằng evidence cứng (git log, grep, query, stat) — không đoán mò
  • P0→P5 từng phase báo về — chậm mà chắc
  • Mỗi đợt 1 PR, không gộp
  • Test local trước push + Verify production sau mỗi deploy (§0-AE)
  • Update tracker + handoff sau mỗi đợt

File 10 — §7 Roadmap | Index | S176 | Living doc