Files
CASAN/docs/plans/CASAN_BACKLOG_STATUS.md
T

22 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-17 · Nhánh làm tiếp từ handoff Claude/Codex.

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; Plan-16 security remediation 33 SEC suite = 181 PASS / 0 FAIL (WSL, đã nối ci-harness-gate.sh); 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 (3 case cần Ollama live); phase2-sourcegen riêng 10 PASS / 0 FAIL; frontend Vitest 16 PASS / 0 FAIL; backend npm test 46 PASS / 0 FAIL / 3 SKIP (LLM judge thiếu Anthropic key). Đ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 packages/casan-harness/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 apps/okr/domain/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.
T1.5 Paid-PoC release package Commercial P0 🟡 partial, evidence-backed Done locally: Control Panel tests/build in harness + release gates; Platform manifest includes console/deploy/docs; extracted-artifact smoke works; Evidence Pack Viewer + one sample pack; Japanese PoC pack; npm third-party inventory + proprietary commercial-license decision. Remaining before claiming P0 complete: run a real Gitea PR E2E and retain its Evidence Pack; resolve all six UNKNOWN npm licenses plus Python/container/model/dataset/assets inventory with legal review.

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 🟡 production fail-closed + Docker lab ✅ infra/local-prod dựng Vault dev @ :18200; infra-lab verify chứng minh sign+verify. sign-audit-head.sh nay từ chối local-key fallback khi CASAN_PROFILE=prod (SEC-02 test). Còn: Vault/AWS-KMS/CloudHSM thật + token ngắn hạn qua IdP và Transit encryption cho dữ liệu tenant.
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 🟡 hardened Docker runner + test sandbox-container.sh forces a non-root workload user and production refuses a rootful daemon; network, root filesystem, capabilities and quotas remain locked down. Remaining: provision rootless Docker on the customer runner, image allowlist/signature policy, and optional nsjail/bubblewrap profile for daemonless Linux CI.
T2.7 Backup/restore + restore drill 🟡 automated + test state-backup.sh creates manifest/hash-bound state snapshots, requires encryption key in prod, restores only to an empty explicit directory; phase-state-backup is in CI. Remaining: customer object-store replication, retention/RPO/RTO, and a retained production restore-drill record.
T2.8 Upgrade/rollback compatibility 🟡 automated + test upgrade-compatibility.sh is fail-closed and permits only explicit matrix rules; the 1.0.x patch/rollback rule requires provenance, backup, artifact smoke and post-deploy Evidence Pack verification. Remaining: a reviewed migration rule for every future minor/major release and a retained live rollout/rollback record.
T2.9 Gitea Evidence Pack publishing 🟡 workflow implemented harness-ci.yml creates, verifies, and uploads casan-evidence-pack-<run> on every PR/push workflow. Remaining: first hosted run must be retained and checked in the Gitea UI; API token/PR creation is still needed from this environment to initiate that evidence.

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 ✅ A–D done+test (offline/local) 01-srs, 02-bd, 03-spec, 05-plan, 07-dd, 08-testkit, 09-tasks, 10-implement 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, ghi H5 sourcegen audit + H6 telemetry, fallback template nếu lỗi. Real pipeline có STEP10 implement draft + STEP12 run-tests gate; retry/escalation loops STEP5→STEP3, STEP7→STEP6, STEP11→STEP10. Test phase2-sourcegen 10/0; full template pipeline smoke trong /tmp tới STEP12 PASS; backend 46/0/3skip, frontend 16/0. Cloud OpenAI/Anthropic live smoke + billing ground truth thuộc Plan-03 (cần key thật).
04 Self-improve � core done+test packages/casan-harness/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 packages/casan-harness/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 (🔓 đã mở khoá — 01 done) 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 ✅. App mới chỉ cần apps/<project>/domain/ + set CASAN_DOMAIN_ROOT (đã có domain_root per-project trong project-registry.json).
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 (🔓 01 done, còn chờ 06) Onboard bằng khai báo (golden/corpus/policy theo domain). Phụ thuộc 01 ✅, 06.
01 Restructure ✅ done+test (2026-07-08, merged main) Đã tách: harness code → packages/casan-harness/, domain OKR → apps/okr/domain/, runtime state ở .specify/; app promote lên git root (hết wrapper AINative_OKR_CASAN5/); facade .specify symlink gỡ sạch (hard cutoff); path resolve qua casan-paths.sh (marker walk-up). Full gate PASS=64 FAIL=0 SKIP=3 từ cấu trúc mới. CI (.gitea/workflows/ci.yml) + docs đã đồng bộ. Mở khoá 06/12. Chi tiết: CASAN_PLAN_01_RESTRUCTURE.md.
13 Control Plane 🟡 core + Track 1/2/3 + FinOps/SLO + Command Center + local-prod TLS/OIDC smoke 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: packages/casan-harness/scripts/bash/control-plane-settings.py (settings versioned + audit hash-chain + deny-by-default + approval + rollback), phase-control-plane-tests.sh 9/0 + phase-control-plane-hitl-tests.sh 9/0 (nối CI). Đã gỡ khỏi apps/okr (OKR sạch: 46/0/3skip + 16/16). Track 1 DONE: Ops Console read-only telemetry. Track 2 DONE: settings API/UI tại packages/casan-control-panel/ bọc control-plane-settings.py + rbac-check.py. Track 3 DONE: kill-switch API/UI; approval inbox/delegation/oversight API/UI bọc harness approval-inbox.py + delegation-policy.yaml, SoD, apply setting proposal qua governed store; IdP group claim→RBAC role mapping tested. Track 4 local-prod DONE: FinOps/SLO page + Docker/nginx/oauth2-proxy deploy scaffold; local-prod-smoke.sh passes CP_LOCAL_SMOKE_PASS https_oidc=true actor=oidc-ops role=org-admin and invokes authenticated managed-prod-smoke.sh on the local-prod endpoint (CP_MANAGED_SMOKE_PASS actor=oidc-ops role=org-admin widgets=9); prod-readiness-check.sh validates managed-prod TLS/OIDC/nginx prerequisites. Command Center §8.6 DONE: GET /api/v1/command + /command UI, 9 evidence-backed widgets (gồm chat_loop), provenance envelope, executive briefing VI/EN, live ticker, evidence drawer. npm run console:test 26/0, npm run console:build xanh. Targeted related suites: RBAC 12/0, C7 15/0. Còn: live managed prod deploy với cert/enterprise IdP/host thật (07 T2); RAI view thuộc Plan-15 follow-up.
14 RBAC � core done+test RBAC decision engine trong harness: packages/casan-harness/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. Đã thêm: tenant data-boundary (SEC-23 23.13, org-admin A không đụng B) + audit quyết định vào H5 (CASAN_RBAC_AUDIT_LOG, phase-rbac-audit 5/0). Còn: enforcement trong web app (13), ánh xạ IdP claim→role thật (07-C4).
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.
17 Loop Engineering � T1–T6 done+test (offline) Agentic Loop Governance — đủ 5 primitive + orchestrator (97/0 WSL, nối CI). T1 Governor (loop-governor.py; deny-by-default, no/corrupt policy→strict/HALT, on_exceed halt/escalate) 15/0; T2 Convergence (loop-convergence.py; repeat/thrash→OSCILLATING, flat→STALLED, fail-closed) 15/0; T3 Verify Contract (loop-gate.py; H4→DENY, unmet→FAIL, correction bounded→ESCALATE, no self-declared DONE) 20/0; T4 Trace/Replay (loop-trace.py; append-only hash-linked, edited→BREAK, tampered artifact→replay DRIFT) 16/0; T5 Meta-loop (loop-metaloop.py; propose≠apply, SoD, loosen>org_ceiling refused, apply qua governed CP store→đổi thật ceiling + rollback) 15/0; T6 Orchestrator (loop-run.sh; gate→governor→convergence→trace/turn, secure-by-default opt-out, nén giữa vòng) 16/0. State qua CASAN_LOOP_STATE_ROOT (repo .specify/state sạch). Còn (infra): T4 KMS-anchor head (A7 Vault), T6 widget Command Center (17.22, C5), live H3-judge. Chi tiết: CASAN_PLAN_17_LOOP_ENGINEERING.md.
16 Security audit remediation � P0/P1/P2 phần lớn done+test Remediation đã thực thi: 28 SEC suite (151/0 WSL, nối ci-harness-gate.sh). Done: SEC-01..10, 12, 13, 14 (model-digest bỏ env-override ở prod/strict), 15, 16..21, 22 (trusted-time JWT exp ARCH-06 + tag proposal nguồn-không-tin ARCH-08), 26 (stored/second-order injection scan), 27..30, 23 Phase 1–5 offline (multi-tenant: tenant-store+guard · per-tenant CP/audit/telemetry · RBAC data-boundary · tenant kill-switch/quota · ký registry · crypt at-rest per-tenant), 24 offline (image digest-pin + ký workflow), 25 offline (artifact attestation tested==deployed); SEC-11 gộp vào SEC-17 (CASAN_PROFILE=prod enforce-by-default). Còn 📋 planned (hạ tầng/process): SEC-22 ARCH-10 (attestation ngoài) · SEC-23 23.11 (crypt qua Vault Transit) · SEC-24 còn (live CVE/OSV + scan image thật — offline image-pin/ký-workflow đã done) · SEC-25 còn (signed-commit enrollment + SLSA chain — offline artifact-attestation đã done). Chi tiết: CASAN_PLAN_16 §0a/§2d.
18 Chat Console ✅ MVP-0 + MVP-1 + MVP-2 + MVP-3 + Track M done+test Governed Chat Console (cắt lát MVP chống lan man). MVP-0 Ask CASAN read-only DONE: prompt-mode-router.py, chat-readonly.py, chat-session.schema.json, H4 input/output scan, H5 chat audit hash-chain, H6 token telemetry, answer kèm evidence sources. MVP-1 Operator DONE: registered actions through action-gate, no free-command, action artifacts with provenance. MVP-2 Track 4 DONE: agent-registry.yaml, chat-agent-resolver.py, chat:select_agent RBAC, delegation hold, tool allowlist BLOCK, Control Panel agent picker, CODEGEN draft-only through artifact-scan + Plan-17 loop certification. MVP-2 OPERATOR Track 5/6 DONE: chat-turn.py certifies UNCERTIFIED draft through Plan-17 loop-run.sh + trace verify/replay before side-effect release. Track 8.1/8.2 DONE: chat-replay.py verifies chat chain, evidence artifact hash, and OPERATOR/CODEGEN loop replay; Control Panel GET /api/v1/chat/replay. Track 8.3 DONE: Command Center chat_loop widget reads chat audit/replay evidence, loop ticker, budget gauge, and click-through evidence drawer. Track 8.4 DONE: REQUIRES_APPROVAL chat turns become pending chat.escalate approvals, SoD/reason enforced, strict/fake JWT denied before mutation. Track 9 DONE: non-default tenant chat state is partitioned by tenant-store.sh, explicit cross-tenant replay paths are denied, encrypted audit snapshots are written via tenant-crypt.sh, tenant kill-switch/quota are isolated. Test: chat suites 59/0 (phase-chat-prompt-router 9/0, phase-chat-readonly 5/0, phase-chat-session-audit 3/0, phase-chat-operator 8/0, phase-chat-agent-select 8/0, phase-chat-pipeline 4/0, phase-chat-stream-hold 2/0, phase-chat-replay 4/0, phase-chat-approval 4/0, phase-chat-codegen 4/0, phase-chat-tenant 8/0), Control Panel 29/0 + build xanh. Track M (2026-07-09) DONE: model-optional grounded synthesis — read-only Ask CASAN tổng hợp câu trả lời tự nhiên có citations qua model-router.sh khi CASAN_CHAT_MODEL_MODE=model (config model-providers.yaml), offline-first (mặc định deterministic), fail-safe fallback, cloud→ép preflight PII-guard, model output vẫn qua H4 (secret→DENY), H6 real token/cost. phase-chat-model-synthesis 7/0 (chat suites 66/0), nối ci-harness-gate.sh, UI badge model/deterministic. Uplift items 1–5 (2026-07-09b) DONE: (1) ANALYSIS mode reasoning/compare; (2) multi-turn memory per-chat/tenant nén Plan-08; (3) streaming draft UNCERTIFIED→final (API /chat/ask/stream + UI toggle); (4) CODEGEN full model-router draft (artifact-scan + loop-cert); (5) chat-cloud-smoke.sh (SKIP nếu thiếu key). phase-chat-advanced 8/0, chat suites 74/0. Còn: cloud live-smoke với key thật; token-level SSE (hiện 2-pha).

