The plan set (Plan-00..18, backlog/hardening/QA status, team allocation) is the ONGOING roadmap, not a finished competition artifact — restored from history into docs/plans/. Plan-01 (restructure) marked ✅ done; the rest remain to do. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.0 KiB
4.0 KiB
KẾ HOẠCH 12 — CASAN Domain Pack SDK
Onboard dự án mới không copy folder thủ công — chỉ khai báo một Domain Pack (YAML) là CASAN tự hiểu golden/corpus/threshold/quality-rules của domain đó. Chuẩn hoá "harness reusable, domain data tách khỏi core". Task-level, chưa thực thi.
Nhãn: [có]/[demo]/[mới]. Phụ thuộc: 01 (tách
config/apps/<x>/domain) là điều kiện tiên quyết · 06 (onboard thủ công là bản chạy tay của cái này) · 07/10 (rules tham chiếu).
1. Vì sao đáng làm
- Plan-06 onboard dự án 2 thủ công; Domain Pack biến việc đó thành khai báo → reuse thật ở tầm platform.
- Đúng tư tưởng CASAN: gate (khung) không đổi; domain data khai báo bên ngoài.
2. Hình dạng Domain Pack
# apps/<project>/domain/domain-pack.yaml
domain: okr
language: [vi, ja, en]
artifact_types: [srs, bd, spec, code, test]
golden_runs:
path: apps/okr/domain/golden-runs
redteam_corpus:
path: apps/okr/domain/redteam-corpus
benign_corpus:
path: apps/okr/domain/benign-corpus
thresholds: # đè mặc định package
cost_absolute_max: 800
fp_budget: 0.03
drift_similarity_min: 0.7
quality_rules:
- requirement_coverage
- no_security_regression
- no_unapproved_dependency
harness_package: fpt-casan-sdd-harness
harness_version: 1.0.0
3. Tasks
Track 1 — Loader & schema
| Task | Việc | Verify | Done |
|---|---|---|---|
| 1.1 | Định schema domain-pack.yaml + validate |
pack sai field → báo lỗi rõ | schema chốt |
| 1.2 | Loader: đọc pack → nạp golden/corpus/threshold/rules vào harness | chạy với pack → dùng đúng data domain | loader chạy |
| 1.3 | Cơ chế override: pack đè default package; thiếu field → dùng default | field trống → default; có → đè | override đúng |
| 1.4 | casan init-domain <name>: scaffold pack + thư mục domain rỗng |
sinh khung pack | init chạy |
Track 2 — Tích hợp & kiểm chứng
| Task | Việc | Verify | Done |
|---|---|---|---|
| 2.1 | Pipeline đọc domain-pack thay vì hard-code (bỏ feature-id cứng) |
đổi pack → đổi domain, không sửa gate | tách domain |
| 2.2 | casan register đọc pack → ghi project-registry.json |
registry có entry đúng version | đăng ký tự động |
| 2.3 | verify-harness-reuse với 2 domain pack thật |
HARNESS_REUSE_VALID project_count=2 |
reuse thật |
| 2.4 | Quality rules trong pack map sang gate (coverage→H3, dependency→C2…) | rule bật/tắt đúng gate | rule-driven |
Track 3 — Chất lượng pack
| Task | Việc | Verify | Done |
|---|---|---|---|
| 3.1 | Lint pack: golden/corpus tối thiểu N mẫu; rule hợp lệ | pack thiếu corpus → cảnh báo | lint pack |
| 3.2 | casan doctor <domain>: kiểm pack sẵn sàng chạy chưa |
thiếu gì → liệt kê | health-check |
4. Rủi ro
| Rủi ro | Giảm thiểu |
|---|---|
| Phải sửa gate cho domain mới | nếu xảy ra → nợ kỹ thuật đẩy về Plan-01 (tách chưa đủ) |
| Pack sơ sài → gate vô nghĩa | 3.1 lint tối thiểu corpus/golden |
| Reuse "giả" (chỉ copy) | cùng harness_version + verify script |
5. Tiêu chí HOÀN THÀNH
- Onboard dự án mới = tạo
domain-pack.yaml+ domain data, không sửasrc/gates. - Override threshold/rule theo pack hoạt động.
casan init-domain/register/doctorchạy.verify-harness-reuse= 2 domain pack thật → VALID.
6. Ghi chú trung thực
Cần Plan-01 (tách config/domain) xong trước; nếu chưa, Domain Pack chỉ là lớp mỏng trên cấu trúc phẳng. Reuse thật chỉ được tuyên bố khi có ≥2 domain pack chạy được, không tính entry demo.
Liên quan: CASAN_PLAN_01_RESTRUCTURE.md · CASAN_PLAN_06_ONBOARD.md · CASAN_PLAN_07/10 (quality rules).