PG Reform Tools — Index & Quick Start
PG REFORM TOOLS — INDEX & QUICK START
Mã mission: S176 PG-Reconfig | Sprint: S176 | Trạng thái: Living (điều tra 60%) Mục đích folder: Tái cấu trúc công cụ PostgreSQL sao cho "ghi sai PG = không được phép xảy ra" — thay cho file monolith cũ
knowledge/current-state/pg-reconfig-master.md(58k chars, khó edit). Cảnh báo cho mọi AI/agent: Đọc theo thứ tự, KHÔNG cắt bớt, KHÔNG tóm tắt rồi quên chi tiết. Mỗi file ~5k chars, đọc nhanh.
CÁCH ĐỌC NHANH (cho phiên mới)
| Tình huống | Đọc file nào |
|---|---|
| Mới vào mission, chưa biết gì | 00-index.md (file này) → 01-kien-truc.md → 10-roadmap.md |
| Chỉ cần bức tranh tổng 1 phút | §0 bên dưới trong file này |
| Làm khối điều tra tiếp (KS.4 trở đi) | 10-roadmap.md → file KS trước đó liên quan |
| Thiết kế Phương án A+ | 07-phuong-an-a-plus.md + 04-ks1-ddl-audit-gap.md + 06-ks3-metadata-shells.md |
| Tra TD cần fix | 11-tham-chieu-td.md |
| Tra câu hỏi WHY còn treo | 12-why-mo.md |
Quy tắc vàng #1: Mọi tài liệu phân tích PG phải bắt đầu bằng câu hỏi: "DB nào? Lớp nào?" Không trả lời được = không phân tích tiếp.
MỤC LỤC FOLDER
| # | File | Nội dung | Chars (~) |
|---|---|---|---|
| 00 | 00-index.md |
File này — index + §0 tóm tắt 1 trang | 4k |
| 01 | 01-kien-truc.md |
§1 Kiến trúc 4 DB + 3 Lớp Não-Kho-Cổng | 5k |
| 02 | 02-k0-k1-timeline-channels.md |
§2.1-2.3 K0 timeline/retention + K1 official channels | 5k |
| 03 | 03-k2-bypass-writers.md |
§2.4-2.6 K2 4 bypass L3 + lỗ hổng khác + Directus flows | 5k |
| 04 | 04-ks1-ddl-audit-gap.md |
§2.6b KS.1 🔴 INVISIBLE AUDIT GAP | 5k |
| 05 | 05-ks2-mar10-debunked.md |
§2.6c KS.2 hypothesis bác + SELF-HEALING-LATE | 5k |
| 06 | 06-ks3-metadata-shells.md |
§2.6d KS.3 metadata shells ~22% + §2.7 9 writer verify | 5k |
| 07 | 07-phuong-an-a-plus.md |
§3 Phương án A+ + §4 5 ngoại lệ E1-E5 | 5k |
| 08 | 08-dot-moi-va-catalog.md |
§5 5 nhóm DOT + catalog + ddl_audit_log + dot_run_log | 5k |
| 09 | 09-khai-sinh-collection.md |
§6 DOT-COLLECTION-CREATE 9 bước | 3k |
| 10 | 10-roadmap.md |
§7 Điều tra + DESIGN D0-D9 + IMPLEMENT 9 đợt | 5k |
| 11 | 11-tham-chieu-td.md |
§8 Tham chiếu HP/Luật + danh sách 20 TD S176 | 4k |
| 12 | 12-why-mo.md |
§9 WHY đã/đang + to-do + bài học + changelog | 5k |
§0. TÓM TẮT 1 TRANG — Đọc trước khi làm bất cứ việc gì
Hệ thống có gì
- 1 cluster PostgreSQL 16 trên VPS Contabo EU, container Docker
postgres, port 5432 - 4 database:
directus,incomex_metadata,workflow(rỗng),postgres(admin) - 2 PG user nghiệp vụ:
workflow_admin(directus),incomex(incomex_metadata) - 272 DOT trong
dot_tools(~230 sau dedupe), 4.8% complete - 79 PG function
fn_*(guard, refresh, transition lifecycle) - 138+ collections DB
directus, 9 tables DBincomex_metadata
Vấn đề phải giải quyết
- 9 writer S175 ghi trùng
system_issues— triệu chứng bệnh - 148/223 DOT (66%) thiếu DOT cặp Cấp A (NT12 vi phạm)
- 4 bypass L3 chủ đích: CI CAT-ALL backdoor, CI auto-apply 36 SQL,
pg-client.js, 2 script không đăng ký - Password leak
Incomex2026PG_306ac539ad365fcetrong git history - 🔴 INVISIBLE AUDIT GAP (KS.1): DDL qua psql trực tiếp không có log nào
- 🟡 METADATA SHELLS (KS.3): 60/272 record
file_path=NULL— §0-AY bị vô hiệu hoá bằng hồ sơ rỗng ruột - 🟡 SELF-HEALING LATE (KS.2): 4 tháng tối 2025-12-07 → 2026-03-10 không có cơ chế phát hiện vi phạm
- Luật cũ (NT3 DOT 100%) cấm cứng → người ta bypass để chạy được hệ thống
Giải pháp gốc (sơ bộ — sẽ chốt sau khi điều tra xong)
Phương án A+ — 1 password GSM + REVOKE direct + 5 ngoại lệ E1-E5 + 2 lớp bổ sung mới:
- 1 password lưu GSM (SSOT) → kéo về
/opt/incomex/.envchmod 600 → cả PG container và mọi DOT đọc cùng biến - Đổi password 1 lần trên GSM → kéo 1 lần → cả hệ thống nhận
- PG REVOKE mọi connection không có password đúng
- 5 ngoại lệ hợp pháp (E1-E5) ghi trong Điều 33 §13
- BỔ SUNG (KS.1): PG event trigger
ddl_command_end+ddl_audit_log+dot-ddl-audit-monitor - BỔ SUNG (KS.3): PG constraint
file_path IS NOT NULL OR status='placeholder'+dot-file-path-orphan-check+ CI pre-merge gate
Quy tắc vàng
- "DB nào? Lớp nào?" — câu hỏi bắt buộc mở đầu mọi phân tích PG
- Mục tiêu = nghiệp vụ tiện lợi, không phải tuân thủ luật bằng mọi giá (Huyên S176). Luật không khả thi → SỬA LUẬT
- Mọi DOT phải khai: ghi DB nào, lớp nào, gateway nào
- Đọc full file, không tóm tắt rồi mất chi tiết (bài học KS.3)
- (MỚI S176) Mỗi lỗi = cơ hội học gốc rễ. Không vá triệu chứng. Đặt câu hỏi WHY + trả lời bằng evidence cứng trước khi thiết kế
- (MỚI S176) Điều tra xong MỚI thiết kế, thiết kế xong MỚI sửa luật, sửa luật xong MỚI fix TD. Không làm tắt. Bài học: HP v4.4.0 quên kiến trúc cũ → mất cả buổi mò.
TRẠNG THÁI HIỆN TẠI
- ✅ K0+K1+K2 + KS.1+KS.2+KS.3 (điều tra 60%)
- ⏳ KS.4 (DOT MA chiều ngược) — NEXT
- ⏳ KS.5, KS.6, K3, K4, K5
- ⏳ DESIGN D0-D9, IMPLEMENT 9 đợt
20 TD open (3 đỏ + 10 vàng + 6 xanh + 1 closed), 10/24 WHY đã trả lời, 14 WHY đang treo.
Folder knowledge/current-state/reform-PG-tools/ | Index rev 1 | S176 | Living doc — cập nhật sau mỗi KS/K.