Files
CASAN/casan-next-plans/CASAN_BACKLOG_STATUS.md
T

71 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CASAN — Backlog & Handoff Status (single source of truth for "what's left")
> **Mục đích:** liệt kê MỌI hạng mục còn tồn đọng theo ưu tiên, kèm trạng thái +
> bước tiếp theo cụ thể + cờ phụ-thuộc-hạ-tầng, để **bất kỳ AI/người nào tiếp quản
> cũng làm tiếp được ngay**. Cập nhật mỗi khi hoàn thành một mục.
>
> Cập nhật lần cuối: 2026-07-06 · Nhánh làm tiếp từ handoff Claude.
> Test hiện tại: **218 PASS / 0 FAIL** trên 13 core harness suite; `phase3-model-router` riêng **10 PASS / 0 FAIL**; frontend Vitest **16 PASS / 0 FAIL**. Backend `npm test` còn bị chặn bởi test-infra cũ (`schema.prisma` MySQL nhưng `setup-sqlite.mjs` chạy SQLite).
> Điểm công tâm vẫn quanh **~81/100**, harness thấp nhất 80; TIER 2 infra thật vẫn là trần Strong.
> Nguồn liên quan: `CASAN_HARDENING_STATUS.md` (chi tiết control) · `evidence/scoring-run-report.md` (điểm).
## Quy ước
- **Nhãn:** ✅ done+test · 🟡 MVP done (bản prod cần hạ tầng) · 🟦 deliverable-now (làm được offline) · 🔌 needs-infra (cần key/dịch vụ ngoài) · 📋 handoff-only (platform lớn, cần nhiều phiên).
- **Nguyên tắc bàn giao:** mỗi mục 🔌/📋 phải có "Bước tiếp theo" đủ cụ thể để người khác bắt tay ngay.
- **Bất biến an toàn:** giữ 218/0 core harness; mọi control mới phải có test đối kháng fail-able; không hardcode verdict, không bypass.
---
## TIER 1 — Làm được ngay (deterministic/mock, đóng nốt Plan-07) 🟦
| # | Hạng mục | Plan | Trạng thái | Bước tiếp theo |
|---|---|---|:--:|---|
| T1.1 | **Model-digest pinning** (chống model bị tráo/poison) | 07 B4 / V16 | ✅ done+test | `.specify/security/model-digest.pin` pin `ornith:9b`; `model-call.py` gọi `model-digest-check.sh verify` trước Ollama; mismatch mặc định BLOCK, rollout mode WARN. Test: `phase3-model-router` pin→OK, đổi→WARN/BLOCK. |
| T1.2 | **IdP/OIDC cho approval** (thay registry pubkey tĩnh) | 07 C4 / V20 | ✅ MVP done+test | `approval-verify.sh` chấp nhận `CASAN_APPROVAL_JWT` RS256 ký bởi mock IdP, verify chữ ký bằng pubkey, check `sub`/`role`/`exp` + bind `action`/`actor`/`input_sha256`. Test: JWT hợp lệ→APPROVED, hết hạn/sai role/chữ ký giả→DENY. Prod còn cần IdP/JWKS thật. |
| T1.3 | **Traceability REQ→code→test** (khác biệt nhất) | 10 | ✅ MVP done+test | `traceability-matrix.py` parse FR-xx từ requirement, dùng `.specify/traceability-map.json`, gate mọi FR có ≥1 code + ≥1 test; Evidence Pack thêm `traceability-matrix.json`. Test: FR đủ→PASS, FR thiếu test→FAIL. |
## TIER 2 — Plan-07 gaps cần hạ tầng (MVP đã có, cần bản prod) 🔌
| # | Hạng mục | Trạng thái | Bước tiếp theo (bản production) |
|---|---|:--:|---|
| T2.1 | KMS mặc định + HSM | 🟡 (Vault Transit live, chưa default) | Đặt `sign-audit-head.sh`/`telemetry-integrity.sh` route qua KMS khi có `VAULT_ADDR` (đã vậy); thêm cấu hình prod: Vault/AWS-KMS/CloudHSM + token ngắn hạn qua IdP; bỏ fallback khoá local ở môi trường prod (giữ cho dev). |
| T2.2 | WORM store thật (S3 Object Lock) | 🟡 (ledger local hash-link) | `audit-ship.sh` thêm backend S3: `aws s3api put-object --object-lock-mode COMPLIANCE --retain-until-date …`; hoặc QLDB. Giữ ledger local làm cache. Cần: AWS creds + bucket Object-Lock. |
| T2.3 | Dashboard deploy + auth | 🟡 (HTTP local + /healthz) | Đóng gói `dashboard-server.py` vào container + nginx reverse-proxy + auth (OIDC/basic); expose `/healthz` cho uptime monitor. Cần: host + TLS cert. |
| T2.4 | Kênh alert managed + on-call | 🟡 (webhook + dead-letter) | `alert-dispatch.sh` trỏ `CASAN_ALERT_WEBHOOK` tới Slack/PagerDuty incoming-webhook; map severity→on-call rota (tie C7 incident). Cần: webhook URL + rota. |
| T2.5 | Billing-API telemetry thật | 🟡 (fetch vs endpoint local) | `provider-usage-fetch.sh` trỏ tới usage API thật của OpenAI/Anthropic (đã có schema-gate + reconcile). Cần: API key thật (chưa test). |
| T2.6 | Sandbox: rootless/nsjail + base image CI | 🟡 (container isolation live via Docker) | Thêm profile nsjail/bubblewrap cho Linux CI (không cần Docker daemon); hardened base image tối thiểu. `sandbox-container.sh` đã có bản Docker. |
## TIER 3 — Platform plans (INDEX 01–12, việc lớn nhiều phiên) 📋
| Plan | Trạng thái | Lõi cần làm (bước tiếp theo cho AI kế) |
|---|:--:|---|
| **10 Traceability + H3 Eval** | ✅ MVP done+test | Đã nối traceability vào Evidence Pack. Sau MVP: line/symbol-level traceability + H3 eval-set độc lập (nhiều model). |
| **02 LLM source-gen** | 📋 chưa bắt đầu | Thay template bằng LLM thật sinh source qua `model-router.sh`; đi qua wrapper H4→H7. Phụ thuộc 03. Bước 1: định contract prompt→file cho 1 module (objectives), gate bằng H3 judge + traceability. |
| **03 Cloud patch** | 📋 chưa bắt đầu | Bỏ stub trong `model-call.py` cho OpenAI/Anthropic; test bằng key thật (🔌). Bước 1: env `CASAN_MODEL_PRIMARY=openai:…`, xác thực round-trip + ghi provider-usage thật. |
| **04 Self-improve** | 📋 chưa bắt đầu | Khép vòng `casan improve`: đọc metrics/drift/hallucination → đề xuất vá → chạy lại gate. Phụ thuộc 02, 05. Bước 1: script đọc `metrics.jsonl` + `drift-report.json` → sinh backlog vá tự động. |
| **05 CI/CD** | 📋 một phần (act_runner/deploy có) | Chuẩn hoá pipeline phát hành package `fpt-casan-sdd-harness` + chạy 12 suite trong CI (Vault+Docker service). Bước 1: `.gitea/workflows/harness-ci.yml` chạy toàn bộ suite + security-gate. |
| **06 Onboard dự án 2** | 📋 chưa bắt đầu | Chứng minh reuse: cắm 1 repo khác + golden/corpus/input, đăng ký qua `verify-harness-reuse.sh`, không sửa gate. Phụ thuộc 01. |
| **08 Context compression** | 📋 chưa bắt đầu | Nén prompt/context giảm token (H1.5). Làm SAU khi core ổn (nén thêm bề mặt rủi ro → cần quét lại). Bước 1: đo token baseline mỗi step, thử tóm tắt có kiểm chứng (H3 judge so sánh). |
| **12 Domain Pack SDK** | 📋 chưa bắt đầu | Onboard bằng khai báo (golden/corpus/policy theo domain). Phụ thuộc 01, 06. |
| **01 Restructure** | 📋 chưa bắt đầu | Tái cấu trúc thư mục Phase 0→6. Nền cho 06/12. Rủi ro cao (đụng nhiều path) → làm trên nhánh riêng, giữ 218/0. |
| Future B1–B6 | 💤 vision | `CASAN_PLAN_FUTURE_PHASES.md` — approval workflow nâng cao · state machine · model benchmark · governed memory · auto-remediation · platform KPI. |
---
## Trần điểm & điều kiện lên "Strong (81+)"
Harness thấp nhất = 80 (H5, H6). Để CẢ pipeline vào Strong cần đóng **các mục 🔌 TIER 2**
(IdP live, WORM-S3, KMS default, dashboard deploy, managed alert, billing-API) — đều là
**hạ tầng/khoá thật**, không code thuần được nữa. Các mục 🟦 TIER 1 nâng H4/H2 nhưng không
đổi trần (H5/H6 vẫn 80) cho tới khi TIER 2 xong.
## Cách kiểm chứng nhanh (bất kỳ AI kế nào)
```bash
cd AINative_OKR_CASAN5
for s in run-casan4-harness adversarial-harness phase1-track-a phase2-track-c \
phase3-evidence-pack phase-h5-approval phase-h5-infra phase-h6-agentops \
phase-c7-incident phase-h4-multilingual phase-c6-sandbox phase-h4-split-inject \
phase10-traceability; do
bash .specify/tests/$s-tests.sh >/dev/null 2>&1 && echo "$s OK" || echo "$s FAIL"; done
# KMS live cần Vault dev; C6 live cần Docker (không có thì SKIP, không fail).
```