7.5 KiB
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:
feat/plan07-track-a-hardening(đã merge vàomain@c943273). Test hiện tại: 211 PASS / 0 FAIL trên 12 suite. Điểm công tâm ~81.6/100, harness thấp nhất 80. 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ữ 211/0; 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 | 🟦 → (làm trong phiên này) | Ghi digest model đã duyệt vào security/model-digest.pin; model-router.sh/1 gate so digest hiện tại; đổi digest bất ngờ → cảnh báo/lock. Test: pin→match=OK, đổi→WARN/BLOCK. |
| T1.2 | IdP/OIDC cho approval (thay registry pubkey tĩnh) | 07 C4 / V20 | 🟦 (mock IdP) | Verify approver bằng JWT ký bởi IdP (RS256): approval-verify.sh chấp nhận CASAN_APPROVAL_JWT — verify chữ ký bằng JWKS/pubkey, check claim sub(=approver)/role/exp. MVP dùng khoá IdP-giả (như Vault dev); prod trỏ JWKS thật. Test: JWT hợp lệ→APPROVED, hết hạn/sai role/chữ ký giả→DENY. |
| T1.3 | Traceability REQ→code→test (khác biệt nhất) | 10 | 🟦 → (làm trong phiên này) | Sinh ma trận: parse FR-xx từ docs/input/okr-requirement.md → map sang file code + test; gate: mọi FR phải có ≥1 code + ≥1 test, cảnh báo FR mồ côi. 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 phiên này (xem T1.3) | Sau MVP: nối traceability vào Evidence Pack (thêm traceability-matrix.json vào pack); mở rộng 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ữ 211/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)
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; 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).