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,147 @@
# ADL — ADR Ledger — <PROJECT>
| | |
|---|---|
| **Cập nhật** | YYYY-MM-DD |
| **Author** | <SA> (skill sa-conformance) |
| **Tổng số ADR** | |
| **Nguồn quét** | `02-architecture/adr/` |
> Sổ này là **mục lục**, không phải nơi chứa nội dung quyết định. Nội dung ở từng file ADR.
---
## 1. Tóm tắt
| Trạng thái | Số lượng |
|---|---|
| `Proposed` | |
| `Accepted` | |
| `Rejected` | |
| `Superseded` | |
| `Deprecated` | |
| Cảnh báo | Số lượng |
|---|---|
| `Proposed` quá 10 ngày | |
| Điểm radar ≥ 8 mà `Accepted` không có POC | |
| Nguồn (`QAS`/`ASR`) đã đổi sau khi ADR được ký | |
| Chuỗi supersede gãy | |
| **Hai ADR mâu thuẫn** | |
## 2. Mục lục
| ID | Quyết định | Chủ đề | Status | Ngày | Người quyết | Radar | POC | Nguồn | Supersedes | Superseded by |
|---|---|---|---|---|---|---|---|---|---|---|
| `ADR-001` | | cấu trúc | Accepted | | | 9 | POC-01 | `ASR-001` | — | — |
| `ADR-002` | | dữ liệu | Accepted | | | 7 | — | `QAS-004` | — | `ADR-011` |
**Chủ đề** *(dùng để rà mâu thuẫn — rà theo chủ đề, không theo số thứ tự)*: cấu trúc · dữ liệu ·
tích hợp · bảo mật · hạ tầng · frontend · vận hành
## 3. Theo chủ đề
*Đây là bảng dùng để tìm mâu thuẫn — kiểm tra khó nhất và đắt nhất khi bỏ sót.*
### Cấu trúc hệ thống
| `ADR` | Quyết định | Status | Có mâu thuẫn với |
|---|---|---|---|
### Dữ liệu
| `ADR` | Quyết định | Status | Có mâu thuẫn với |
|---|---|---|---|
### Tích hợp
| `ADR` | Quyết định | Status | Có mâu thuẫn với |
|---|---|---|---|
### Bảo mật
| `ADR` | Quyết định | Status | Có mâu thuẫn với |
|---|---|---|---|
### Hạ tầng & vận hành
| `ADR` | Quyết định | Status | Có mâu thuẫn với |
|---|---|---|---|
## 4. Năm kiểm tra
### 4.1 Chuỗi supersede
| `ADR` cũ | Ghi `Superseded by` | `ADR` mới | Ghi `Supersedes` ngược lại | Khớp |
|---|---|---|---|---|
| `ADR-002` | `ADR-011` | `ADR-011` | `ADR-002` | ✅ |
| `ADR-005` | `ADR-013` | `ADR-013` | *(trống)* | 🔴 gãy |
### 4.2 `Proposed` quá hạn
| `ADR` | Đề xuất ngày | Số ngày treo | Ai phải quyết | Đang chặn gì |
|---|---|---|---|---|
*Quá 10 ngày ⇒ có người đang chờ mà không ai biết. Đây là cảnh báo hay đúng nhất.*
### 4.3 Điểm radar ≥ 8 chưa có POC
| `ADR` | Radar | Status | POC | Vi phạm |
|---|---|---|---|---|
| | | Accepted | — | 🔴 `decision-radar.md` §6 |
*Quyết định điểm cao dựa trên suy đoán là quyết định sẽ phải làm lại.*
### 4.4 Nguồn đã đổi
| `ADR` | Dựa trên | Nguồn đó đã đổi | Quyết định còn đúng không |
|---|---|---|---|
| `ADR-007` | `QAS-004` (v1.0) | `QAS-004` sửa ở v1.1: 45→30 phút | ☐ cần xem lại |
### 4.5 Mâu thuẫn
| `ADR` A | `ADR` B | Cùng chủ đề | Mâu thuẫn ở đâu | Xử lý |
|---|---|---|---|---|
🔴 Hai `ADR` cùng `Accepted` quyết ngược nhau ⇒ team đang thi công theo hai hướng. Đây là phát
hiện đắt nhất của skill này. **Chặn gate.**
## 5. Điều kiện xét lại đã chạm ngưỡng
| `ADR` | Điều kiện (§7 của ADR) | Ngưỡng | Thực tế | Chạm | Hành động |
|---|---|---|---|---|---|
| `ADR-004` | thông lượng vượt … | | *(từ `CONF`)* | ☐ | |
## 6. ADR không có `FIT` bảo vệ
*Quyết định không kiểm chứng được sẽ bị vi phạm trong 6 tháng mà không ai biết (quy tắc `D8`).*
| `ADR` | Ràng buộc nó đặt ra | `FIT` | Nhãn `⚠️ Khuyến nghị` | Đứt |
|---|---|---|---|---|
## 7. Quyết định KHÔNG đủ tầm ADR — `DEC`
*Điểm radar 3–4. Ghi ở đây một dòng, không cần file riêng.*
| `DEC` | Quyết định | Ngày | Ai | Radar |
|---|---|---|---|---|
| `DEC-01` | | | | 4 |
## 8. Việc phải làm
| # | Việc | ADR liên quan | Chủ | Hạn | Mức |
|---|---|---|---|---|---|
| 1 | Nối lại chuỗi supersede `ADR-005` ↔ `ADR-013` | | | | 🟠 |
| 2 | | | | | |
## 9. Thống kê theo thời gian
*Nhịp ra quyết định nói lên tình trạng dự án.*
| Kỳ | ADR mới | Superseded | Ghi chú |
|---|---|---|---|
| 2026-Q3 | | | |
- **Nhiều ADR mới ở giai đoạn muộn** ⇒ GĐ2 làm chưa đủ, quyết định đang bị đẩy sang lúc thi công
- **Nhiều supersede trong thời gian ngắn** ⇒ quyết định đang được ký khi chưa đủ bằng chứng
- **Không có ADR nào trong 3 tháng** ⇒ hoặc dự án ổn định, hoặc quyết định đang xảy ra mà không ai ghi

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` |
|---|---|---|---|---|