feat: certify codegen chat drafts through loop
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# KẾ HOẠCH 18 — Governed Chat Console (Chat-as-Loop qua Control Plane)
|
||||
|
||||
> Status 2026-07-08: **🟡 MVP-0 + MVP-1 done+test; MVP-2 Track 4 + Operator Track 5/6 + Track 8.1/8.2/8.3/8.4 done — target architecture còn planned.**
|
||||
> Status 2026-07-08: **🟡 MVP-0 + MVP-1 + MVP-2 done+test; MVP-3 multi-tenant còn planned.**
|
||||
> Đã implement **Ask CASAN — Read-only Evidence Assistant** qua harness + Control
|
||||
> Panel (`/api/v1/chat/ask`, `/chat` UI): Prompt Router deterministic
|
||||
> `READ_ONLY/OPERATOR/BLOCK/NOT_SUPPORTED`, context whitelist, H4 scan in/out, H5
|
||||
@@ -11,7 +11,8 @@
|
||||
> gate chọn agent, delegation hold, tool allowlist block, Control Panel agent picker.
|
||||
> **Operator Track 5/6** đã bind mỗi side-effect turn vào Plan-17 `loop-run.sh`,
|
||||
> verify trace/replay, H4 preflight/context/tool-output scan, và chỉ release action
|
||||
> sau khi draft được certify. **Track 8.1/8.2/8.3/8.4** đã có replay/verify-chain
|
||||
> sau khi draft được certify. **CODEGEN-as-loop** đã có draft-only artifact scan +
|
||||
> loop certification. **Track 8.1/8.2/8.3/8.4** đã có replay/verify-chain
|
||||
> foundation, Command Center Chat/Loop widget đọc chat audit/replay evidence thật,
|
||||
> và escalation vào approvals inbox.
|
||||
> Mục tiêu
|
||||
@@ -261,7 +262,7 @@ flowchart TD
|
||||
| 18.4.1 | ✅ `agent-registry.yaml` versioned (tool_allowlist, max_delegation, roles_allowed, model_role) + resolver bind theo turn | `packages/casan-harness/config/agent-registry.yaml` + `chat-agent-resolver.py` | chọn agent → allowlist đúng |
|
||||
| 18.4.2 | ✅ RBAC gate chọn agent (14): role không đủ → DENY; vượt `max_delegation` → security-sensitive → approval hold | nối `rbac-check.py` (`chat:select_agent`) | role thấp chọn agent tự chủ → DENY |
|
||||
| 18.4.3 | ✅ Tool-call runtime chỉ tool **trong allowlist**; ngoài → BLOCK trước runtime | `chat-agent-resolver.py` | tool ngoài allowlist → BLOCK |
|
||||
| 18.4.4 | ⏳ Skill code-gen chạy trong allowlist + H4 artifact-scan (Plan-02) trước output | nối `artifact-scan.sh` | skill sinh mã có injection → BLOCK |
|
||||
| 18.4.4 | ✅ Skill code-gen chạy trong allowlist + H4 artifact-scan (Plan-02) trước output | `chat-turn.py` + `artifact-scan.sh` | skill sinh mã có injection → BLOCK |
|
||||
|
||||
### Track 5 — Chat-as-loop pipeline `[MVP-2]`
|
||||
| Task | Việc | File | Verify (WSL) |
|
||||
@@ -282,7 +283,7 @@ flowchart TD
|
||||
|---|---|---|---|
|
||||
| 18.7.1 | ✅ Chat API (NestJS) **bọc** harness (MVP-0/1: read-only + operator; single-source, không verdict riêng) | `packages/casan-control-panel/backend/src/chat/*` | API gọi `chat-turn.py`; `console:test` xanh |
|
||||
| 18.7.2 | ✅ Chat panel React + hiển thị **evidence sources**, registered actions, action-gate + badge `mode/risk` | `packages/casan-control-panel/frontend/src/pages/Chat.tsx` | `console:build` xanh |
|
||||
| 18.7.3 | 🟡 (MVP-2 partial) agent/skill picker theo RBAC + delegation-level + loop certification badges đã có; còn nút **loop-breaker** và replay drawer khi Track 8 mở | Control Plane UI | picker hiện locked agent, backend DENY agent ngoài quyền; OPERATOR hiện `loop_run` |
|
||||
| 18.7.3 | 🟡 agent/skill picker theo RBAC + delegation-level + loop certification badges + replay/evidence surfaces đã có; nút **loop-breaker** trực tiếp vẫn là target UI follow-up | Control Plane UI | picker hiện locked agent, backend DENY agent ngoài quyền; OPERATOR/CODEGEN hiện `loop_run` |
|
||||
| 18.7.4 | Fail-loud: API/telemetry chết → UI `STALE/503` (tái dùng D3 `/healthz`) | nối Plan-07 D3 | ngắt backend → UI báo stale |
|
||||
|
||||
### Track 8 — Replay / Evidence / Command Center widgets `[MVP-2 → MVP-3]`
|
||||
@@ -323,7 +324,8 @@ flowchart TD
|
||||
`phase-chat-readonly-tests.sh`, `phase-chat-session-audit-tests.sh`; MVP-1 —
|
||||
`phase-chat-operator-tests.sh`; MVP-2 — `phase-chat-agent-select-tests.sh`,
|
||||
`phase-chat-pipeline-tests.sh`, `phase-chat-stream-hold-tests.sh`,
|
||||
`phase-chat-replay-tests.sh`, `phase-chat-approval-tests.sh`; MVP-3 —
|
||||
`phase-chat-replay-tests.sh`, `phase-chat-approval-tests.sh`,
|
||||
`phase-chat-codegen-tests.sh`; MVP-3 —
|
||||
`phase-chat-tenant-tests.sh`. Chạy **WSL**
|
||||
(deterministic, mock model; nhánh live cần Ollama SKIP-aware). Nối `ci-harness-gate.sh`;
|
||||
cập nhật tổng test ở `CASAN_HARDENING_STATUS.md`.
|
||||
@@ -351,6 +353,7 @@ cập nhật tổng test ở `CASAN_HARDENING_STATUS.md`.
|
||||
- [x] RBAC gate `chat:select_agent`; role thấp chọn agent tự chủ → DENY; cross-tenant → DENY.
|
||||
- [x] Delegation vượt agent max → `REQUIRES_APPROVAL`; tool ngoài allowlist → BLOCK trước runtime.
|
||||
- [x] Control Panel `GET /api/v1/chat/agents`, `/chat` agent/skill/delegation picker, response có `agent_binding`. Verify: `phase-chat-agent-select` 8/0, RBAC 12/0, SEC-23 RBAC 6/0, `console:test` 25/0, `console:build` xanh.
|
||||
- [x] CODEGEN draft path binds `codegen-draft`/`sourcegen-draft`, proves `artifact-scan` + `tool-output-scan` in allowlist, blocks injected generated artifacts, and certifies draft-only artifact through Plan-17 loop-run. Verify: `phase-chat-codegen` 4/0, `phase-chat-prompt-router` 9/0.
|
||||
|
||||
**MVP-2 Track 5/6 OPERATOR slice (Chat-as-loop + draft-hold):**
|
||||
- [x] OPERATOR turns create an `UNCERTIFIED` draft artifact, run `harness-preflight`, `context-assemble-scan`, `loop-run.sh`, `loop-trace verify-chain`, and `loop-trace replay` before action release.
|
||||
@@ -389,11 +392,11 @@ cập nhật tổng test ở `CASAN_HARDENING_STATUS.md`.
|
||||
---
|
||||
|
||||
## 7. Ghi chú trung thực & Non-goals (không lan man)
|
||||
- **[MVP-0 + MVP-1 + MVP-2 Track 4 + Operator Track 5/6 + Track 8.1/8.2/8.3/8.4] — 🟡 done+test.**
|
||||
- **[MVP-0 + MVP-1 + MVP-2] — 🟡 done+test.**
|
||||
Ask CASAN read-only, Operator registered actions, agent/skill governance foundation,
|
||||
OPERATOR chat-as-loop/draft-hold, replay/verify-chain foundation, và Command Center
|
||||
Chat/Loop widget, approvals escalation đã có harness CLI + Control Panel API/UI. Các
|
||||
phase CODEGEN-as-loop / multi-tenant production vẫn chưa mở.
|
||||
CODEGEN draft-as-loop, OPERATOR chat-as-loop/draft-hold, replay/verify-chain foundation,
|
||||
Command Center Chat/Loop widget, approvals escalation đã có harness CLI + Control Panel
|
||||
API/UI. Phase multi-tenant production vẫn chưa mở.
|
||||
- **MVP-first (chống lan man):** **MVP-0 (Ask CASAN read-only) KHÔNG phụ thuộc Plan-17/
|
||||
14/SEC-23** — làm được ngay trên nền H4/H5/H6 hiện có. Chỉ **MVP-2 trở đi** (chat-as-
|
||||
loop + agent) mới cần Plan-17 (T1–T3) + Plan-14 RBAC; **MVP-3** mới cần SEC-23 tenant.
|
||||
|
||||
Reference in New Issue
Block a user