Files
sys-analysis-design/.claude/skills/sa-conformance/GUIDE.md
Leonard-ThindPad-P50 c81f249920 init git
2026-09-08 10:26:21 +07:00

158 lines
7.7 KiB
Markdown

# Hướng dẫn sử dụng — `sa-conformance` (xuyên suốt)
## Skill này giải quyết gì
Tài liệu kiến trúc luôn trông đầy đủ khi đọc riêng từng file. Chỗ đứt chỉ lộ ra khi nối chúng
lại: một yêu cầu định hình kiến trúc mà **không ai quyết định gì** về nó, một NFR mức Must
**chưa ai đo**, một component tồn tại mà **không phục vụ yêu cầu nào**.
Skill này nối và chỉ ra chỗ đứt. Nó **có quyền chặn AG2, AG3, AG4**.
**Không làm ở skill này:** thiết kế, viết ADR, sửa tài liệu của skill khác.
## Khi nào gọi
| Tình huống | Có nên gọi |
|---|---|
| **Trước mỗi lần trình gate** | ✅ `--mode full` — đỡ bị trả về |
| Sau mỗi sprint | ✅ `--mode dtm` |
| Vừa viết xong một `ADR` | ✅ `--mode adl` |
| Nhận bàn giao kiến trúc từ người khác | ✅ `--mode full` |
| Nghi ngờ có quyết định nào chưa được ghi | ✅ |
| Muốn biết làm gì tiếp | ❌ `/sa-lifecycle` |
| Muốn sửa chỗ đứt | ❌ Skill này chỉ báo — sửa bằng skill giai đoạn |
## Cú pháp
```
/sa-conformance <PROJECT> [--mode dtm|adl|full] [--gate AG2|AG3|AG4] [--out <path>] [go]
```
| Tham số | Ý nghĩa |
|---|---|
| `--mode dtm` | Chỉ ma trận truy vết quyết định |
| `--mode adl` | Chỉ mục lục ADR + 5 kiểm tra về ADR |
| `--mode full` | *(mặc định)* Cả hai + coverage + kết luận gate |
| `--gate AG2` | Chỉ chấm những kiểm tra chặn gate đó |
## Bạn sẽ nhận được gì
```
sa-output/<PROJECT>/00-index/
├── DTM_<PROJECT>.md ← ma trận truy vết quyết định
└── ADL_<PROJECT>.md ← mục lục ADR + cảnh báo
```
Cộng ba bảng in ra màn hình: coverage · danh sách phát hiện xếp theo mức · kết luận gate.
## Đọc báo cáo coverage thế nào
```
DRV → ASR/QAS 8/8 100% ✅
ASR → ADR 11/13 85% 🔴 đứt: ASR-004, ASR-009 → chặn AG2
ADR → nguồn 14/16 88% 🟠 không nguồn: ADR-006, ADR-012
QAS(Must) → bài đo 6/9 67% 🔴 thiếu: QAS-009, QAS-011, QAS-012 → chặn AG3
Ràng buộc AGD → FIT 12/18 67% 🔴 thiếu và không có nhãn: §3.2-2, §3.4-3
CMP → ASR 9/11 82% 🟠 không phục vụ ASR nào: CMP-07, CMP-10
```
**Luôn có danh sách ID, không chỉ tỉ lệ.** "85%" không hành động được; "`ASR-004`, `ASR-009`"
thì hành động được ngay.
## Sáu chỗ đứt và ý nghĩa
| Chỗ đứt | Nghĩa là | Sửa bằng |
|---|---|---|
| `DRV` không có `ASR`/`QAS` | Áp lực kinh doanh không được kiến trúc phục vụ | `/sa-2-architecture --focus asr` |
| `ASR` không có `ADR` | Yêu cầu định hình kiến trúc mà không ai quyết gì | `/sa-2-architecture --focus adr` |
| `ADR` không có nguồn | Quyết định là sở thích cá nhân | Bổ sung §1 của ADR |
| `QAS` Must không có bài đo | Cam kết không kiểm chứng được | `/sa-3-enablement --focus fit` |
| Ràng buộc `AGD` không có `FIT`, không có nhãn | Sẽ bị vi phạm mà không ai biết | `/sa-3-enablement --focus fit` |
| `CMP` không phục vụ `ASR` nào | Thành phần có thể thừa | Rà lại `SAD` §4.1 |
## Năm kiểm tra riêng cho ADR
| Kiểm | Phát hiện gì | Hay gặp không |
|---|---|---|
| Chuỗi supersede | `ADR-A` nói bị `ADR-B` thay, nhưng `ADR-B` không nói thay `ADR-A` | Rất hay |
| `Proposed` quá 10 ngày | Quyết định treo, có người đang chờ mà không ai biết | Rất hay |
| Điểm radar ≥ 8 mà `Accepted` không POC | Cam kết dựa trên suy đoán | Hay |
| Nguồn đã đổi | ADR dựa trên một `QAS` đã bị sửa/bỏ | Hay, khó tự thấy |
| **Hai ADR mâu thuẫn** | Hai quyết định `Accepted` ngược nhau cùng chủ đề | Ít, nhưng đắt nhất |
🔴 Kiểm tra cuối chỉ tìm được khi rà **theo chủ đề** (dữ liệu, tích hợp, bảo mật, hạ tầng),
không phải theo số thứ tự. Đó là lý do skill này tồn tại thay vì đọc lướt sổ ADR.
## Ví dụ hội thoại
```
Bạn: /sa-conformance Settlement --mode full --gate AG2
Claude: [Bước 0]
Quét được: CTX v1.0 ✅ · OPT v1.0 ✅ · QAS v1.1 🟠 · ASR v1.0 🟠 ·
SAD v1.0 🟠 · ICD v1.0 🟡 · 13 ADR · DAT v1.0 🟡 · SEC ❌ chưa có
⚠️ ICD và DAT đang 🟡 Draft — sẽ quét nhưng tách riêng, không tính vào coverage chặn.
Xác nhận?
Bạn: go
Claude: ① Coverage (chỉ tính artifact 🟠 trở lên)
DRV → ASR/QAS 8/8 100% ✅
ASR → ADR 11/13 85% 🔴 đứt: ASR-004, ASR-009
ADR → nguồn 11/13 85% 🟠 không nguồn: ADR-006, ADR-012
CMP → ASR 9/11 82% 🟠 thừa?: CMP-07, CMP-10
② Phát hiện
🔴 CHẶN AG2
1. ASR-004 "chịu được POS mất kết nối ≤ 4 giờ" (ASR_… §B2)
→ không có ADR nào. ASR này ép ra cơ chế hàng đợi bền, nhưng SAD §4.1
không có component nào đảm nhận. Chạy /sa-2-architecture --focus adr.
2. ASR-009 "dữ liệu cá nhân trong lãnh thổ HQ" (ASR_… §B2)
→ không có ADR. Đây là ràng buộc pháp lý (CON-05), không được bỏ qua.
3. SEC chưa tồn tại → AG2 yêu cầu Security ký. Chạy /sa-2-architecture --focus sec.
🟠 NỢ
4. ADR-006 "dùng Redis làm cache" — §1 không tham chiếu QAS/CON nào.
Bổ sung nguồn, hoặc hạ xuống DEC-nn nếu điểm radar < 5.
5. CMP-07 "NotificationRelay" không phục vụ ASR nào và không có trong BACKLOG của BA.
Rà lại: có ai cần nó không?
🟡 CẢI THIỆN
6. ADR-003 đang Proposed từ 2026-08-30 (18 ngày). Ai đang chờ quyết định này?
⚠️ TRONG BẢN NHÁP (chưa tính)
7. ICD 🟡: 4/9 IF-nnn chưa có cột "ai sở hữu contract".
③ Kết luận
AG2: 🔴 CHẶN — 3 mục. Việc gần nhất: /sa-2-architecture --focus adr
```
## Lỗi thường gặp
**"Coverage 100% nhưng vẫn có vấn đề."**
Kiểm tra chất lượng liên kết, không chỉ sự tồn tại. Một `ADR` gắn với `ASR-004` nhưng nội dung
không thực sự giải quyết `ASR-004` vẫn đếm là có liên kết. Skill báo được chỗ đứt, không thay
được việc đọc.
**"Nó chặn gate của tôi trong khi tôi đang gấp."**
Đó là mục đích. Nhưng bạn có thể **chấp nhận có ý thức**: ghi `DEC-nn` nêu rõ chấp nhận đứt
chỗ nào, ai chấp nhận, và hạn xử lý. Chấp nhận có ghi chép khác hoàn toàn với bỏ qua.
**"Ma trận trống nhiều quá, nhìn nản."**
Ma trận trống trung thực tốt hơn ma trận đầy do suy diễn. Ô trống là danh sách việc; ô điền
bừa là cảm giác an toàn giả.
**"CMP-07 không phục vụ ASR nào nhưng nó cần thật."**
Hợp lệ — không phải component nào cũng sinh từ `ASR`. Ghi vào `SAD` §4.1 nguồn của nó (một
`US` trong `BACKLOG` của BA chẳng hạn) và skill sẽ ngừng báo.
## Liên quan
- Quan hệ phụ thuộc giữa artifact: `../sa-lifecycle/references/artifact-map.md` §6
- Tiêu chí gate: `../sa-lifecycle/references/workflow.md` §2
- Chấm điểm ADR: `../sa-lifecycle/references/decision-radar.md` §2
- Bộ BA tương ứng: `../ba-traceability/GUIDE.md`
- Template: `templates/decision-traceability-matrix.md` · `templates/adr-ledger.md`