init git
This commit is contained in:
147
.claude/skills/sa-conformance/templates/adr-ledger.md
Normal file
147
.claude/skills/sa-conformance/templates/adr-ledger.md
Normal 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
|
||||
@@ -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` |
|
||||
|---|---|---|---|---|
|
||||
Reference in New Issue
Block a user