Files
CASAN/casan-next-plans/CASAN_BACKLOG_STATUS.md
T
2026-07-06 17:47:12 +09:00

12 KiB
Raw Blame History

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.

Vai trò file (single source of truth): file này là nguồn chuẩn cho "còn gì phải làm". Control đã implement+test → xem CASAN_HARDENING_STATUS.md. Mục lục plan → CASAN_PLAN_00_INDEX.md. Ba file không lặp trạng thái chi tiết; Index chỉ trỏ tới hai file này. Test hiện tại: 218 PASS / 0 FAIL trên 13 core harness suite; local-prod Docker infra lab 2 PASS / 0 FAIL (infra-lab verify: 7/0 internal checks); phase3-model-router riêng 11 PASS / 0 FAIL; phase2-sourcegen riêng 3 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 (legend chuẩn — các file khác trỏ về đây): ✅ 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).
  • Ánh xạ sang nhãn của CASAN_HARDENING_STATUS.md: ✅ ≈ [implemented+tested] · 🟡 (có bản chạy, prod cần hạ tầng) ≈ [scaffold+tested] · 📋/🔌 chưa làm ≈ [planned].
  • 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.
T1.4 Fix test-infra backend (Prisma MySQL vs setup-sqlite.mjs) — gỡ chặn npm test để Plan-05 CI xanh 05 ✅ done+test Đã fix: scripts/make-sqlite-schema.mjs sinh schema.sqlite.prisma từ schema.prisma (không drift), test dùng prisma db push thay migration MySQL thủ công; bỏ setup-sqlite.mjs; đổi bcrypt→bcryptjs (thuần JS, không cần native build); thêm cross-env. Backend npm test = 46 pass / 0 fail / 3 skip (llm-judge thiếu ANTHROPIC_API_KEY). Đã nối vào ci-harness-gate.sh (backend-tests). Build production (mysql) vẫn compile. Ghi chú: engine Prisma tải qua NODE_OPTIONS=--use-system-ca do corporate MITM.

TIER 2 — Plan-07 gaps cần hạ tầng (Docker local-prod lab đã có; prod managed thật vẫn cần) 🔌

