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

175 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DTM — Decision Traceability Matrix — <PROJECT>
| | |
|---|---|
| **Cập nhật** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-conformance) |
| **Nguồn quét** | *(liệt kê file + version đã đọc)* |
| **Artifact 🟡 Draft bị tách riêng** | *(liệt kê — không tính vào coverage chặn gate)* |
> 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ả.
---
## 1. Báo cáo coverage
| Chuỗi | Tỉ lệ | % | Mức | ID bị đứt | Chặn gate |
|---|---|---|---|---|---|
| `DRV` → `ASR`/`QAS` | / | | | | AG2 |
| `ASR` → `ADR` | / | | | | AG2 |
| `ADR` → nguồn (`DRV`/`CON`/`QAS`/`ASR`) | / | | | | — |
| `ADR` → `CMP` | / | | | | AG2 |
| `QAS` (Must) → bài đo | / | | | | AG3 |
| `QAS` (Must) → kết quả đo thật | / | | | | AG3 |
| Ràng buộc `AGD` → `FIT` hoặc nhãn khuyến nghị | / | | | | AG3 |
| `CMP` → `ASR` hoặc nhu cầu chức năng | / | | | | — |
| `IF` → chủ sở hữu contract | / | | | | AG2 |
| Thực thể dữ liệu → đúng một chủ | / | | | | AG2 |
| `THR` → biện pháp → cách kiểm chứng | / | | | | AG2 |
| Phụ thuộc ngoài process → `FM` | / | | | | AG2 |
**Luôn ghi danh sách ID, không chỉ tỉ lệ.** "85%" không hành động được.
## 2. `DRV` × `ASR` / `QAS`
| | `ASR-001` | `ASR-002` | … | `QAS-001` | `QAS-002` | … | **Đứt** |
|---|---|---|---|---|---|---|---|
| `DRV-01` | ● | | | ● | | | |
| `DRV-02` | | | | | | | 🔴 |
**Đọc ngược** — `ASR`/`QAS` không sinh từ `DRV`/`CON` nào:
| ID | Sinh từ đâu | Hợp lệ? |
|---|---|---|
| | *(có thể hợp lệ: ràng buộc kỹ thuật nội tại, chuẩn doanh nghiệp)* | |
## 3. `ASR` × `ADR`
| `ASR` | Phát biểu ngắn | `ADR` hiện thực hoá | Trạng thái ADR | Đứt |
|---|---|---|---|---|
| `ASR-001` | | `ADR-005` | Accepted | |
| `ASR-004` | | — | — | 🔴 |
🔴 `ASR` không có `ADR` = yêu cầu định hình kiến trúc mà không ai quyết định gì. **Chặn AG2.**
**Đọc ngược** — `ADR` không phục vụ `ASR`/`QAS` nào:
| `ADR` | Quyết định gì | Nguồn ghi trong §1 | Hợp lệ? |
|---|---|---|---|
| `ADR-006` | | *(trống)* | 🟠 — sở thích cá nhân? hạ xuống `DEC-nn`? |
## 4. `ADR` × `CMP`
| | `CMP-01` | `CMP-02` | … | **Không hiện ở đâu** |
|---|---|---|---|---|
| `ADR-001` | ● | ● | | |
| `ADR-008` | | | | 🟠 |
**Đọc ngược** — `CMP` không phục vụ `ASR` nào và không có nhu cầu chức năng rõ:
| `CMP` | Trách nhiệm | Sinh từ | Hợp lệ? |
|---|---|---|---|
| `CMP-07` | | *(trống)* | 🟠 — có ai cần nó không? |
## 5. `QAS` × kiểm chứng
| `QAS` | Mức | Bài đo (`FIT`/tên bài) | Đã chạy | Kết quả | Nguồn kết quả | Đứt |
|---|---|---|---|---|---|---|
| `QAS-001` | Must | `FIT-05` / `perf/api.js` | ✅ | p95 240ms | `CONF` 2026-09 | |
| `QAS-009` | Must | — | — | — | — | 🔴 |
🔴 `QAS` mức Must không có bài đo ⇒ **chặn AG3**. Cam kết không kiểm chứng được không phải cam kết.
## 6. Ràng buộc `AGD` × `FIT`
| Ràng buộc `AGD` | Nguồn | `FIT` | Nhãn `⚠️ Khuyến nghị` | Đứt |
|---|---|---|---|---|
| §3.1-1 | `ADR-002` | `FIT-01` | — | |
| §3.2-2 | `DAT` §1 | — | — | 🔴 |
| §3.4-2 | `SEC` §3 | — | ✅ có nhãn + cách kiểm thủ công | |
🔴 Không có `FIT` **và** không có nhãn ⇒ chặn AG3 (quy tắc `D8`).
## 7. Kiểm tra chuyên biệt
### 7.1 Interface
| `IF-nnn` | Chủ sở hữu contract | Contract tồn tại | Versioning policy | `FM` khi hỏng | Đứt |
|---|---|---|---|---|---|
### 7.2 Dữ liệu
| Thực thể | Số chủ sở hữu | Hợp lệ | Ghi chú |
|---|---|---|---|
| | 1 / **2** / 0 | | 🔴 nếu ≠ 1 |
### 7.3 Bảo mật
| `THR-nn` | Có biện pháp | Có cách kiểm chứng | Đứt |
|---|---|---|---|
### 7.4 Đường lỗi
| Phụ thuộc ngoài process *(từ `SAD`+`ICD`)* | Có `FM-nn` | Trả lời đủ 4 câu | Đứt |
|---|---|---|---|
## 8. Đối chiếu chéo với bộ BA
| Kiểm | Kết quả | Hành động |
|---|---|---|
| Mọi `NFR-nn` của BA có `QAS` tương ứng | / | |
| Mọi endpoint trong `API` của BA có `IF-nnn` | / | |
| Mọi `ROLE-nn` trong `RBAC` map xuống `SEC` §3.1 | / | |
| `BR-nnn` ép ràng buộc kiến trúc đã có `ADR` | / | |
## 9. ID trùng lặp
*Lỗi nghiêm trọng hơn mọi chỗ đứt — hai thứ khác nhau mang cùng một tên.*
| ID | Xuất hiện ở | Mức |
|---|---|---|
| | file A §… và file B §… | 🔴 |
## 10. Tham chiếu gãy
| Từ | Trỏ tới | Vấn đề |
|---|---|---|
| `SAD` §4.1 | `ADR-014` | Không tồn tại |
| `AGD` §3.1 | `ADR-002` | ADR đã `Superseded by ADR-011` |
## 11. Phát hiện — xếp theo mức
### 🔴 Chặn gate
| # | Phát hiện | File · mục | Hành động | Skill sửa | Chặn |
|---|---|---|---|---|---|
| 1 | | | | | AG2 |
### 🟠 Nợ — phải trả trước gate sau
| # | Phát hiện | File · mục | Hành động | Skill sửa |
|---|---|---|---|---|
### 🟡 Cải thiện
| # | Phát hiện | File · mục | Hành động |
|---|---|---|---|
## 12. Kết luận gate
```
AG2: 🔴 CHẶN / ✅ QUA — <lý do một dòng>
AG3: 🔴 CHẶN / ✅ QUA / — chưa tới
AG4: — chưa tới
```
**Việc gần nhất:** `<lệnh>`
## 13. Chấp nhận có ý thức
*Chỗ đứt được chấp nhận có ghi chép. Khác hoàn toàn với bỏ qua.*
| Chỗ đứt | Vì sao chấp nhận | Ai chấp nhận · ngày | Hạn xử lý | `DEC` |
|---|---|---|---|---|