Production-enterprise preparation (P2)

Hạng mục Trạng thái Bước tiếp theo
APPI/data-processing documentation 🟡 template ready docs/compliance/APPI_DATA_PROCESSING.md records the customer/project/model data register, retention, transfer and incident-review evidence. Complete and approve it with the Japanese privacy/legal owner for each production tenant.
Japanese SLA/support/escalation 🟡 draft ready docs/jp-poc/07_本番SLA・サポート・エスカレーション案.md defines severity, ownership and evidence expectations. Finalize service hours, credits, uptime, RPO/RTO and 24x7 coverage only after managed operations/DR are proven.
Certification and audited operations roadmap 🟡 roadmap ready docs/compliance/CERTIFICATION_ROADMAP.md maps PoC → pilot → ISO/cloud privacy/AI management/government procurement evidence. It expressly forbids claims before the relevant accredited audit or procurement process completes.
Tenant isolation pre-audit 🟡 CLI + test ready tenant-isolation-review.py checks filesystem partition permissions, symlink escapes and local key separation; retain its output for the independent review. It does not replace an independent identity/database/network isolation assessment.

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 "$(git rev-parse --show-toplevel)"  # repo root (app promoted here)
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 packages/casan-harness/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 packages/casan-harness/tests/phase-prod-infra-lab-tests.sh  # starts/verifies local-prod Docker lab