KB-51D6

Codex Audit Đ43 — Code Review 7 góc

5 min read Revision 1

CODEX AUDIT — ĐIỀU 43 CODE REVIEW

Files đã đọc

  • /opt/incomex/dot/bin/dot-context-pack-build.sh (rev 0.1-skeleton, ~1400 dòng)
  • /opt/incomex/dot/bin/dot-context-pack-verify.sh (rev 0.1-v1, ~820 dòng)
  • /opt/incomex/dot/lib/cp-render-section.py (~224 dòng)

Tổng kết 1 câu

Hệ thống tuân thủ 90% Điều 43 v1.2 FINAL, đã triển khai thành công mô hình generic executor/dispatcher và 5 lớp bảo mật SQL, tuy nhiên vẫn còn tồn tại hardcode ở tầng whitelist/banned tokens và cơ chế trigger cache lệch so với luật runtime.

Phát hiện theo 7 góc

Góc 1 — Hardcode

  • Vấn đề 1: Hardcode BANNED_SQL_TOKENS trong verify.sh (line 353) và cp-render-section.py (line 42).
    • Vi phạm: NT4 (Thay đổi = config). Đáng lẽ danh sách token cấm phải đọc từ dot_config.
  • Vấn đề 2: Hardcode path whitelists PATH_PREFIX_QUERY / PATH_PREFIX_TEMPLATE (knowledge__current-state__%).
    • Vi phạm: NT4. Nếu thay đổi cấu trúc KB, phải sửa code thay vì sửa config.
  • Vấn đề 3: build.sh hardcode LOCK_NS_BUILD_CLASSID=43. Chấp nhận được vì đây là định danh cố định của Điều 43, nhưng lý tưởng nên là config.

Góc 2 — Bảo mật

  • Tình trạng: RẤT TỐT.
  • SQL executor trong cả verify.shcp-render-section.py đều tuân thủ đủ 5 guard của §5.8:
    1. Path whitelist (hardcode logic but enforced).
    2. Token blocker (hardcode list but enforced).
    3. Read-only role (context_pack_readonly).
    4. Read-only TX (BEGIN READ ONLY / default_transaction_read_only=on).
    5. Timeout (30s via statement_timeout).
  • Cấp quyền qua ALTER DEFAULT PRIVILEGESGRANT SELECT ON ALL TABLES đã được thực hiện đúng trên cả 2 DB (directusincomex_metadata).

Góc 3 — Tự động scale (NT2)

  • Tình trạng: TỐT.
  • Thêm section mới chỉ cần INSERT vào context_pack_section_definitions và upload template/query lên KB. Renderer tự động nhận diện mà không cần sửa code.
  • Thêm health check mới (SQL hoặc builtin) chỉ cần INSERT vào context_pack_health_checks.

Góc 4 — Fail-safe / Resilience

  • Renderer có cơ chế FAIL-FAST nếu template rỗng (Lỗ 2) hoặc render_config sai contract (P9).
  • build.shrepair_publish (7g) để xử lý crash giữa chừng trong quá trình publish 2-phase.
  • SQL 0 row trả về empty data và WARN thay vì crash (Lỗ 3).

Góc 5 — Đúng luật Đ43

  • Vấn đề: Trigger fn_context_pack_on_law_enact (DB incomex_metadata) sử dụng bảng cache _cp_patterns_cache để so khớp pattern thay vì đọc trực tiếp dot_config tại runtime.
    • Vi phạm: §11 Bước 12 explicitly yêu cầu SELECT dot_config tại runtime. Tuy nhiên, do dot_config nằm ở DB directus khác cluster DB, đây có thể là giải pháp kỹ thuật bắt buộc nhưng chưa được cập nhật vào luật để hợp thức hóa.
  • Volatile Header: cp-render-section.py render header dựa trên template, nhưng không "inject" cứng nếu template thiếu header (dẫn đến fail ở bước validate).

Góc 6 — HP tuân thủ

  • NT12 DOT cặp: build.shverify.sh tạo thành cặp bài trùng.
  • NT13 PG Native: Sử dụng pg_try_advisory_lockpg_notify đúng chuẩn.
  • NT10 PG trước text: Metadata cấu trúc section/check sống trong PG.

Góc 7 — Production readiness

  • Đã cài đặt cron chạy dưới user incomex.
  • Log output được chuyển hướng theo ngày (/tmp/dcp-cron-$(date +%Y%m%d).log).
  • Rủi ro: _cp_patterns_cache trong incomex_metadata nếu không được sync tự động từ dot_config (DB directus) sẽ dẫn đến drift luật (thêm pattern luật mới nhưng trigger không fire).

Bảng tổng hợp

# Vấn đề File:Line Severity NT vi phạm Fix đề xuất
1 Hardcode BANNED_SQL_TOKENS verify.sh:353, cp-render-section.py:42 Medium NT4 Chuyển list token vào dot_config
2 Hardcode path whitelists verify.sh:352, cp-render-section.py:47 Low NT4 Chuyển prefix whitelist vào dot_config
3 Trigger dùng cache thay vì runtime fn_context_pack_on_law_enact Medium Đ43 §11 Đồng nhất luật hoặc implement sync logic
4 Thiếu check grants cross-DB automation N/A Low NT2 Bổ sung script tự động GRANT khi thêm DB mới

Kết luận

  • Tổng vấn đề: 4 (0 critical, 2 medium, 2 low)
  • Sẵn sàng production: CÓ VỚI ĐIỀU KIỆN (Cần xác minh cơ chế sync cho _cp_patterns_cache để đảm bảo trigger luật luôn đúng).

Audit by Gemini CLI | 2026-04-18 | READ-ONLY AUDIT COMPLETE.