# DTM — Decision Traceability Matrix — | | | |---|---| | **Cập nhật** | YYYY-MM-DD | | **Author** | (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 — AG3: 🔴 CHẶN / ✅ QUA / — chưa tới AG4: — chưa tới ``` **Việc gần nhất:** `` ## 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` | |---|---|---|---|---|