Opus Review — 22-P3-P0 Inspection Results
Opus Review — 22-P3-P0 Inspection Results
Date: 2026-05-06 Reviewer: Opus (Claude) Subject: Agent đã chạy P3-P0 rev3 — inspection_status=PARTIAL (core COMPLETE) Request: GPT thẩm tra findings + xác nhận next steps
1. Verdict: Agent làm đúng, không cần bổ sung
51 queries READ-ONLY, report đầy đủ 10 sections + Query Errors. 3 failures đều trên optional tables (schema mismatch), core evidence complete và nhất quán.
2. Key Findings (Opus highlights)
Finding A — TAC/P10 KHÔNG đụng public.information_unit
Đây là phát hiện quan trọng nhất. TAC pipeline (P10A/P10B) target sandbox_tac.tac_* tables, KHÔNG INSERT vào public.information_unit hoặc public.unit_version.
Impact: Câu hỏi "TAC nên canonical caller, controlled import, hay legacy bypass?" từ GPT P3 directive — KHÔNG CÒN ÁP DỤNG cho P3 scope. TAC và IU gateway là hai domain tách biệt. Loại bỏ hoàn toàn complexity về TAC exempt/migration trong gateway design.
Finding B — IU/UV không trong directus_collections
Directus Admin UI không render create form cho IU/UV. Write surface chỉ qua REST/GraphQL (Agent/AI Agent policies, 16 permission rows). Studio admin không có nút "Create Item" cho information_unit.
Impact: L2 trigger guard sẽ KHÔNG break Directus Studio UI. Chỉ ảnh hưởng REST/GraphQL writes nếu ai đó gọi POST /items/information_unit trực tiếp — nhưng Directus REST cũng dùng directus PG role nên trigger guard vẫn fire. Cần policy decision: cho phép REST create (với exempt marker) hay block?
Finding C — Zero production direct-write callers
0 hits filesystem, 0 production callers KB. Gateway enforcement có near-zero breakage risk. Đang build cổng trước khi có người đi qua — thời điểm lý tưởng.
Finding D — fn_iu_create KHÔNG set canonical_writer
Confirmed prediction. Sequencing bắt buộc: patch fn_iu_create → rồi mới trigger guard. Hai prompts riêng biệt.
Finding E — UV zero triggers
unit_version có 0 triggers. Guard trên UV không bị ordering conflict. Có thể thêm tự do.
3. Opus assessment on Agent's recommendation
Agent khuyến nghị: Option B + D trong 3 ordered prompts, defer C (detector) và E (role separation).
Tôi đồng ý với B + D, nhưng muốn đơn giản hóa dựa trên findings:
Đề xuất Opus: B + D trong 2 prompts (gộp được)
Vì TAC không liên quan (Finding A) và zero callers (Finding C), scope thu hẹp đáng kể:
P3-P1: L0 policy + fn_iu_create patch
- Insert dot_config gateway keys
- Patch fn_iu_create thêm
set_config('app.canonical_writer', 'fn_iu_create', true)trước INSERT - Verify pilot vẫn create OK
- Một prompt, một transaction
P3-P2: L2 trigger guard
- Create trg_iu_a_canonical_guard BEFORE INSERT trên information_unit
- Create guard tương tự trên unit_version (0 existing triggers → clean)
- Trigger đọc allow-list từ dot_config (không hardcode)
- Verify fn_iu_create vẫn create OK qua guard
- Verify direct INSERT bị block
Lý do gộp P3-P1 (policy + patch): cả hai đều là prerequisites cho P3-P2, không có rủi ro riêng biệt, và gộp giảm số vòng review.
Defer
- C (L3 detector): Đồng ý defer. system_health_checks schema cần re-read. Nhưng detector ít urgent vì zero callers hiện tại.
- E (role separation): Đồng ý defer. Directus REST dependencies cần redesign trước.
4. Câu hỏi mở cho GPT/User
- Directus REST write path: khi trigger guard active, POST /items/information_unit qua Directus REST sẽ bị block (vì Directus không set canonical_writer). Đây là behavior mong muốn hay cần exempt?
- P3-P1 gộp policy + patch: GPT đồng ý gộp hay muốn tách?
- UV guard: thêm guard trên unit_version luôn hay chỉ information_unit trước?
Opus review | 2026-05-06 | P3-P0 inspection verified | Chờ GPT confirm + answer 3 questions