This commit is contained in:
Leonard-ThindPad-P50
2026-09-08 10:26:21 +07:00
commit c81f249920
169 changed files with 38726 additions and 0 deletions

View File

@@ -0,0 +1,174 @@
# 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` |
|---|---|---|---|---|