Council Review Đ43 v1.2 DRAFT — Round 2 — GPT
Council Review Đ43 v1.2 DRAFT — Round 2 — GPT
Date: 2026-04-17 Reviewer: GPT Score: 8.8/10 Recommendation: APPROVE WITH MINOR
Q1 — 7 patches đã apply đúng mục tiêu?
| Patch | Status | Nhận định |
|---|---|---|
P1 — section_count = 8 → >0 |
Apply ĐÚNG | Đóng đúng blocker R1. section_count không còn khóa cứng 8; wording còn ghi rõ giá trị thực được derive từ COUNT(section_definitions WHERE is_active=true). |
P2 — check_type enum cứng → executor_type + executor_ref/sql_kb_path |
Apply ĐÚNG | Đóng đúng blocker R1 quan trọng nhất của health checks. Thiết kế mới cho phép H10 kiểu mới qua sql hoặc function mà không sửa verify.sh. |
P3 — section_definitions thêm query_kb_path + render_config |
Apply ĐÚNG | Đóng đúng blocker R1 về data binding. Thêm section mới giờ không chỉ có metadata file mà có luôn lớp nguồn dữ liệu + config render. |
P4 — thêm context_pack_output_root |
Apply ĐÚNG | Đóng minor của Gemini. §5.9 có key mới, §6/§7 đã chuyển wording sang $OUTPUT_ROOT. |
| P5 — §9 CẤM fallback hardcode | Apply ĐÚNG | Đã có wording rõ: cấm hardcode threshold, cấm switch-case H1/H2..., cấm fallback mặc định nếu JSONB thiếu key. Đây là fix đúng bệnh. |
P6 — thêm context_pack_grace_period_days |
Apply ĐÚNG | Đóng minor R1. §10 đã config hóa grace period thay vì giữ cứng 7 ngày trong luật/runtime. |
| P7 — cron wording thành seed mặc định | Apply ĐÚNG | Đóng minor R1. §8.1 + §8.2 giờ ghi rõ cron là seed mặc định, đổi qua UPDATE dot_tools.cron_schedule. |
Kết luận Q1: 7/7 patch đã được apply đúng mục tiêu, không thấy patch nào bị apply thiếu hoặc lệch hướng so với R1.
Q2 — 5 test NT2+NT4+NT11 với rev 2
Test 1 — Thêm database thứ 4 analytics
PASS — context_pack_scan_db_whitelist rỗng thì đọc từ pg_database catalog, có whitelist thì đếm theo config. Không cần sửa code, không cần amend luật.
Test 2 — Thêm folder code thứ 5 /opt/incomex/mcp-servers/
PASS — Chỉ cần UPDATE context_pack_scan_paths. §6 đã cấm hardcode folder list.
Test 3 — Thêm law pattern mới knowledge/dev/ssot/%
PASS — Chỉ cần UPDATE context_pack_watched_key_patterns. Không cần sửa code, không cần amend luật.
Test 4 — Thêm section thứ 9 MCP_SERVERS.md với query_kb_path trỏ SQL KB
PASS — Rev 2 đã đóng đúng 2 gap của R1:
- không còn
section_count = 8cứng, context_pack_section_definitionsđã cóquery_kb_path + render_configđể đủ data binding.
=> Thêm section mới giờ đạt đúng tiêu chí: INSERT row + upload SQL/template KB (+ UPDATE config nếu cần), không sửa code script.
Test 5 — Thêm health check H10 "số DOT active > threshold" với executor_type='sql'
PASS — Rev 2 đã chuyển từ enum cứng sang generic executor pattern (builtin / sql / function). Thêm H10 bằng INSERT row + upload SQL KB là đủ, không cần sửa verify.sh.
Kết luận Q2: PASS cả 5/5 test. Rev 2 đã đóng được đúng 2 FAIL của R1 và đạt mục tiêu NT2 + NT4 + NT11 ở mức thiết kế luật.
Q3 — Điểm sót MỚI phát sinh từ rev 2?
1) Security risk của executor_type='sql' qua executor_ref / query_kb_path
Đây là điểm mới quan trọng nhất phát sinh từ rev 2.
Về mặt mở rộng, patch này rất đúng. Nhưng về bảo mật/vận hành, nếu verify/build script được phép nạp SQL tự do từ KB rồi chạy trực tiếp thì có các rủi ro:
- SQL ngoài ý muốn (
INSERT/UPDATE/DELETE/DDL) nếu query KB bị sửa sai hoặc bị ghi đè nhầm - query quá nặng gây load lớn lên DB production
- đọc dữ liệu ngoài phạm vi context pack nếu không giới hạn schema/table
Đánh giá: đây là minor nhưng phải siết guard trước khi ban hành FINAL. Chưa tới mức blocker vì fix rất ngắn và không đòi redesign.
Patch inline đề xuất:
executor_type='sql'vàdata_source='kb_query'chỉ được phép chạy read-only SELECT.- Query loader phải reject nếu phát hiện token nguy hiểm:
INSERT,UPDATE,DELETE,ALTER,DROP,TRUNCATE,CREATE,GRANT,COPY,DO,CALL,;nhiều statement. - Query KB path phải bị giới hạn trong prefix rõ ràng, ví dụ:
knowledge/current-state/queries/%. - Runtime DB user cho executor SQL phải là role read-only hoặc transaction
READ ONLY. - Timeout cứng cho mỗi query executor.
2) render_config JSONB đã có nhưng contract chưa hoàn toàn đóng băng
Rev 2 đã thêm render_config, đây là đúng hướng. Tuy vậy, contract của JSONB này mới được mô tả bằng ví dụ (placeholder_style, date_format, filters, ...), chưa có schema hay danh mục key chuẩn.
Rủi ro: các renderer khác nhau có thể hiểu render_config khác nhau theo thời gian.
Đánh giá: minor. Không chặn ban hành.
Patch inline đề xuất: thêm một câu trong §5.7 hoặc phụ lục:
render_configchỉ được dùng các key đã chuẩn hóa trong template spec của Đ43 phụ lục; key lạ → fail-fast + log warning, không silently ignore.
3) Backward compatibility / migration từ v1.1
Tôi không thấy issue nghiêm trọng mới vì v1.2 đang là amend trước khi enact trên VPS, không phải migrate một hệ đã chạy lâu trên production live. Rev 2 cũng đi theo hướng mở rộng additive.
Điểm cần lưu ý duy nhất là migration phải theo đúng thứ tự:
- tạo
context_pack_section_definitionstrước khi tạo/attach FKcontext_pack_sections.section_code - tạo
context_pack_health_checkstrước khi deploy verify script dùng generic executor - seed 7
dot_configkeys trước khi build/verify phase chạy
Đây là vấn đề sequencing bootstrap, không phải blocker thiết kế.
Kết luận
Rev 2 đã sửa đúng và đủ 7 vấn đề Council R1 nêu ra. 5 test NT2 + NT4 + NT11 hiện PASS đủ 5/5, nghĩa là mục tiêu amend kỹ thuật của v1.2 đã đạt ở mức luật thiết kế.
Điểm còn lại duy nhất tôi giữ là minor security/contract hardening cho cơ chế executor_type='sql' và render_config:
- SQL executor phải bị khóa read-only + path whitelist + statement guard
render_confignên có contract fail-fast rõ hơn
Vì vậy tôi chấm 8.8/10 — APPROVE WITH MINOR.
Khuyến nghị: apply inline 2 guard nhỏ nêu ở Q3 rồi ban hành ngay v1.2 FINAL, không cần Round 3.