7.7 KiB
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