# Hạng mục Trạng thái Bước tiếp theo (bản production)
T2.1 KMS mặc định + HSM 🟡 Docker lab ✅ (Vault Transit) infra/local-prod dựng Vault dev @ :18200; infra-lab verify chứng minh sign+verify. Prod: Vault/AWS-KMS/CloudHSM + token ngắn hạn qua IdP; bỏ fallback khoá local ở môi trường prod.
T2.2 WORM store thật (S3 Object Lock) 🟡 Docker lab ✅ (MinIO Object Lock) MinIO bucket casan-worm bật Object Lock COMPLIANCE 1d. Prod: S3 Object Lock/QLDB + trusted timestamp; cần AWS creds + bucket Object-Lock.
T2.3 Dashboard deploy + auth 🟡 Docker lab ✅ (nginx basic auth + /healthz) Dashboard container + nginx reverse-proxy @ :18080, user/pass lab casan/casan; /healthz exposed. Prod: host/TLS/OIDC or enterprise auth.
T2.4 Kênh alert managed + on-call 🟡 Docker lab ✅ (webhook emulator) alert-webhook @ :19092 nhận live POST. Prod: trỏ CASAN_ALERT_WEBHOOK tới Slack/PagerDuty + rota/on-call thật.
T2.5 Billing-API telemetry thật 🟡 Docker lab ✅ (billing API mock) billing-api @ :19093/usage; provider-usage-fetch.sh import được provider telemetry. Prod: OpenAI/Anthropic usage API thật + key.
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 + symbol/line-level refs (missing symbol/line ⇒ gate FAIL, phase10 6/0 WSL) + enforce trong CI (ci-harness-gate.sh). Sau MVP: H3 eval-set độc lập (nhiều model) + enrich symbol refs cho FR-02→FR-05.
03 Cloud patch 🟡 MVP done+test model-call.py đã hỗ trợ openai:<model> và anthropic:<model> qua endpoint hard-pin + API key env; parser token usage và malformed payload có deterministic test. Còn live smoke với key thật + billing usage API ground truth.
02 LLM source-gen 🟡 đợt A MVP done+test 01-srs và 02-bd hỗ trợ CASAN_GEN_MODE=model: gọi model-router.sh --role generate, scan H4 draft bằng artifact-scan.sh, validate token bắt buộc, fallback template nếu lỗi. Test phase2-sourcegen 3/0. Còn đợt B/C/D + full live pipeline smoke.
04 Self-improve � core done+test .specify/scripts/bash/self-improve.py: propose đọc metrics/drift → proposal dry-run (không ghi); apply bắt buộc approval, áp qua governed store (audit); sensitive/loosen luôn cần duyệt. phase-selfimprove-tests.sh 7/0 (WSL), nối CI. Còn: luật đề xuất phong phú hơn (corpus/model escalation), chạy định kỳ CI (05).
05 CI/CD 🟡 CI gate MVP done .specify/scripts/bash/ci-harness-gate.sh chạy các suite harness/hardening/sourcegen/traceability/frontend theo thứ tự an toàn, có timeout/filter; .gitea/workflows/harness-ci.yml gọi gate trên push/PR. Filtered local verify PASS=2/0. Còn: full gate xanh trên runner thật, xử lý A6 nếu còn chậm/treo, bật Docker infra lab nếu runner hỗ trợ, package/release artifact fpt-casan-sdd-harness.
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 � MVP done+test CASAN-native token-killer (Track 3) đã có: context-compress.py (dedup/extractive/structural, must-keep, tee, gate fail-able), phase08-compression-tests.sh 7/0 (WSL), nối CI. Còn: Track 1 nén INPUT + Track 2 nén VIEW liên-bước + Track 4 abstractive (gated) + nối H4/H5 trong pipeline thật.
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.
13 Control Plane 🟡 core done+test Sửa kiến trúc: là tài sản harness, KHÔNG nằm trong OKR. Governance core đã dời vào harness: .specify/scripts/bash/control-plane-settings.py (settings versioned + audit hash-chain + deny-by-default + approval + rollback), phase-control-plane-tests.sh 7/0 (WSL), nối CI. Đã gỡ khỏi apps/okr (OKR sạch: 46/0/3skip + 16/16). Còn: web app React+NestJS độc lập control-plane/ bọc harness core; RBAC đầy đủ (14); approval IdP (04+07-C4); FinOps/SLO; deploy prod (07 T2).
14 RBAC � core done+test RBAC decision engine trong harness: .specify/scripts/bash/rbac-check.py (role×resource:action, scope org/project, deny-by-default, tenant isolation, sensitive→org-admin, SoD), phase-rbac-tests.sh 10/0 (WSL), nối CI. Còn: ánh xạ IdP claim→role (07-C4), enforcement trong web app (13), audit quyết định vào H5.
15 Responsible AI & Data Gov 🟡 core done+test+enforced rai-guard.py (classify; PII→cloud deny; model-card; retention gate/purge-audit; report aggregate) + enforcement harness-preflight.sh chặn PII→cloud trước model-call, model-router opt-in CASAN_PREFLIGHT. phase-rai 12/0 + phase-preflight 5/0 (WSL), nối CI. Còn: view trên Control Plane.
Future B1–B6 💤 vision CASAN_PLAN_FUTURE_PHASES.md — approval workflow nâng cao · state machine · model benchmark · governed memory · auto-remediation · platform KPI.
16 Security audit remediation 📋 audit xong, vá chưa làm Audit đối kháng toàn bộ script core (CASAN_PLAN_16). High per-file: tamper-evidence bị vô hiệu (unsigned=valid + khoá local + chain recomputable), RCE rollback-manager (bash -c), JSON-injection governance-check, fail-open action-gate, control-plane audit chưa ký. Kiến trúc (nguy hiểm hơn): gate/policy không bảo vệ toàn vẹn (sửa thẳng gate = bypass), test tự-tham-chiếu, vi phạm secure-by-default (control mạnh là opt-in env), TOCTOU/không-lock, tin PATH/clock. Kế hoạch vá P0→P2 (SEC-01..30, gồm ARCH-01..10 + multi-tenant MT-01..04 + supply-chain SC-01..07 + second-order X-01..07) mỗi task verify fail-able. Thực thi: AI kế.

Trần điểm & điều kiện lên "Strong (81+)"

Harness thấp nhất = 80 (H5, H6). Docker local-prod lab đã chứng minh luồng infra production-like chạy được trên Mac, nhưng để CẢ pipeline vào Strong vẫn cần bản managed thật (enterprise IdP/JWKS, WORM-S3/QLDB, KMS default/HSM, dashboard deploy TLS/OIDC, managed alert/on-call, billing-API thật). Các mục này cần key/dịch vụ ngoài nên chưa nên claim production Strong.

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 \
  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).
bash .specify/tests/phase-prod-infra-lab-tests.sh  # starts/verifies local-prod Docker lab