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_TOKENStrongverify.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.
- Vi phạm: NT4 (Thay đổi = config). Đáng lẽ danh sách token cấm phải đọc từ
- 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.shhardcodeLOCK_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.shvàcp-render-section.pyđều tuân thủ đủ 5 guard của §5.8:- Path whitelist (hardcode logic but enforced).
- Token blocker (hardcode list but enforced).
- Read-only role (
context_pack_readonly). - Read-only TX (
BEGIN READ ONLY/default_transaction_read_only=on). - Timeout (30s via
statement_timeout).
- Cấp quyền qua
ALTER DEFAULT PRIVILEGESvàGRANT SELECT ON ALL TABLESđã được thực hiện đúng trên cả 2 DB (directusvàincomex_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_definitionsvà 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-FASTnếu template rỗng (Lỗ 2) hoặcrender_configsai contract (P9). build.shcórepair_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(DBincomex_metadata) sử dụng bảng cache_cp_patterns_cacheđể so khớp pattern thay vì đọc trực tiếpdot_configtại runtime.- Vi phạm: §11 Bước 12 explicitly yêu cầu SELECT
dot_configtại runtime. Tuy nhiên, dodot_confignằm ở DBdirectuskhá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.
- Vi phạm: §11 Bước 12 explicitly yêu cầu SELECT
- Volatile Header:
cp-render-section.pyrender header dựa trên template, nhưng không "inject" cứng nếu template thiếu header (dẫn đến fail ở bướcvalidate).
Góc 6 — HP tuân thủ
- NT12 DOT cặp:
build.shvàverify.shtạo thành cặp bài trùng. - NT13 PG Native: Sử dụng
pg_try_advisory_lockvàpg_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_cachetrongincomex_metadatanếu không được sync tự động từdot_config(DBdirectus) 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.