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_dot 6 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-propose v2.0.2 + dot-apr-execute v2.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.id thiế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ột request_type_code + proposed_action_code thay JSONB cũ
  • dot-apr-execute: tương tự + check handler_ref từ 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_inventory mới (P11 gói spec)

Bước 7 — Phase C: Hoàn thiện nội dung Đ43

  • C1: Nới max_size_bytes section project_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.