KB-1671 rev 7
Handoff S178 Fix 19 → Phiên sau
9 min read Revision 7
handoffs178fix19enforcementdieu37dieu38amend
Handoff S178 Fix 22 → Phiên sau
Ngày: 2026-04-20
ĐÃ LÀM (Fix 21 + Fix 22)
- ✅ Bước 0: Enforcement gap seed 7 mã + retire 4 cũ + APR id=6
- ✅ P0-P3: Design → Handler v2.1.1 → 6 scripts fix_repair_dot (3 cặp) → D3 register + 5 TD
- ✅ Bước 5: Scanner Đ22 v1.1 — 4 DOT, 546 findings (84 critical)
- ✅ Bước 6: Context pack +ops_code_inventory — 9 sections, manifest #30
TIẾP: Bước 7 Phase C
- C1: Nới max_size 2 section (project_map 22>20KB, ops_code_inventory 46>30KB)
- C2: Backfill description 1277 row → MỤC TIÊU 2
- C3: Project Identity trang bìa
- C4: Architecture Annotation 4 layer
- V4b: DROP 2 legacy columns (đủ 24-48h quiet)
- admin_fallback id=8: CHECK deadline 2026-04-21 02:32 UTC
Đọc: Phụ lục Đ43 rev 16 (knowledge/dev/laws/dieu43-phu-luc-ban-do-he-thong.md)
ĐÃ LÀM (Fix 20)
- ✅ Đ35 §6 chép đầy đủ — body flow
fix_repair_dot6 bước + verify 3 tầng + ADMIN fallback + paired test + retrofit vào file luật chính thức (rev 6, không đổi version) - ✅ Nhóm A — 2 DOT cập nhật:
dot-apr-proposev2.0.2 +dot-apr-executev2.0.2 — đọc sổ PG thay hardcode. App_lock migration P12 xong. 8/8 tiêu chí PASS. - ✅ Register 5 bảng PG-only vào Directus — 6/6 tiêu chí PASS. Admin fallback id=6.
- ✅ Register 2 cột mới — DOT v2.0.2 bỏ PG workaround, ghi qua API chuẩn.
- ✅ Git audit VPS — 264 thư mục mã thuộc 4 git repo.
/opt/incomex/dot/init git mới. Quy tắc git mỗi lần sửa. - ✅ Fix phụ —
v_registry_counts.idthiếu DEFAULT sửa xong.
ĐÃ LÀM (Fix 19)
1. Điều tra enforcement gap (agent CLI)
- 6 query SELECT trên VPS, không thay đổi DB
- Phát hiện: 7 mã mới enacted 0 enforcement, 4 mã cũ chưa retire, 32/45 luật thiếu enforcement lịch sử
- Trigger #1 chỉ fire lúc transition → không tự heal row đã lọt
- Trigger #2 (immutable) cho phép enacted → retired
- admin_fallback_log id=5 status='retroactive_documented', retroactive_apr_id=211
2. Sửa 3 file luật/quy trình (lặng lẽ, giữ version)
| File | Bổ sung | KB path |
|---|---|---|
| OR Soạn Luật | §VIII.3 (2 kiểu amend: code-split vs in-place) + §VIII.4 (3 bước hậu enact H1/H2/H3) + §VIII.5 (checklist hậu amend) | knowledge/dev/ssot/operating-rules-law-drafting.md |
| Đ37 v3.3 | §5.3.1 (kế thừa enforcement + jurisdiction khi amend) + Trigger #8 (auto copy on enact) + changelog | knowledge/dev/laws/dieu37-governance-organization-law.md |
| Đ38 v3.0 | A3 guard (cấm 2 enacted cùng article_number) + B2.1 (retire tự động predecessor trực tiếp) | knowledge/dev/laws/dieu38-normative-document-law.md |
3. Council Round 1 (GPT 8.7 + Gemini 9.5 — APPROVE WITH CHANGES)
- 7 sửa apply, 1 reject
- Đồng thuận: trigger PG = chính, DOT = verify; mặc định cấm 2 enacted song song; 32 luật cũ thiếu enforcement → phiên riêng
- Quyết định: tách Case A (predecessor 0 rows = warning) vs Case B (new code 0 rows = HARD FAIL)
CẦN LÀM PHIÊN SAU — BẮT ĐẦU TỪ BƯỚC 4
Bước 4 — M3 nặng: DOT scripts (nhiều prompt, /effort medium-high)
Spec: knowledge/dev/laws/patch-dot-repair-governance-s178-fix15.md §II P2+P3
Đ35 v5.2: knowledge/dev/laws/dieu35-dot-governance-law.md §6
Nhóm A — 2 DOT cập nhật:
dot-apr-propose: sửa đọc cộtrequest_type_code+proposed_action_codethay JSONB cũdot-apr-execute: tương tự + checkhandler_reftừapr_action_types- Cần app_lock migration (P12): lock vài phút giữa backfill code columns và deploy runtime mới
Nhóm B — 3 cặp DOT mới (6 scripts) cho flow fix_repair_dot:
- Đ35 v5.2 §6 định nghĩa 6 bước flow
- detect → propose fix → execute fix → verify 3 tầng → log
- Cần paired test (NT12)
Dự kiến: 3-4 prompt agent, tốn effort nhất trong toàn roadmap.
Bước 5 — M4: Scanner detect-only (/effort low, 1 prompt)
- P4 gói spec: quét silent-fail annotation markers (Đ22 v1.1 §4.1)
Bước 6 — M5: Context pack regenerate (/effort low, 1 prompt)
- Section
ops_code_inventorymới (P11 gói spec)
Bước 7 — Phase C: Hoàn thiện nội dung Đ43
- C1: Nới
max_size_bytessectionproject_map(hiện 22KB > 20KB max) - C2: Backfill description 1277 row thiếu → MỤC TIÊU 2
- C3: Project Identity trang bìa (5-7 dòng mô tả Incomex)
- C4: Architecture Annotation 4 layer
- C7: Section ops_code_inventory verify
Bước 8 — Phase D: Test agent lạ → MỤC TIÊU 3
- CLI mới đọc context pack, mô tả lại hệ thống ≥80%
Bước 9 — Phase E: Bảo vệ
- E1: Test chống agent phá (4 lớp)
- E2: Verify Đ39 shadow trigger binding
LƯU Ý — Enforcement gap (KHÔNG blocking bước 4-9)
Enforcement gap + retire 4 mã cũ cần xử lý trước khi enact luật kế tiếp (trigger #1 sẽ chặn). Nhưng bước 4→9 không enact luật nào → không bị chặn. Làm khi tiện hoặc trước khi cần enact luật mới. 1 prompt /low.
Chi tiết nếu cần:
- 7 mã cần seed enforcement:
NRM-CON-HP-V4P6P3,NRM-LAW-22-V1P1,NRM-LAW-32-V1P1,NRM-LAW-33-V2P1,NRM-LAW-35-V5P2,NRM-LAW-41,NRM-LAW-43 - NRM-LAW-41/43 amend in-place (giữ code gốc)
- 4 mã cần retire:
NRM-LAW-22,NRM-LAW-32,NRM-LAW-33,NRM-LAW-35 - 5 mã cần copy jurisdiction (code-split)
- Vấn đề: code cũ Đ22/32/33/35/41/43 cũng chưa có enforcement → cần seed mới theo DOT domain mapping
MỤC TIÊU TỔNG THỂ — Điều 43
| # | Mục tiêu | Status |
|---|---|---|
| 1 | Khai sinh Đ41/Đ43 vào sổ đăng ký | ✅ DONE Fix 18 |
| 2 | Rà description cho đủ (1277 row thiếu) | ⏳ Phase C |
| 3 | AI mới đọc Đ43 là hiểu (≥80%) | ⏳ Phase D |
NỢ KỸ THUẬT PHÁT HIỆN (Fix 20)
| TD | Mô tả | Status | Ghi chú |
|---|---|---|---|
| TD-F20-01 | Đ35 v5.2 KB file thiếu body §6 fix_repair_dot (chỉ ghi "lifecycle giữ v5.0", nội dung 6 bước nằm rời trong spec P3 revision 2) | ✅ DONE | Sửa thẳng rev 6, không đổi version. §6 giờ có đầy đủ 6.1-6.7: flow 6 bước + verify 3 tầng + ADMIN fallback + paired test + retrofit. |
| TD-F20-02 | 4 bảng PG-only (apr_action_types, apr_request_types, apr_approvals, admin_fallback_log) + law_version_verification_log chưa register vào Directus → agent không query được qua API (403), chỉ verify được qua SSH psql | ✅ DONE | Register 5 bảng + Đ36 + permission. Admin fallback id=6. |
| TD-F20-03 | Retroactive APR cho admin_fallback_log id=6 (register 5 bảng PG-only). Deadline: 2026-04-20 14:25 UTC | ⏳ | Gộp với enforcement gap seed prompt. Phải xong trước deadline. |
| TD-F20-04 | DOT dot-apr-types-register + paired dot-apr-types-register-audit chưa tồn tại → mỗi lần register bảng mới phải admin fallback |
⏳ Nhóm B | Viết trong Bước 4 Nhóm B (3 cặp DOT mới). Sau khi có → register tự động, không cần Chủ tịch. |
| TD-F20-05 | 2 cột mới request_type_code + proposed_action_code trên approval_requests chưa register vào Directus fields → Directus silently drops khi ghi qua API. Agent workaround PG post-write. APR-0214 followup. |
⏳ | Register fields vào Directus. /effort low. Làm trước Nhóm B. |
| TD-F20-06 | 8 APR enact Fix 18 vẫn approved/unapplied vì handler patch_ops_code là stub. APR-0215 followup. |
⏳ Nhóm B | Implement handler thật khi viết DOT fix_repair_dot. |
| TD-F20-07 | legacy_column_retire: cột TEXT cũ (request_type, action) trên approval_requests cần deprecated + DROP sau 7 ngày stable. system_issues id=4315. |
⏳ | Sau Nhóm B stable. |
HẠ TẦNG GHI NHỚ
- DB:
docker exec postgres psql -U directus -d directus - SSH:
contabo(key~/.ssh/contabo_vps) - Gói spec:
knowledge/dev/laws/patch-dot-repair-governance-s178-fix15.md - Đ35 v5.2:
knowledge/dev/laws/dieu35-dot-governance-law.md - Đ37 (§5.3.1 mới):
knowledge/dev/laws/dieu37-governance-organization-law.md - Đ38 (B2.1 mới):
knowledge/dev/laws/dieu38-normative-document-law.md - OR Soạn Luật (§VIII.3-5 mới):
knowledge/dev/ssot/operating-rules-law-drafting.md - Đ43 v1.2:
knowledge/dev/laws/dieu43-system-context-law.md
NGUYÊN TẮC
- Theo đúng luật. Thiếu → bổ sung luật. Không sáng tác.
- Prompt mục tiêu mở. Agent tự quyết cách làm.
- NT9: Không chắc = DỪNG, điều tra trước.