Files
sys-analysis-design/sa-output/e-commerce/00-index/DEC_e-commerce.md
Canhchimlac 343ad8bbbc save
2026-09-15 16:02:30 +07:00

94 lines
87 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.

# DEC — Sổ quyết định không đủ tầm ADR — e-commerce
| | |
|---|---|
| **Version** | 1.29 |
| **Date** | 2026-09-15 |
| **Author** | SA (qua skill sa-1-context, sa-2-architecture) |
| **Status** | 🟡 Draft — cập nhật liên tục qua các giai đoạn |
| **Approved by** | — *(sổ theo dõi, không cần baseline riêng)* |
| **Source** | `01-context/CTX_e-commerce_v1.0.md (v1.2 trong header)` §0, §3, §4, §7, §7.1 · `01-context/OPT_e-commerce_v1.0.md` §0, §1, §2, §9 · `01-context/TCO_e-commerce_v1.0.md` §0 · `01-context/ARISK_e-commerce_v1.0.md` §0 · `02-architecture/ASR_e-commerce_v1.0.md` §0 · `02-architecture/SAD_e-commerce_v1.0.md` v1.3 §0 · `02-architecture/adr/ADR-001…013_*.md` §0 · `02-architecture/ICD_e-commerce_v1.0.md` §0 · `02-architecture/FAIL_e-commerce_v1.0.md` v1.1 §0 · `02-architecture/DAT_e-commerce_v1.0.md` §0 · `02-architecture/SEC_e-commerce_v1.0.md` §0.1 · `02-architecture/INF_e-commerce_v1.0.md` §0 |
| **Scope** | Toàn dự án e-commerce (kiến trúc) |
| **Confidence** | 🟡 Sổ theo dõi — nội dung tham chiếu từ `CTX`/`OPT`/`TCO`/`ARISK` (các tài liệu đó là 🔴) |
## Change Log
| Version | Date | Người sửa | Thay đổi | ADR |
|---|---|---|---|---|
| 1.0 | 2026-09-10 | SA (qua skill sa-lifecycle) | Khởi tạo sổ DEC kiến trúc, khung rỗng | — |
| 1.1 | 2026-09-12 | SA (qua skill sa-1-context) | Thêm `DEC-01` (ngoại lệ gate GĐ1 SA chạy khi BA chưa qua G1) | — |
| 1.2 | 2026-09-12 | PO (uỷ quyền, Điều phối dự án) — tác vụ sign | Thêm `DEC-02` (chốt hướng trả lời `OQ-002`: dùng giả định "team MVP chuẩn" `Confidence` 🔴 cho ràng buộc Con người ở Bước 2); ghi nhận phê duyệt tạm §2 Driver của `CTX v1.0` (xem Change Log của `CTX`) | — |
| 1.3 | 2026-09-12 | SA (qua skill sa-1-context, hoạt động `constraints`) | Thêm `DEC-03` (tiếp tục ngoại lệ gate `DEC-01` sang Bước 2 — Ràng buộc; người dùng tái khẳng định muốn tiếp tục dù AG1/G1 chưa qua) | — |
| 1.4 | 2026-09-12 | SA (qua skill sa-1-context, hoạt động `as-is`) | Thêm `DEC-04` (đóng `OQ-009` — chấp nhận `SAD.md`/hồ sơ thầu làm điểm khởi đầu tham khảo cho Bước 4 `OPT`, có điều kiện); tiếp tục ngoại lệ gate `DEC-01`/`DEC-03` sang Bước 3 — Hiện trạng (AS-IS); người dùng tái khẳng định muốn tiếp tục dù AG1/G1 chưa qua | — |
| 1.5 | 2026-09-12 | SA (qua skill sa-1-context, hoạt động `options`) | Thêm `DEC-05` (tiếp tục ngoại lệ gate `DEC-01`/`DEC-03`/`DEC-04` sang Bước 4 — Phương án `OPT`; người dùng tái khẳng định muốn tiếp tục dù AG1/G1 chưa qua). `OPT_e-commerce_v1.0.md` tạo mới, khuyến nghị P2 có điều kiện, chưa PO/Tech Lead ký | — |
| 1.6 | 2026-09-12 | PO (uỷ quyền, Điều phối dự án) — tác vụ sign | Thêm `DEC-06` (duyệt từng phần `OPT_e-commerce_v1.0.md` v1.0: chấp nhận bộ tiêu chí/trọng số mặc định (đóng `ASM-09`), bảng chấm điểm, phương án bị loại P3/P4, khuyến nghị P2 có điều kiện; **chọn P2** làm nền cho Bước 5/GĐ2 với điều kiện `OQ-010`/`OQ-012`). Đóng `OQ-011` trong sổ `00-index/OQ_e-commerce.md`. `OPT` giữ Status Draft, Tech Lead chưa ký, `Confidence` giữ 🔴 | — |
| 1.7 | 2026-09-12 | SA (qua skill sa-1-context, hoạt động `cost-risk`) | Thêm `DEC-07` (tiếp tục ngoại lệ gate sang Bước 5, phần `TCO`; người dùng tái khẳng định muốn tiếp tục) và `DEC-08` (tiếp tục ngoại lệ gate sang Bước 5, phần `ARISK`). `TCO_e-commerce_v1.0.md` và `ARISK_e-commerce_v1.0.md` tạo mới — GĐ1 SA nay đủ 4 artifact (`CTX`/`OPT`/`TCO`/`ARISK`) để audit AG1, dù tự chấm từng file vẫn cho thấy AG1 chưa đủ điều kiện ký chính thức (nhiều `OQ` còn mở) | `DEC-07`, `DEC-08` |
| 1.8 | 2026-09-12 | PO (uỷ quyền, Điều phối dự án) — tác vụ sign | Thêm `DEC-09` (duyệt từng phần `TCO_e-commerce_v1.0.md` v1.1 sau khi sửa lỗi chép số §1 P2-B: chấp nhận cấu trúc 4 nhóm chi phí, 2 kịch bản tải A/B, kết luận "P2 rẻ hơn P1"; đơn giá AWS/tỷ giá/FTE Ops/5 khoản non-labor chưa xác nhận) và `DEC-10` (duyệt từng phần `ARISK_e-commerce_v1.0.md` v1.0: chấp nhận 10 rủi ro và kế hoạch `POC-01`/`POC-02`; POC chưa chạy). Cả hai giữ Status Draft, `Confidence` 🔴, `OQ-004` mở, AG1 chưa ký. | `DEC-09`, `DEC-10` |
| 1.9 | 2026-09-14 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `qas`) | Thêm `DEC-11` (bắt đầu `sa-2-architecture` hoạt động `QAS` dù AG1 chưa có chữ ký PO/Tech Lead thật và `POC-01`/`POC-02` chưa chạy — tiếp nối `DEC-01…10`, người dùng tái khẳng định muốn tiếp tục). `QAS_e-commerce_v1.0.md` tạo mới — 14 `QAS` lượng hoá từ `NFR-01…08` (SAD) và `NFR-PERF/SEC/AVL` (BA), `Confidence` 🔴 toàn bộ. Không tạo `ASR`/`SAD`/`ADR` ở lượt này theo yêu cầu điều phối. | `DEC-11` |
| 1.10 | 2026-09-14 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-12` (duyệt từng phần `QAS_e-commerce_v1.0.md` v1.0: chấp nhận 14 `QAS` đủ 6 phần và cách đo; chấp nhận TẠM các số SA đề xuất `QAS-003/004/007/014`, `OQ-018…021` giữ mở; chốt điều kiện diễn tập DR `QAS-008` phải thực hiện trước khi ký AG2, cập nhật `OQ-022`). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-12` |
| 1.11 | 2026-09-14 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `asr`) | Thêm `DEC-13` (tiếp tục `sa-2-architecture` hoạt động `ASR` dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…12`). `ASR_e-commerce_v1.0.md` tạo mới — 15 `ASR`, 12/15 có `ADR` ứng viên (radar 4–9), `ADR-001` (kiểu kiến trúc tổng thể P2) vẫn nợ từ `DEC-06`. Thêm `OQ-024/025`, `ASM-19…21`. Không viết `ADR` nào. | `DEC-13` |
| 1.12 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-14` (duyệt từng phần `ASR_e-commerce_v1.0.md`: chấp nhận 15 `ASR-001…015` và 12 `ADR` ứng viên `ADR-001…012` với radar ước lượng; `ADR-005/006/009` (radar ≥8) chỉ `Accepted` sau `POC-01`/`POC-02`/diễn tập DR. Chốt TẠM `OQ-024` (MFA Admin = TOTP app, `ASM-20`) và `OQ-025` (không dịch nội dung seller ở MVP, `ASM-21`) — cả hai giữ nguyên mở). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-14` |
| 1.13 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `sad`) | Thêm `DEC-15` (tiếp tục `sa-2-architecture` hoạt động `SAD` dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…14`). `SAD_e-commerce_v1.0.md` tạo mới — C4 Context/Container/Component (Cart&Order), deployment view AWS `ap-southeast-1` đối chiếu `TCO §3.2` (1 điểm lệch mức chi tiết phát hiện, ghi `OQ-026`, không tự đổi số `TCO`), 15 `CMP` (ma trận `ASR×CMP` đủ 15/15), 22 `IF-nn` ứng viên cho `ICD`, đánh dấu 12 chỗ chờ `ADR-001…012` (không viết `ADR`). Thêm `OQ-026/027`, `ASM-22/23`. | `DEC-15` |
| 1.14 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-16` (duyệt từng phần `SAD_e-commerce_v1.0.md` bản v1.0: chấp nhận C4 Context/Container/Component, deployment view, bảng `CMP-01…15`, ma trận `ASR→CMP` đủ 15/15, 22 `IF-nn` ứng viên, 12 chỗ chờ `ADR`. Chốt TẠM `OQ-026` (2 ECS Fargate service riêng theo Nhóm Giao dịch/Nhóm Hỗ trợ, `TCO §3.2` giữ nguyên tới khi hoạt động `inf` xác nhận, `ASM-23`) và `OQ-027` (Identity & Access thuộc Nhóm Giao dịch, `ASM-22`) — cả hai **giữ nguyên mở**). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-16` |
| 1.15 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `adr`) | Thêm `DEC-17` (tiếp tục `sa-2-architecture` hoạt động `adr` cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…16`). Viết đủ 12 `ADR-001…012` trong `02-architecture/adr/` theo danh sách ứng viên đã duyệt từng phần ở `ASR §B2`/`DEC-14` và `SAD §8`/`DEC-16` — không đổi số thứ tự, không đổi radar ước lượng. **Tất cả 12 ADR ở Status `Proposed`** — không ADR nào `Accepted` vì chưa có chữ ký thật (Tech Lead + Security + Ops/SRE); `ADR-005`/`ADR-006`/`ADR-009` (radar ≥8) ghi rõ điều kiện `Accepted` là `POC-01`/`POC-02`/diễn tập DR PASS, hiện chưa chạy; `ADR-008` (PII) ghi phủ quyết Security/Legal, chặn hoàn toàn tới khi có người (`OQ-007`). Cập nhật `ADL_e-commerce.md` (12 ADR `Proposed`, radar, nguồn, `ASR` phục vụ, §7/§8/§9). Cập nhật `SAD_e-commerce_v1.0.md` §8 lên v1.1 (chỉ link ADR đã viết vào bảng đã có, không đổi nội dung chuyên môn khác). `DEC-06` (chọn P2, GĐ1) được trả nợ bằng `ADR-001` — không còn "nợ" treo ở `DTM`/`ADL`. Không sửa `SAD`/`ASR`/`QAS` phần nội dung đã duyệt từng phần khác. `Confidence` 🔴 toàn bộ 12 ADR. | `DEC-17`, `ADR-001…012` |
| 1.16 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `icd`) | Thêm `DEC-18` (tiếp tục `sa-2-architecture` hoạt động `icd` cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…17`). `ICD_e-commerce_v1.0.md` tạo mới — catalog 17/17 `IF-nn` truy được từ `SAD §4` (chênh lệch "22" ghi ở `OQ-029`), chi tiết đầy đủ `IF-002` (4 endpoint Cart & Checkout) và `IF-005/006/007/008/009/015/021/022`. Xác nhận/điều chỉnh `API_US002-003_v1.0.md` của BA tại §5. Thêm `OQ-028…033`, `ASM-24…26`. *(Ghi bổ sung: Change Log này bị thiếu ở lượt chạy trước, bổ sung lại khi sign `DEC-19` để không đứt mạch version — không đổi nội dung `ICD` đã ghi.)* | `DEC-18` |
| 1.17 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-19` (duyệt từng phần `ICD_e-commerce_v1.0.md` bản v1.0: chấp nhận catalog 17 `IF-nn`, chi tiết `IF-002` (4 endpoint Cart & Checkout), kết luận xác nhận/điều chỉnh `API_US002-003` của BA. Chấp nhận TẠM `ASM-24/25/26` và hướng denormalize `sellerName` (`OQ-033`) — `OQ-028…033` (SA) giữ nguyên mở). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-19` |
| 1.18 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `sad`, sửa lỗi) | Thêm `DEC-20` (tiếp tục ngoại lệ gate cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…19` — để sửa lỗi nhất quán `SAD` theo phát hiện của `ICD`, `OQ-028`/`OQ-029`, theo yêu cầu người duyệt 2026-09-15). `SAD_e-commerce_v1.0.md` lên v1.2: (1) `IF-021` sửa mọi mô tả thành cross-network REST (không còn "internal") — legend §4, footnote §4.1, bảng §6.1/§6.3, bổ sung cạnh mạng còn thiếu ở §7; rà `IF-022` theo cùng nguyên tắc (làm rõ cũng cross-network, không đổi loại vì trước đó chưa có nhãn); `IF-005`/`IF-006` không đổi. (2) Đếm lại `IF-nn`: kết luận "22" là đếm nhầm, đúng 17 ID, không bỏ sót interface — sửa "22"→"17" ở header/Change Log/Tự chấm. Đóng `OQ-029` trong sổ `00-index/OQ_e-commerce.md`; `OQ-028` giữ nguyên mở. Đây là sửa lỗi tài liệu, không phải quyết định kiến trúc — không cần `ADR` mới, không sửa §8/`ASR`/`QAS`/`ADR`/`ICD`. `Confidence` giữ 🔴; Status giữ Draft; §4/§6/§7 v1.2 chưa được ký lại. | `DEC-20` |
| 1.19 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `fail`) | Thêm `DEC-21` (tiếp tục `sa-2-architecture` hoạt động 8 — `FAIL` — cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…20`). `FAIL_e-commerce_v1.0.md` tạo mới — bảng 13 phụ thuộc vượt ranh giới process (`FM-01…13`, theo `SAD` v1.2 §6.3: VNPay, Momo, GHN, GHTK, Email/SMS, RDS chính, RDS Payment, Redis, SQS FIFO, EventBridge, `IF-006`, `IF-021` ưu tiên cao nhất, `IF-022`) đủ timeout/retry/idempotent/hết-retry-thì-sao/người dùng thấy gì; đủ 4 câu hỏi `D6` cho từng phụ thuộc; ngân sách timeout cộng dồn đường găng checkout (**phát hiện vượt ngân sách `QAS-002` ~7%** ngay cả sau khi siết timeout VNPay/Momo xuống 1.500ms — trình 2 lựa chọn kèm hệ quả bằng số, ghi `OQ-034`); circuit breaker/backoff/bulkhead cho toàn hệ thống; suy giảm có kiểm soát (Promotion lỗi — đề xuất mặc định không tự quyết, nối `OQ-017` BA; COD khi VNPay/Momo lỗi; GHN↔GHTK fallback chéo; phát hiện thiếu cache nội dung giỏ hàng cho fallback RDS chậm); 6 kịch bản hỏng toàn hệ thống; dữ liệu trong lúc lỗi; ánh xạ mã lỗi theo `AC_US-002/003`/`ICD §1` (3 mã lỗi mới đề xuất cho US-004 Checkout, chưa có trong `SRS` BA); đề xuất `FIT-16…22` (chaos test) cho GĐ3. Thêm `OQ-034…040`, `ASM-27…33`. Không sửa `SAD`/`ICD`/`ADR` đã có. `Confidence` 🔴 toàn bộ. | `DEC-21` |
| 1.20 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-22` (duyệt từng phần `FAIL_e-commerce_v1.0.md` bản v1.0: chấp nhận bảng 13 phụ thuộc, bảng mã lỗi §5, `FIT-16…22`; chấp nhận TẠM ngưỡng circuit breaker/`OQ-035`, DLQ 14 ngày + cảnh báo lag >5 phút/`OQ-036`, bulkhead chờ `POC-02`/`OQ-037`, timeout RDS/Redis `ASM-27`/`ASM-28` — tất cả giữ mở. **Chọn Lựa chọn B cho `OQ-034`** (bất đồng bộ hoá bước khởi tạo thanh toán), yêu cầu SA viết `ADR-013` (`Proposed`) và sửa `SAD §6.1`/`FAIL §1.2` ở lượt kế tiếp; `OQ-034` chuyển "đã chọn hướng B, chờ `ADR-013` + Tech Lead/PO thật xác nhận", giữ mở). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-22` |
| 1.21 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `adr`, phạm vi hẹp) | Thêm `DEC-23` (viết `ADR-013` — bất đồng bộ hoá bước khởi tạo thanh toán, hiện thực hoá Lựa chọn B của `OQ-034`/`DEC-22` — và sửa nhất quán tối thiểu `SAD §6.1`/`§8` lên v1.3 + `FAIL §1.2` lên v1.1). Không viết ADR khác, không sửa 12 ADR cũ. | `DEC-23` |
| 1.22 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `dat`) | Thêm `DEC-24` (tiếp tục `sa-2-architecture` hoạt động 5 — `DAT` — cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…23`). `DAT_e-commerce_v1.0.md` tạo mới — bảng ownership `D7` cho toàn bộ 15 `CMP` (schema-per-module theo `ADR-006`, RDS Payment riêng theo `ADR-002`); mô hình `Order`/`OrderSeller`/`OrderItem` chi tiết theo `ADR-003`, bổ sung `order.payment_init_status` theo `ADR-013` và `cart_item.seller_name_snapshot`/`unit_price_snapshot` theo `ICD` (`OQ-033`); phân loại PII/Payment/nghiệp vụ + đề xuất retention (chờ Legal, `OQ-007`) và whitelist chia sẻ seller theo `ADR-008`; chiến lược đọc/ghi (index, read replica chỉ Catalog, đánh giá cache `Cart` cho `OQ-040`); đề xuất Transactional Outbox pattern cho khoảng trống `FAIL §7` (ADR ứng viên radar ~6, chưa viết — `OQ-044`) và idempotency store cho `POST /v1/checkout`; backup/PITR đối chiếu `QAS-008`/`ADR-009`; migration/versioning schema (đề xuất Flyway, `OQ-045`); dữ liệu đối soát (`ReconciliationLog`) và đề xuất ngưỡng job dọn `Order` kẹt cho `OQ-042`. Đối chiếu `docs/sections/05-thiet-ke-du-lieu.md` (P1) — phát hiện P2 thiếu `CMP` Audit & Compliance riêng (`OQ-047`). Thêm `OQ-043…047`, cập nhật `OQ-007/040/042`, `ASM-35…38`. Không sửa `SAD`/`ICD`/`FAIL`/`ADR`. `Confidence` 🔴 toàn bộ. | `DEC-24` |
| 1.23 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-25` (duyệt từng phần `DAT_e-commerce_v1.0.md` v1.0: chấp nhận ownership 15 `CMP`, mô hình `Order`/`OrderSeller`/`Payment`, idempotency, backup/PITR; chấp nhận TẠM `ASM-35`, Transactional Outbox cho `OQ-044` (yêu cầu `ADR-014` ở lượt `adr` kế), phương án (a) audit cho `OQ-047`, ngưỡng job quét 5 phút cho `OQ-042`, polling cho `OQ-041` — cả bốn giữ mở; `OQ-045/046` không đổi. §5 PII/retention/whitelist CHƯA CÓ HIỆU LỰC, chờ Legal/Security (`OQ-007`)). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Security/Ops chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-25` |
| 1.24 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-26` (review nội dung `adr/ADR-013_bat-dong-bo-hoa-khoi-tao-thanh-toan.md`: chấp nhận nội dung §3 làm cơ sở thiết kế tiếp; **KHÔNG** đề nghị `Accepted` — giữ `Proposed` vì chưa có chữ ký thật Tech Lead + PO và BA chưa viết `SRS`/`AC` US-004. Ghi dòng "Reviewed (Proposed giữ nguyên)" ở `ADR-013 §9`, cùng mẫu 12 ADR trước). Ký thay Tech Lead theo ngoại lệ `DEC-01`; `Confidence` 🔴; `AG2` chưa ký. | `DEC-26` |
| 1.25 | 2026-09-15 | SA (qua skill sa-2-architecture, chế độ `go`, hoạt động `sec`) | Thêm `DEC-27` (tiếp tục `sa-2-architecture` hoạt động 6 — `SEC` — cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…26`). `SEC_e-commerce_v1.0.md` tạo mới — threat model STRIDE cho 8 ranh giới tin cậy (`THR-01…31`), mô hình authn (Guest/Customer/Seller/Admin + đề xuất mới service-to-service, `OQ-050`), mô hình authz (map đủ `ROLE-01/02` của `RBAC_CartCheckout`, fail-closed `E-CART-0007`), phân loại/mã hoá/masking PII (toàn bộ đánh dấu "đề xuất chờ Legal/Security", `OQ-007`), PCI-DSS SAQ A (xác nhận `ADR-002`, phát hiện khoảng trống xác nhận hình thức tích hợp redirect với đối tác — `OQ-048`), webhook signature/anti-replay (chưa có tài liệu đối tác, không bịa — `OQ-049`, `ARISK-03/04`), đề xuất số rate-limit Guest cart/checkout/login (`OQ-023` trả lời có số cụ thể, không tự quyết), secret management, audit log theo phương án (a) đã chốt (`OQ-047`), chuỗi cung ứng (scan/pentest/ASV). Đề xuất `FIT-29…33` cho GĐ3. Thêm `OQ-048…053`, cập nhật `OQ-007/023/024/047`, `ASM-39…41`. Không sửa `SAD`/`ICD`/`DAT`/`FAIL`/`ADR` đã có; không viết `ADR` mới (chỉ đề xuất 1 ứng viên — service-to-service authn — cho hoạt động `adr` kế tiếp). `Confidence` 🔴 toàn bộ. **Phát hiện quan trọng nhất:** Security **chưa có người** (`OQ-007`) — `SEC` chưa có hiệu lực phủ quyết AG2 cho bất kỳ nội dung nào của tài liệu này. | `DEC-27` |
| 1.26 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-28` (duyệt từng phần `SEC_e-commerce_v1.0.md` v1.0: ghi nhận nội dung 31 `THR` STRIDE, map `ROLE-01/02`, mô hình authn/authz đề xuất, SAQ A, đề xuất rate limit **30/10/10 req/phút** (`ASM-40`), quản lý secret/scanning, audit log theo phương án (a). Chốt TẠM `OQ-050`: chọn **PA-3** (service JWT ngắn hạn ký bởi Identity & Access) cho service-to-service authn — yêu cầu SA viết `ADR-015` (`Proposed`) ở lượt hoạt động `adr` kế tiếp cùng `ADR-014`; `OQ-050` giữ nguyên mở, chờ Security + Ops/SRE. **KHÔNG ký thay Security**: header `Approved by → Security` giữ `—`, `SEC` chưa có hiệu lực phủ quyết AG2 (`OQ-007`); mọi kết luận PII/residency/retention (§5, §8.2) là đề xuất chờ Legal/Security). Ký thay Tech Lead theo ngoại lệ `DEC-01`; Ops/SRE chưa ký; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-28` |
| 1.27 | 2026-09-15 | SA (qua skill `sa-2-architecture`, chế độ `go`, hoạt động `inf`) | Thêm `DEC-29` (tiếp tục `sa-2-architecture` hoạt động 7 — `INF` — cho e-commerce dù AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…28`). `INF_e-commerce_v1.0.md` tạo mới — topology AWS `ap-southeast-1` (VPC/2 AZ/subnet, ALB+WAF, 2 ECS Fargate Nhóm Giao dịch/Nhóm Hỗ trợ + Payment tách biệt, RDS chính Multi-AZ + RDS Payment, Redis, SQS FIFO+EventBridge+DLQ, S3/CloudFront, Secrets Manager/KMS, NAT), đối chiếu từng dòng với `TCO §3.2` (khớp toàn bộ trừ 1 điểm bản chất — cross-region snapshot Payment trong `TCO` vs "không multi-region" của `ADR-009`, ghi `OQ-054`, không tự sửa `TCO`/`ADR`); đề xuất split ECS task GD/HT (A: 2/2, B: 6/4, khớp tổng `TCO`, `OQ-055`); HA (auto-scaling A→B theo `QAS-009`, phát hiện SPOF ElastiCache kịch bản A không có replica, `OQ-058`); DR (RPO≤15’/RTO≤1h theo `QAS-008`/`ADR-009`, backup/PITR, **kế hoạch diễn tập DR 3 kịch bản** — mất AZ/mất RDS primary/mất Redis — kèm tiêu chí PASS/FAIL đo thật, đề xuất hạn trước AG2, `OQ-022`/`OQ-056` ngày thật chờ Ops/SRE); observability (alert ≤1 phút nhóm giao dịch cốt lõi theo `QAS-013`, DLQ 14 ngày + alert lag >5 phút theo `OQ-036`/`DEC-22`, error budget 43 phút/tháng loại trừ bảo trì ≤2h theo `OQ-020`, on-call theo `CON-08`+`OQ-008`); CI/CD (pipeline build→test→SAST→SCA(Trivy/Snyk)→migration→deploy, blue-green cho 3 service, migration schema Flyway theo `OQ-045`); network/SG + egress đối tác ngoài (`OQ-057` IP allowlist); giải quyết khoảng trống service discovery GD↔HT của `SAD §7`/`OQ-028` bằng AWS Cloud Map/ECS Service Connect (ghi `DEC` mức thấp, không `ADR`); IaC (đề xuất Terraform) + `FIT-34…38` ứng viên GĐ3. Đề xuất 2 `ADR` ứng viên mới cho hoạt động `adr` kế tiếp (`ADR-016` chiến lược triển khai blue-green, `ADR-017` công cụ IaC) — **không viết `ADR` ở lượt này**. Thêm `OQ-054…063`, `ASM-42…46`. Không sửa `SAD`/`ICD`/`DAT`/`SEC`/`FAIL`/`ADR` đã có. `Confidence` 🔴 toàn bộ. | `DEC-29` |
| 1.28 | 2026-09-15 | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) — tác vụ sign | Thêm `DEC-30` (duyệt từng phần `INF_e-commerce_v1.0.md` v1.0: chấp nhận topology AWS `ap-southeast-1`, bảng đối chiếu `INF↔TCO` §10, HA/auto-scaling split ECS GD/HT A 2/2 – B 6/4 (`ASM-42`, `OQ-055` giữ mở), kế hoạch diễn tập DR 3 kịch bản (`OQ-022`/`OQ-056`, ngày thật chờ Ops/SRE — điều kiện AG2), observability, CI/CD blue-green (`ADR-016` ứng viên), network/egress, IaC Terraform (`ADR-017` ứng viên). Chốt TẠM `OQ-058`: giữ `TCO`, KHÔNG thêm replica Redis ở kịch bản A, chấp nhận SPOF với fail-closed theo `FAIL` — `OQ-058` giữ nguyên mở, chờ PO. Đồng ý viết `ADR-016`/`ADR-017` (`Proposed`) cùng `ADR-014`/`ADR-015` ở lượt `adr` kế tiếp. `OQ-054` giữ nguyên mở. **KHÔNG ký thay Ops/SRE**: header `Approved by → Ops/SRE` giữ `—`. Security chưa ký; Ký thay Tech Lead theo ngoại lệ `DEC-01`; `OQ-004` mở; `Confidence` giữ 🔴; Status giữ Draft; AG2 chưa ký. | `DEC-30` |
| 1.29 | 2026-09-15 | SA (qua skill `sa-2-architecture`, chế độ `go`, hoạt động `adr`) | Thêm `DEC-31` (viết 4 `ADR` còn nợ cho e-commerce trong khi AG1 chưa ký thật và AG2 chưa tới hạn — tiếp nối `DEC-01…30`). Viết `ADR-014` (Transactional Outbox — hiện thực hoá hướng đã chọn TẠM ở `DAT §4.1`/`OQ-044`/`DEC-25`, radar 6/10), `ADR-015` (Service JWT ngắn hạn service-to-service — hiện thực hoá PA-3 đã chọn TẠM ở `SEC §2.4`/`OQ-050`/`DEC-28`, radar 5/10, **chặn cứng `Accepted` bởi `OQ-007` — Security chưa có người**), `ADR-016` (Blue-green qua AWS CodeDeploy cho 3 dịch vụ ECS — hiện thực hoá đề xuất `INF §7.2`/`DEC-30`, radar 6/10), `ADR-017` (IaC Terraform — hiện thực hoá đề xuất `INF §11`/`DEC-30`, radar 7/10) trong `02-architecture/adr/`. **Cả 4 ADR giữ Status `Proposed`** — không ADR nào `Accepted` (chưa có chữ ký thật Tech Lead/Security/Ops-SRE; không cái nào đạt radar ≥8 nên không bắt buộc POC, nhưng mỗi ADR đều ghi rõ điều kiện `Accepted` riêng ở §3). Link 4 `ADR` này vào `DAT_e-commerce_v1.0.md` (v1.1, §4.1), `SEC_e-commerce_v1.0.md` (v1.1, §2.4/§4 TB3-TB4), `INF_e-commerce_v1.0.md` (v1.1, §7.2/§11/§13) — **chỉ thay "ứng viên"/"chưa viết" bằng đường dẫn thật, không đổi nội dung chuyên môn khác** của ba tài liệu đó, mỗi file bump `+0.1` kèm Change Log "chỉ link ADR, không đổi nội dung". Cập nhật `ADL_e-commerce.md` (17 ADR, tất cả `Proposed`) và `DTM_e-commerce.md` (`ASR-004`/`ASR-005` → thêm `ADR-014`; `ASR-007` → thêm `ADR-015`; `QAS-007` → `ADR-016`; ghi nhận `ADR-017` không có `ASR`/`QAS` nguồn trực tiếp, hợp lệ vì gắn `CON-05`/`D9`). Không sửa 13 `ADR` cũ, không sửa nội dung `SAD`/`ASR`/`QAS`/`ICD`/`FAIL`. `Confidence` 🔴 toàn bộ 4 ADR mới. | `DEC-31`, `ADR-014…017` |
---
## Quyết định đã chốt (radar 3–4, không đủ tầm ADR)
| ID | Quyết định | Người quyết | Ngày | Radar | Ảnh hưởng |
|---|---|---|---|---|---|
| DEC-01 (SA) | Chạy `sa-1-context` (hoạt động Driver) cho e-commerce trong khi BA chưa ký G1 chính thức (`BRIEF_CartCheckout` Draft, `OQ-001`/`OQ-007` BA mở) và không có gate SA nào trước GĐ1 để chờ — tham chiếu mô hình ngoại lệ `DEC-02..07` của bộ BA (dự án chạy thử). Toàn bộ `DRV` giữ `Confidence` 🔴 tới khi BA ký G1 thật. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~4 (chi phí đảo ngược thấp · toàn bộ GĐ1 SA · không chạm `QAS` cụ thể · không ràng buộc dài hạn · đã có tiền lệ) | `CTX_e-commerce_v1.0.md` (toàn bộ), `OQ-001`, `OQ-004` |
| DEC-02 (SA) | Trả lời `OQ-002` (ràng buộc Con người chưa có thông tin số đội/số người/kỹ năng): dùng giả định mặc định "team MVP chuẩn" (quy mô/kỹ năng đội hình tối thiểu đủ vận hành một MVP, chưa xác nhận số thật) làm đầu vào tạm cho `CON` nhóm Con người ở Bước 2 của `sa-1-context`. `Confidence` của giả định này là 🔴; giả định thật (`ASM-nn`) sẽ được lập trong `CTX` §5/§3 khi Bước 2 chạy, và phải được thay bằng số thật khi PM/Tech Lead xác nhận (`OQ-002` đóng nhưng nội dung chưa "xác nhận", chỉ là "chọn giả định tạm để không nghẽn tiến độ"). | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~4–5 (ảnh hưởng ranh giới service GĐ2 nếu team thực tế khác đáng kể · chi phí đảo ngược trung bình nếu phải vẽ lại ranh giới domain · chưa chạm `QAS` cụ thể · có tiền lệ dùng giả định mặc định ở dự án chạy thử) | `CTX_e-commerce_v1.0.md` §7 `OQ-002`, Bước 2 (`CON`) sắp tới |
| DEC-03 (SA) | Tiếp tục chạy `sa-1-context` Bước 2 (Ràng buộc — `CON-nn`, đủ 6 nhóm) và bổ sung `ASM-nn` cấp `CTX` cho dự án e-commerce trong khi BA **vẫn chưa** qua G1 chính thức và AG1 (gate của chính GĐ1 SA) vẫn chưa từng chạy — tiếp nối `DEC-01`. Người điều phối dự án đã được cảnh báo lại về việc gate trước chưa `✅ Baselined` và **tái khẳng định muốn tiếp tục**. Toàn bộ `CON`/`ASM` mới thêm giữ `Confidence` 🔴; phần lớn giá trị "Cứng/Mềm" của `CON` ghi "Chưa xác định" vì nguồn duy nhất là ước lượng hồ sơ thầu (`e-commerce/bid/`, Draft, chưa hợp đồng), không phải số PO đã duyệt. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (chi phí đảo ngược thấp — chỉ là nội dung `CON`/`ASM`, sửa lại khi có số thật không tốn nhiều · bán kính ảnh hưởng: toàn bộ `OPT`/`TCO` ở các Bước 4–5 kế tiếp phụ thuộc vào `CON` này · chưa chạm `QAS` cụ thể · không ràng buộc dài hạn (là ngoại lệ tạm thời, tiếp nối tiền lệ `DEC-01`) · không tranh cãi mới, đã có tiền lệ) | `CTX_e-commerce_v1.0.md (v1.1 trong header)` §0, §3, `OQ-005`…`OQ-009` |
| DEC-04 (SA) | (1) Tiếp tục chạy `sa-1-context` Bước 3 (Hiện trạng — AS-IS, §4) cho e-commerce trong khi BA **vẫn chưa** qua G1 và AG1 vẫn chưa từng chạy — tiếp nối `DEC-01`/`DEC-03`; người dùng tái khẳng định muốn tiếp tục. (2) Trả lời và đóng `OQ-009`: chấp nhận dùng `SAD.md` v0.2 (approved nội bộ nhà thầu, KHÔNG phải kiến trúc đang chạy) và hồ sơ thầu làm **điểm khởi đầu tham khảo** cho một phương án ở Bước 4 (`OPT`), với điều kiện bắt buộc Bước 4 vẫn phải dựng và chấm điểm ≥1 phương án độc lập khác — không mặc định `SAD.md` là phương án thắng sẵn (tránh bẫy "một phương án duy nhất", `GUIDE.md`). | Điều phối dự án (đại diện PO, dự án chạy thử) — riêng phần (2) là ghi chú điều phối, không phải PO/Tech Lead ký trực tiếp qua tác vụ `sign` | 2026-09-12 | ~3–4 cho (1) (giống `DEC-03`, ngoại lệ gate tạm thời, tiếp nối tiền lệ); ~4–5 cho (2) (ảnh hưởng cách tổ chức toàn bộ Bước 4 `OPT` · chi phí đảo ngược trung bình nếu phải bỏ neo `SAD.md` sau này và dựng lại từ đầu · chưa chạm `QAS` cụ thể · có điều kiện ràng buộc rõ ràng đi kèm (bắt buộc ≥1 phương án độc lập) nên giảm rủi ro thiên vị) | `CTX_e-commerce_v1.0.md (v1.2 trong header)` §0, §4, §7, §7.1, `OQ-009` (đóng) |
| DEC-05 (SA) | Tiếp tục chạy `sa-1-context` Bước 4 (Phương án — `OPT`) cho e-commerce trong khi BA **vẫn chưa** qua G1 và AG1 vẫn chưa từng chạy — tiếp nối `DEC-01`/`DEC-03`/`DEC-04`; người dùng tái khẳng định muốn tiếp tục. `OPT_e-commerce_v1.0.md` tạo mới: 3 phương án chấm điểm (P0, P1 theo `SAD.md`/hồ sơ thầu, P2 modular monolith + managed AWS — đối trọng độc lập) + 2 phương án bị loại (P3 mua/tích hợp nền tảng sẵn có, P4 serverless-first); khuyến nghị P2 có điều kiện, chưa PO/Tech Lead ký. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (chi phí đảo ngược thấp — nội dung `OPT` sửa lại khi có số thật không tốn nhiều · bán kính ảnh hưởng: quyết định kiến trúc GĐ2 phụ thuộc phương án chọn, nhưng việc ghi tài liệu dưới ngoại lệ thì nhỏ · chưa chạm `QAS` cụ thể (`QAS` chưa tồn tại) · không ràng buộc dài hạn (ngoại lệ tạm thời) · không tranh cãi mới, tiếp nối tiền lệ) | `OPT_e-commerce_v1.0.md` §0, `OQ-010…012` |
| DEC-06 (SA) | PO (uỷ quyền, Điều phối dự án) duyệt **từng phần** `OPT_e-commerce_v1.0.md` bản v1.0: chấp nhận bộ tiêu chí và trọng số mặc định (đóng `ASM-09`), bảng chấm điểm, hai phương án bị loại (P3, P4), và khuyến nghị P2 có điều kiện. **Chọn P2** (modular monolith + managed AWS, tách riêng Payment Service) làm nền cho Bước 5 (`TCO`/`ARISK`) và GĐ2, với điều kiện: (1) `OQ-010` — Tech Lead xác nhận đội thi công thật (không phải đề xuất hồ sơ thầu); (2) POC đo throughput SQS/EventBridge (`ASM-07`) ghi vào `ARISK` kèm kế hoạch ở Bước 5, trước khi chốt `ADR` message backbone GĐ2 (`OQ-012`). Ký thay PO theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký PO/Tech Lead thật**; `OQ-004` giữ mở, Tech Lead chưa ký. `Confidence`/Status của `OPT` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG1 toàn phần. Đóng `OQ-011` bằng chính quyết định này. 🔴 **Lưu ý:** "kiểu kiến trúc tổng thể" là quyết định thuộc danh mục thường đạt ngưỡng `ADR` bắt buộc (`decision-radar.md §3`) — `DEC-06` chỉ ghi nhận **hướng đi tạm** để bắt đầu Bước 5/GĐ2 dưới ngoại lệ gate hiện có, **không thay thế** yêu cầu viết `ADR` chính thức khi GĐ2 (`sa-2-architecture`) chốt kiểu kiến trúc, và ADR đó vẫn phải qua đủ điều kiện `Accepted` (POC/bài đo nếu radar ≥ 8) độc lập với `DEC-06`. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~7 (chi phí đảo ngược cao hơn các `DEC` trước — đổi hướng kiến trúc tổng thể sau khi GĐ2 đã bắt đầu tốn > vài tuần · bán kính ảnh hưởng: toàn bộ GĐ2 (kiến trúc, ranh giới service, ADR) phụ thuộc trực tiếp · chưa chạm một `QAS` cụ thể đã tồn tại (GĐ1 chưa có `QAS`) nhưng ảnh hưởng gián tiếp toàn bộ chất lượng kiến trúc tương lai · ràng buộc trong khoảng GĐ2 cho tới khi có `ADR`/POC chính thức, không phải vĩnh viễn · chưa có tranh cãi mới — tiếp nối khuyến nghị SA). **Do thuộc danh mục "kiểu kiến trúc tổng thể" nên khuyến nghị nâng thành `ADR` chính thức ngay khi GĐ2 bắt đầu, không chỉ dừng ở `DEC-nn`** | `OPT_e-commerce_v1.0.md` (header, Change Log), `OQ-011` (đóng) |
| DEC-07 (SA) | Tiếp tục chạy `sa-1-context` Bước 5 (phần `TCO`) cho e-commerce trong khi BA vẫn chưa qua G1 và AG1 vẫn chưa từng chạy — tiếp nối `DEC-01/03/04/05`. `TCO_e-commerce_v1.0.md` tạo mới: chi phí 3 năm cho P2 (chính) và P1 (đối chiếu) theo 2 kịch bản tải, đơn giá AWS/tỷ giá gắn `ASM-11/12` (cần xác minh), 5 khoản non-labor chưa tính được (`NL-03/04/05/07/08`) chuyển thành `OQ-014…017`. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (giống `DEC-05`: chi phí đảo ngược thấp, chưa chạm `QAS` cụ thể, không ràng buộc dài hạn, tiếp nối tiền lệ) | `TCO_e-commerce_v1.0.md` (toàn bộ) |
| DEC-08 (SA) | Tiếp tục chạy `sa-1-context` Bước 5 (phần `ARISK`) cho e-commerce — tiếp nối `DEC-01/03/04/05/07`. `ARISK_e-commerce_v1.0.md` tạo mới: 10 rủi ro (`ARISK-01…10`), 2 kế hoạch POC bắt buộc (`POC-01` throughput SQS/EventBridge, `POC-02` RDS gộp tải) với tiêu chí pass/fail suy từ `DRV-04`, phải chạy xong trước `ADR` message backbone GĐ2. GĐ1 SA nay đủ 4 artifact để audit AG1. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (cùng lý lẽ `DEC-07`) | `ARISK_e-commerce_v1.0.md` (toàn bộ) |
| DEC-09 (SA) | PO (uỷ quyền, Điều phối dự án) duyệt **từng phần** `TCO_e-commerce_v1.0.md` bản v1.1 (sau khi sửa lỗi chép số §1 P2-B: "Vận hành/nhân sự (3 năm)" P2-B = 5.600 triệu, Tổng 3 năm P2-B = 13.977,5 triệu): chấp nhận cấu trúc 4 nhóm chi phí (hạ tầng AWS/license/vận hành/xây dựng một lần), 2 kịch bản tải A/B, và kết luận thứ tự tương đối **P2 rẻ hơn P1** ở cả hai kịch bản. **Chưa xác nhận**: đơn giá AWS (`ASM-11`), tỷ giá (`ASM-12`), số FTE vận hành (`ASM-14`), 5 khoản non-labor (`OQ-013…017`) — `Confidence` giữ 🔴. Ký thay PO theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký PO/Tech Lead thật**; `OQ-004` giữ mở, Tech Lead chưa ký. `TCO` giữ Status 🟡 Draft — duyệt từng phần không phải AG1 toàn phần. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (giống `DEC-07` — chi phí đảo ngược thấp, chưa chạm `QAS` cụ thể, không ràng buộc dài hạn, tiếp nối tiền lệ) | `TCO_e-commerce_v1.0.md` (header, Change Log) |
| DEC-10 (SA) | PO (uỷ quyền, Điều phối dự án) duyệt **từng phần** `ARISK_e-commerce_v1.0.md` bản v1.0: chấp nhận 10 rủi ro `ARISK-01…10` (chủ + biện pháp) và kế hoạch `POC-01` (SQS/EventBridge throughput) + `POC-02` (RDS gộp tải) với tiêu chí PASS/FAIL viết trước ở §6. **POC chưa chạy** — bắt buộc chạy xong trước khi chốt `ADR` message backbone GĐ2. Ký thay PO theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký PO/Tech Lead thật**; `OQ-004` giữ mở, Tech Lead/PM chưa ký. `ARISK` giữ Status 🟡 Draft, `Confidence` 🔴 — duyệt từng phần không phải AG1 toàn phần. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-12 | ~3–4 (cùng lý lẽ `DEC-09`; POC chưa chạy nên chưa thể nâng radar cho quyết định kiến trúc liên quan) | `ARISK_e-commerce_v1.0.md` (header, Change Log) |
| DEC-11 (SA) | Bắt đầu `sa-2-architecture` (hoạt động 1 — `QAS`) cho e-commerce dù AG1 (gate GĐ1 SA) chưa có chữ ký PO/Tech Lead thật (audit 2026-09-12: AG1 🟠 — 4 artifact GĐ1 duyệt từng phần bởi PO uỷ quyền, `Confidence` 🔴 toàn bộ; `POC-01`/`POC-02` chưa chạy; BA chưa ký G1 cho `BRIEF_CartCheckout`) — tiếp nối `DEC-01…10`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. Toàn bộ 14 `QAS` mới giữ `Confidence` 🔴 cho tới khi: (a) PO/Tech Lead ký AG1 thật; (b) `POC-01`/`POC-02` chạy xong; (c) các con số SA tự đề xuất (`QAS-003/004/007/014`) được PO/Tech Lead xác nhận qua `OQ-018…023`. Không tạo `ADR` riêng cho việc chạy dưới ngoại lệ (khác quyết định kiến trúc P2, vẫn cần `ADR` ở hoạt động `asr`/`adr` kế tiếp). | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-14 | ~4 (chi phí đảo ngược thấp — sửa `QAS` khi có số thật không tốn nhiều · bán kính ảnh hưởng: toàn bộ GĐ2 phụ thuộc `QAS` nhưng việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm `QAS` Must trực tiếp (đang tạo chính nó) nhưng chưa phải quyết định kiến trúc đã cam kết · không ràng buộc dài hạn (ngoại lệ tạm thời) · không tranh cãi mới, tiếp nối tiền lệ) | `QAS_e-commerce_v1.0.md` (toàn bộ), `OQ-018…023` |
| DEC-12 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `QAS_e-commerce_v1.0.md` bản v1.0: chấp nhận 14 `QAS-001…014` đủ 6 phần và cách đo (Phần A); chấp nhận **TẠM** các số SA tự đề xuất — `QAS-003` p95 ≤500ms, `QAS-004` p95 ≤300ms, `QAS-007` loại trừ bảo trì ≤2 giờ/tháng, `QAS-014` đối soát ≤15 phút — làm baseline tạm; **`OQ-018…021` giữ nguyên mở**, chờ PO/Tech Lead thật xác nhận số cuối cùng. Chốt thêm điều kiện mới: diễn tập DR (`QAS-008`) **phải thực hiện trước khi ký AG2** — cập nhật `OQ-022` thành điều kiện tiên quyết của AG2, cũng là input bắt buộc cho hoạt động `inf` khi tới lượt. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `QAS` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-14 | ~4 (giống `DEC-11` — chi phí đảo ngược thấp (sửa số khi có PO/Tech Lead thật không tốn nhiều) · bán kính ảnh hưởng: toàn bộ GĐ2 phụ thuộc `QAS` này nhưng bản thân việc ký thay/duyệt từng phần thì nhỏ · có chạm `QAS` Must trực tiếp (chính các `QAS` đang được duyệt) nhưng chưa phải cam kết thi công · không ràng buộc dài hạn (điều kiện AG2 có thể điều chỉnh khi Ops/SRE xác nhận lịch thật) · không tranh cãi mới, tiếp nối tiền lệ `DEC-06/09/10`) | `QAS_e-commerce_v1.0.md` (header, Change Log), `OQ-022` (cập nhật, không đóng) |
| DEC-13 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 2 — `ASR`) cho e-commerce dù AG1 chưa có chữ ký PO/Tech Lead thật và AG2 chưa tới hạn — tiếp nối `DEC-01…12`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `ASR_e-commerce_v1.0.md` tạo mới — 15 `ASR` chưng cất từ `DRV`/`CON`/`QAS`/`BR-CART`/`ROLE`, mỗi cái có nguồn, "vì sao định hình kiến trúc", và `ADR` ứng viên (12/15 có ứng viên, radar ước lượng 4–9; `ADR-001` kiểu kiến trúc tổng thể P2 vẫn là nợ từ `DEC-06`, chưa viết). Thêm `OQ-024/025`, `ASM-19…21`. Không viết `ADR` nào ở lượt này. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-14 | ~4 (chi phí đảo ngược thấp — chưng cất từ tài liệu đã có, sửa lại không tốn nhiều nếu nguồn đổi · bán kính ảnh hưởng: toàn bộ hoạt động `sad`/`adr` kế tiếp phụ thuộc nhưng việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm `QAS` Must trực tiếp (đang chưng cất từ chính các `QAS` Must) nhưng chưa phải quyết định kiến trúc đã cam kết · không ràng buộc dài hạn · không tranh cãi mới, tiếp nối tiền lệ `DEC-11/12`) | `ASR_e-commerce_v1.0.md` (toàn bộ), `OQ-024/025` |
| DEC-14 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `ASR_e-commerce_v1.0.md` bản v1.0: chấp nhận 15 `ASR-001…015` (14 `Must` + 1 `Should`) đủ nguồn/"vì sao định hình kiến trúc" và danh sách 12 `ADR` ứng viên (`ADR-001…012`, §B2) với radar ước lượng đã ghi kèm. Xác nhận **`ADR-005`/`ADR-006`/`ADR-009`** (radar ước lượng ≥8) **chỉ được chuyển `Accepted`** sau khi `POC-01` (SQS/EventBridge), `POC-02` (RDS gộp tải), và diễn tập DR (Ops/SRE) chạy xong — đúng `decision-radar.md §2`/§6, không ký tắt qua bước đo. Chốt **TẠM** `OQ-024` (phương thức MFA Admin = TOTP app, theo `ASM-20`) và `OQ-025` (không dịch nội dung seller tự nhập ở MVP, chỉ i18n UI hệ thống, theo `ASM-21`) làm hướng đi tạm cho `sad`/`sec` kế tiếp — **`OQ-024`/`OQ-025` giữ nguyên MỞ**, chờ Security/PO thật xác nhận, không coi là đã đóng. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `ASR` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~4 (giống `DEC-12` — chi phí đảo ngược thấp (sửa `ASR`/`ADR` ứng viên khi có PO/Tech Lead thật không tốn nhiều) · bán kính ảnh hưởng: toàn bộ hoạt động `sad`/`adr` kế tiếp phụ thuộc danh sách này nhưng bản thân việc ký thay/duyệt từng phần thì nhỏ · có chạm `QAS` Must trực tiếp (chính các `ASR` đang được duyệt, chưng cất từ `QAS` Must) nhưng chưa phải cam kết thi công (chưa có `ADR` nào `Accepted`) · không ràng buộc dài hạn (các `ADR` ứng viên vẫn `Proposed`, chưa `Accepted`) · không tranh cãi mới, tiếp nối tiền lệ `DEC-06/09/10/12`) | `ASR_e-commerce_v1.0.md` (header, Change Log), `OQ-024/025` (cập nhật, không đóng) |
| DEC-15 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 3 — `SAD`) cho e-commerce dù AG1 chưa có chữ ký PO/Tech Lead thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…14`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `SAD_e-commerce_v1.0.md` tạo mới — C4 Context (4 actor + 5 hệ ngoài), C4 Container (Mermaid, legend theo `D4`), C4 Component cho container "Nhóm Giao dịch" (Cart & Order), 2 sequence diagram (checkout, webhook+đối soát), deployment view AWS `ap-southeast-1` đối chiếu `TCO §3.2` (phát hiện 1 điểm lệch mức chi tiết giữa ranh giới 2 nhóm triển khai của `ASR-001`/`ASR-014` và cách `TCO` tính gộp compute — ghi `OQ-026`, không tự đổi số `TCO`), bảng `CMP-01…15` (ma trận `ASR-001…015` × `CMP` đủ 15/15, không `CMP` mồ côi), 22 `IF-nn` ứng viên cho `ICD` (hoạt động 4), thực thể dữ liệu sở hữu ứng viên cho `DAT` (hoạt động 5), phụ thuộc vượt ranh giới process ứng viên cho `FAIL` (hoạt động 8). Đánh dấu 12 chỗ chờ `ADR-001…012` (không viết `ADR` nào). Thêm `OQ-026/027` (khớp số ECS Fargate với `TCO`; vị trí nhóm triển khai của Identity & Access), `ASM-22/23`. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — bản vẽ C4 sửa lại khi `ADR-001` đổi hướng không tốn nhiều so với đã code · bán kính ảnh hưởng: hoạt động `icd`/`dat`/`sec`/`inf`/`fail` kế tiếp phụ thuộc `SAD` này nhưng việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm `QAS`/`ASR` Must trực tiếp (đang hiện thực hoá thành component) nhưng chưa phải cam kết thi công (chưa `ADR` nào `Accepted`) · không ràng buộc dài hạn tự thân (văn bản sửa được qua version mới, khác `ADR` bất biến) · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…14`) | `SAD_e-commerce_v1.0.md` (toàn bộ), `OQ-026/027` |
| DEC-16 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `SAD_e-commerce_v1.0.md` bản v1.0: chấp nhận C4 Context/Container/Component (Cart & Order), deployment view, bảng `CMP-01…15` và ma trận `ASR-001…015` × `CMP` đủ 15/15 (không `CMP` mồ côi), 22 `IF-nn` ứng viên cho `ICD`, và 12 chỗ chờ `ADR-001…012` (kế thừa nguyên trạng từ `ASR §B2`/`DEC-14`, không đổi radar). Chốt **TẠM** `OQ-026` (P2 có 2 ECS Fargate service riêng — Nhóm Giao dịch/Nhóm Hỗ trợ — để scale độc lập, `TCO §3.2` giữ nguyên tới khi hoạt động `inf` xác nhận, theo `ASM-23`) và `OQ-027` (Identity & Access thuộc Nhóm Giao dịch, theo `ASM-22`) làm hướng đi tạm cho `icd`/`dat`/`sec`/`inf`/`fail` kế tiếp — **`OQ-026`/`OQ-027` giữ nguyên MỞ**, chờ Tech Lead/Ops thật xác nhận, không coi là đã đóng. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `SAD` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~4 (giống `DEC-12`/`DEC-14` — chi phí đảo ngược thấp (sửa `SAD`/`CMP` khi có PO/Tech Lead thật không tốn nhiều) · bán kính ảnh hưởng: toàn bộ hoạt động `icd`/`dat`/`sec`/`inf`/`fail`/`adr` kế tiếp phụ thuộc `SAD` này nhưng bản thân việc ký thay/duyệt từng phần thì nhỏ · có chạm `QAS`/`ASR` Must trực tiếp (đang hiện thực hoá thành component) nhưng chưa phải cam kết thi công (chưa `ADR` nào `Accepted`) · không ràng buộc dài hạn (deployment view sửa được qua version mới, khác `ADR` bất biến) · không tranh cãi mới, tiếp nối tiền lệ `DEC-06/09/10/12/14`) | `SAD_e-commerce_v1.0.md` (header, Change Log), `OQ-026/027` (cập nhật, không đóng) |
| DEC-17 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 9 — `adr`) cho e-commerce trong khi AG1 chưa có chữ ký PO/Tech Lead thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…16`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. Viết đủ `ADR-001…012` trong `02-architecture/adr/`, mỗi ADR có Bối cảnh (truy về `ASR`/`QAS`/`DRV`/`CON` nguồn), Phương án đã cân nhắc (≥2, có phương án bị loại + lý do gắn `CON`/`QAS`), Quyết định, Hệ quả (tích cực/tiêu cực/nợ kỹ thuật), Radar (điểm + căn cứ), Điều kiện chuyển `Accepted`, Cách kiểm chứng (`FIT` ứng viên cho GĐ3), Supersedes/Related. **Tất cả 12 ADR giữ Status `Proposed`** — không ADR nào `Accepted` vì chưa có chữ ký thật (Tech Lead + Security + Ops/SRE); `ADR-005`/`ADR-006`/`ADR-009` (radar ≥8) ghi rõ điều kiện `Accepted` là `POC-01`/`POC-02`/diễn tập DR PASS (đúng `decision-radar.md §2`/§6); `ADR-008` (PII) ghi phủ quyết Security/Legal, chặn hoàn toàn tới khi PO chỉ định người (`OQ-007`). Cập nhật `ADL_e-commerce.md` (mục lục 12 ADR, radar, nguồn, `ASR` phục vụ; `DEC-06` được ghi nhận là đã trả nợ). Cập nhật `SAD_e-commerce_v1.0.md` §8 lên v1.1 (chỉ thay cột "chưa viết" bằng link file ADR thật, không đổi nội dung chuyên môn khác của `SAD`). Không sửa `ASR`/`QAS` đã duyệt từng phần. `Confidence` 🔴 toàn bộ 12 ADR (chưa ai ký thật). | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — *việc ghi 12 ADR dưới ngoại lệ gate* thì sửa lại không tốn nhiều khi có chữ ký thật, khác với *nội dung từng ADR* vốn đã được chấm radar riêng biệt trong từng file (6–9) · bán kính ảnh hưởng: AG2 phụ thuộc trực tiếp 12 ADR này nhưng bản thân hành vi "chạy dưới ngoại lệ" thì nhỏ · có chạm `QAS`/`ASR` Must trực tiếp (đang hình thức hoá quyết định) nhưng chưa cam kết thi công (không ADR nào `Accepted`) · không ràng buộc dài hạn tự thân (ADR giữ `Proposed`, chưa bất biến) · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…16`) → **ghi `DEC-nn` cho việc chạy dưới ngoại lệ, không cần thêm `ADR` cho chính hành vi này** (`decision-radar.md §1–§2`) — tách biệt với 12 `ADR` nội dung đã viết. **Hệ quả nếu không chấp nhận ngoại lệ:** dừng GĐ2 ở hoạt động `sad`, không có `ADR` chính thức nào cho 12 quyết định đã đạt ngưỡng radar 5–7/8–9 — AG2 không thể tự chấm mục "`ADR-nnn` tồn tại cho mọi quyết định đạt ngưỡng radar", và `DEC-06` (GĐ1) tiếp tục treo như một khoản nợ chưa trả. | `ADR-001…012` (toàn bộ), `ADL_e-commerce.md`, `SAD_e-commerce_v1.0.md §8` (v1.1) |
| DEC-18 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 4 — `ICD`) cho e-commerce trong khi AG1 chưa có chữ ký PO/Tech Lead thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…17`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `ICD_e-commerce_v1.0.md` tạo mới — catalog cho 17/17 `IF-nn` truy được từ `SAD §4` (chênh lệch với con số "22" của `SAD` được ghi nhận ở `OQ-029`, không bịa thêm 5 ID); chi tiết đầy đủ cho `IF-002` (4 endpoint Cart & Checkout: `GET`/`PATCH`/`DELETE /v1/cart*`, `POST /v1/checkout`), `IF-005/006/007/008/009/015/021/022`. Xác nhận/điều chỉnh toàn bộ `API_US002-003_v1.0.md` của BA tại §5 (6 xác nhận, 3 điều chỉnh có lý do gắn `QAS-003`/`ADR-003`, 1 chờ `OQ-030(BA)`) — đóng đề xuất cho `OQ-034(BA)`/`OQ-032(BA)` (BA cần tự cập nhật sổ để đóng chính thức). Thêm `OQ-028…033`, `ASM-24…26`. Không sửa `SAD`/`ASR`/`QAS`/`ADR` đã có. `Confidence` 🔴 toàn bộ. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — contract catalog sửa lại khi có Tech Lead thật không tốn nhiều, chưa có dòng code nào phụ thuộc · bán kính ảnh hưởng: hoạt động `dat`/`sec`/`inf`/`fail` kế tiếp và toàn bộ dev BE/FE dùng `ICD` làm nguồn sự thật, nhưng bản thân việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm trực tiếp việc xác nhận `API` của BA (đúng vai trò `ICD` phải làm) nhưng chưa phải cam kết thi công (chưa ai ký) · không ràng buộc dài hạn tự thân (ICD sửa được qua version mới) · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…17`) → **ghi `DEC-nn`, không cần `ADR` cho việc chạy dưới ngoại lệ**. **Hệ quả nếu không chấp nhận ngoại lệ:** BA không có ai xác nhận chính thức 3 endpoint Cart đang ở trạng thái "chờ BE" — SRS/API của BA tiếp tục treo `OQ-030/032/033/034(BA)`, chặn G3 của bộ BA. | `ICD_e-commerce_v1.0.md` (toàn bộ), `OQ-028…033` |
| DEC-19 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `ICD_e-commerce_v1.0.md` bản v1.0: chấp nhận catalog 17 `IF-nn` (§2), chi tiết đầy đủ `IF-002` (4 endpoint Cart & Checkout, §3.1), và kết luận xác nhận/điều chỉnh `API_US002-003_v1.0.md` của BA tại §5 (nhóm `GET /v1/cart` theo seller; `sellerName` denormalize snapshot thay vì join runtime; thêm `unitPriceSnapshotVnd`/`currentPriceVnd`/`priceChanged`; Guest ownership dùng cùng cơ chế `403 ERR_FORBIDDEN_OWNERSHIP` theo `ADR-007`). Chấp nhận **TẠM** `ASM-24` (`IF-021` là cross-network, không in-process), `ASM-25` (chiều gọi `IF-022` là Cart&Order → Seller Management), `ASM-26` (Payment Service nhận `sellerId` ngay tại `IF-006`), và hướng denormalize `sellerName` đề xuất ở `OQ-033` làm baseline cho hoạt động `dat`/`sec`/`inf`/`fail` kế tiếp — **`OQ-028…033` (SA) giữ nguyên MỞ**, chờ Tech Lead thật xác nhận, không coi là đã đóng. Ghi nhận: 5 interface đối tác ngoài (VNPay/Momo/GHN/GHTK) và Email/SMS Provider **chưa có contract thật** (🔴, `ARISK-03/04`) — không thay đổi bởi lượt duyệt này. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `ICD` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. Nhắc BA chạy `ba-pipeline` hoạt động `specification` để cập nhật `API_US002-003`/`SRS_US002-003` theo `ICD §5`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~4 (giống `DEC-12/14/16` — chi phí đảo ngược thấp (sửa `ICD` khi có Tech Lead thật không tốn nhiều) · bán kính ảnh hưởng: toàn bộ hoạt động `dat`/`sec`/`inf`/`fail` kế tiếp và dev BE/FE phụ thuộc `ICD` này nhưng bản thân việc ký thay/duyệt từng phần thì nhỏ · có chạm trực tiếp việc xác nhận `API` của BA (đã làm) nhưng chưa phải cam kết thi công (chưa ai ký thật) · không ràng buộc dài hạn (contract sửa được qua version mới) · không tranh cãi mới, tiếp nối tiền lệ `DEC-06/09/10/12/14/16`) | `ICD_e-commerce_v1.0.md` (header, Change Log), `OQ-028…033` (cập nhật, không đóng) |
| DEC-20 (SA) | Tiếp tục ngoại lệ gate cho e-commerce (AG1 chưa ký thật, AG2 chưa tới hạn) — tiếp nối `DEC-01…19` — để **sửa lỗi nhất quán** trong `SAD_e-commerce_v1.0.md` (lên v1.2) theo phát hiện của hoạt động `icd` (`OQ-028` mâu thuẫn in-process/cross-network của `IF-021`; `OQ-029` chênh lệch "22 vs 17" `IF-nn`), theo yêu cầu người duyệt 2026-09-15. Đây là **sửa lỗi tài liệu**, không phải quyết định kiến trúc mới — không cần `ADR`, không đổi `CMP`. Kết luận: (1) `IF-021`/`IF-022` (Cart&Order ↔ Promotion&Loyalty/Seller Management) là cross-network REST giữa 2 ECS Fargate service riêng (Nhóm Giao dịch/Nhóm Hỗ trợ), không phải in-process — sửa thống nhất ở legend §4, footnote §4.1, §5, bảng §6.1/§6.3, bổ sung cạnh mạng còn thiếu ở §7 (đánh dấu 🔴 chờ `inf` thiết kế đường kết nối thật); `IF-005` (in-process, cùng Nhóm Giao dịch) và `IF-006` (cross-network, Payment) không đổi. (2) "22 `IF-nn`" là đếm nhầm ở bản gốc — đúng 17 ID (`IF-001…009, 015…022`), không bỏ sót interface nào — sửa "22"→"17" ở header/Change Log/Tự chấm của `SAD`. Đóng `OQ-029` trong sổ `00-index/OQ_e-commerce.md` (SA); `OQ-028` giữ nguyên mở (chờ Tech Lead thật xác nhận ranh giới mạng, dù `SAD` nay đã hết mâu thuẫn nội bộ). Không sửa §8 (`ADR` links), không sửa `ASR`/`QAS`/`ADR`/`ICD`. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~3 (chi phí đảo ngược rất thấp — thuần sửa lỗi mô tả/đếm số, không đổi cấu trúc `CMP`/quyết định kiến trúc · bán kính ảnh hưởng: làm rõ cho hoạt động `fail`/`inf` kế tiếp (mức ưu tiên `IF-021` cross-network) nhưng bản thân việc sửa lỗi thì nhỏ · không chạm `QAS`/`ASR` Must nào mới, chỉ làm nhất quán nội dung đã có · không ràng buộc dài hạn (sửa lỗi văn bản) · không tranh cãi — là sửa lỗi khách quan (đối chiếu sơ đồ với bảng), có tiền lệ `DEC-11…19`) | `SAD_e-commerce_v1.0.md` (v1.2), `OQ-029` (đóng), `OQ-028` (không đóng, ghi nhận SAD hết mâu thuẫn nội bộ) |
| DEC-21 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 8 — `FAIL`) cho e-commerce dù AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…20`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `FAIL_e-commerce_v1.0.md` tạo mới — 13 phụ thuộc vượt ranh giới process theo `SAD` v1.2 §6.3 (VNPay, Momo, GHN, GHTK, Email/SMS, RDS chính, RDS Payment, Redis, SQS FIFO, EventBridge, `IF-006`, `IF-021` ưu tiên cao nhất, `IF-022`), mỗi cái đủ timeout/retry/idempotent/hết-retry-thì-sao và 4 câu hỏi `D6`. Dựng bảng ngân sách timeout cộng dồn đường găng checkout và **phát hiện xung đột**: timeout VNPay/Momo kế thừa 10s không dùng được nguyên trạng trong nhánh đồng bộ `IF-006`→`IF-007/008` vì một mình nó đã vượt `QAS-002` (≤3.000ms); ngay cả khi siết xuống 1.500ms, tổng cộng dồn vẫn vượt ngân sách ~7% (3.220ms) — trình 2 lựa chọn (siết thêm timeout vs bất đồng bộ hoá bước khởi tạo thanh toán) kèm hệ quả bằng số, không tự quyết (`OQ-034`). Thiết kế circuit breaker/backoff/bulkhead toàn hệ thống; suy giảm có kiểm soát (Promotion lỗi — đề xuất mặc định "bỏ qua, tiếp tục" nhưng không tự quyết, nối `OQ-017` của BA; COD khi VNPay/Momo lỗi; GHN↔GHTK fallback chéo theo `ASR-013`; phát hiện thiếu cache nội dung giỏ hàng thật cho fallback khi RDS chậm); 6 kịch bản hỏng toàn hệ thống; dữ liệu trong lúc lỗi; ánh xạ mã lỗi theo `AC_US-002/003`/`ICD §1` (3 mã lỗi mới đề xuất cho US-004 Checkout, chưa có trong `SRS` của BA); đề xuất `FIT-16…22` (chaos test/kill dependency) cho GĐ3. Thêm `OQ-034…040`, `ASM-27…33`. Không sửa `SAD`/`ICD`/`ADR` đã có. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — số cấu hình timeout/retry/circuit breaker sửa được qua config, không phải viết lại kiến trúc; các quyết định kiến trúc nền đã có `ADR-004/005/007/009/011` riêng · bán kính ảnh hưởng: toàn bộ luồng checkout + mọi consumer message backbone, nhưng bản thân việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm `QAS-002` Must trực tiếp (phát hiện xung đột ngân sách) nhưng chưa phải cam kết thi công (chưa ai ký) · không ràng buộc dài hạn tự thân · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…20`) → **ghi `DEC-nn`, không cần `ADR` mới cho việc chạy dưới ngoại lệ**. **Hệ quả nếu không chấp nhận ngoại lệ:** AG2 thiếu tiêu chí "mỗi phụ thuộc ra ngoài process có failure mode, timeout, retry, fallback" — Dev tự chọn timeout/retry lúc code, không ai biết tổng thể hệ thống hỏng thế nào. | `FAIL_e-commerce_v1.0.md` (toàn bộ), `OQ-034…040` |
| DEC-22 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `FAIL_e-commerce_v1.0.md` bản v1.0: chấp nhận bảng 13 phụ thuộc (`FM-01…13`) đủ timeout/retry/idempotency/fallback, bảng mã lỗi §5, đề xuất `FIT-16…22` (GĐ3). Chấp nhận **TẠM** (🔴) các ngưỡng SA đề xuất — circuit breaker §3.1 (`OQ-035`), DLQ retention 14 ngày + ngưỡng cảnh báo lag hàng đợi >5 phút (`OQ-036`), bulkhead pool chờ `POC-02` (`OQ-037`), timeout RDS/Redis (`ASM-27`/`ASM-28`) — tất cả **giữ nguyên MỞ**, chờ Tech Lead/SRE thật xác nhận, không coi là đã đóng. **Quyết định `OQ-034`** (xung đột ngân sách timeout đường găng checkout, `FAIL §1.2`): chọn **Lựa chọn B** — bất đồng bộ hoá bước khởi tạo thanh toán (tạo `Order` trạng thái `PENDING_PAYMENT_INIT`, trả response trong ngân sách ~1.670ms, gọi VNPay/Momo sau response) để đảm bảo `QAS-002` (≤3.000ms) không phụ thuộc SLA bên thứ ba — thay vì Lựa chọn A (siết timeout hơn nữa, chấp nhận rủi ro tăng tỷ lệ lỗi init khi đối tác thật chậm). Yêu cầu SA (lượt kế tiếp): viết `ADR-013` (`Proposed`, `Supersedes` một phần sequence diagram `SAD §6.1`) và sửa nhất quán `SAD §6.1` + `FAIL §1.2` theo hướng B — **chưa thực hiện ở lượt sign này** (đúng nguyên tắc chỉ sửa header/Change Log/INDEX khi `sign`, không đổi nội dung chuyên môn). `OQ-034` cập nhật trạng thái "đã chọn hướng B, chờ `ADR-013` + Tech Lead/PO thật xác nhận" — **giữ nguyên MỞ**, không đóng (chưa có `ADR-013` thật, chưa Tech Lead/PO xác nhận chính thức). Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `FAIL` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~5 (chi phí đảo ngược trung bình — cao hơn các `DEC` sign trước của `FAIL` vì đây không chỉ là chấp nhận TẠM số cấu hình mà là **chọn hướng kiến trúc** (bất đồng bộ hoá bước khởi tạo thanh toán) ảnh hưởng sequence diagram `SAD §6.1` đã duyệt từng phần và cần thiết kế lại UX checkout (FE thêm bước chờ/poll `paymentRedirectUrl`) · bán kính ảnh hưởng: toàn bộ luồng checkout (`IF-006`/`IF-007`/`IF-008`) + FE + `ADR-013` mới · có chạm `QAS-002` Must trực tiếp (chính là lý do chọn B) nhưng `ADR-013` chưa viết nên chưa `Accepted`, chưa cam kết thi công · ràng buộc trung hạn (tới khi `ADR-013` viết xong và Tech Lead/PO thật xác nhận) · không tranh cãi mới về mặt lập luận kỹ thuật (SA đã khuyến nghị B ở §1.2) nhưng là quyết định hướng đầu tiên trong chuỗi `DEC` của `FAIL`, tiếp nối tiền lệ `DEC-12/14/16/19`) | `FAIL_e-commerce_v1.0.md` (header, Change Log), `OQ-034` (cập nhật, không đóng), `OQ-035/036/037` (cập nhật, không đóng) |
| DEC-23 (SA) | Tiếp tục `sa-2-architecture` (hoạt động `adr`, phạm vi hẹp — chỉ `ADR-013` + sửa nhất quán tối thiểu) cho e-commerce dù AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…22`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. Viết `adr/ADR-013_bat-dong-bo-hoa-khoi-tao-thanh-toan.md` (`Proposed`, radar 7/10) hiện thực hoá đầy đủ Lựa chọn B đã chọn ở `OQ-034`/`DEC-22`: mô tả state machine `Order` (`PENDING_PAYMENT_INIT`→`PAYMENT_INIT_READY`/`PAYMENT_INIT_FAILED`), cơ chế trigger async qua message `PaymentInitRequested` (tái dùng `ADR-005`), idempotency (tái dùng `ADR-004`), hành vi khi init thất bại (thử lại/chuyển COD); nêu đủ 3 phương án (A siết timeout — loại, B — chọn, C giữ đồng bộ chấp nhận vượt `QAS-002` — loại vì vi phạm `D10`); hệ quả tích cực/tiêu cực, việc phát sinh (BA viết `SRS`/`AC` US-004, `ICD` lượt sau chốt endpoint polling/retry/chuyển COD). Sửa nhất quán tối thiểu: `SAD_e-commerce_v1.0.md` lên v1.3 (§6.1 sequence diagram chèn nhánh rẽ COD/online + bất đồng bộ, §8 thêm dòng `ADR-013`) và `FAIL_e-commerce_v1.0.md` lên v1.1 (§1.2 tách đường găng đồng bộ bước 1–6+COD/10 khỏi bước khởi tạo VNPay/Momo bất đồng bộ, kết quả tổng đồng bộ ≤3.000ms cho cả hai nhánh). Không sửa nội dung khác của `SAD`/`FAIL`, không viết ADR nào khác, không sửa 12 ADR cũ (`ADR-001…012`). `OQ-034` cập nhật "đã chọn hướng B, đã có `ADR-013`, chờ Tech Lead + PO thật xác nhận" — giữ mở. Thêm `OQ-041`/`OQ-042` (cơ chế FE polling/SSE; thời gian giữ `Order` chờ init trước khi coi là kẹt). Cập nhật `ADL_e-commerce.md` (thêm `ADR-013 Proposed`) và `DTM_e-commerce.md` (`ASR-004`/`QAS-002` → `ADR-013`). `Confidence` 🔴 toàn bộ. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp cho *việc ghi tài liệu dưới ngoại lệ* — khác điểm radar 7/10 của chính nội dung `ADR-013` đã chấm riêng trong file đó · bán kính ảnh hưởng: `SAD`/`FAIL` đã tồn tại, chỉ sửa đúng 2 mục theo yêu cầu người duyệt, không viết lại toàn bộ · chạm `QAS-002` Must gián tiếp (đang sửa cách đạt nó, không hạ chuẩn) · không ràng buộc dài hạn tự thân (khác `ADR-013`) · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…22`) → **ghi `DEC-nn` cho việc chạy dưới ngoại lệ, không cần `ADR` riêng** — tách biệt với `ADR-013` (nội dung, đã chấm radar riêng). **Hệ quả nếu không chấp nhận ngoại lệ:** `OQ-034` tiếp tục treo ở "đã chọn B nhưng chưa có ADR", Dev không có tài liệu chính thức để thi công lại luồng checkout, `SAD`/`FAIL` tiếp tục mô tả một luồng đã biết vượt ngân sách `QAS-002`. | `ADR-013` (mới), `SAD_e-commerce_v1.0.md` (v1.3), `FAIL_e-commerce_v1.0.md` (v1.1), `OQ-034` (cập nhật, không đóng), `OQ-041/042` (mới) |
| DEC-24 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 5 — `DAT`) cho e-commerce dù AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…23`. `DAT_e-commerce_v1.0.md` tạo mới — bảng ownership `D7` cho toàn bộ 15 `CMP`, mô hình `Order`/`OrderSeller`/`OrderItem` chi tiết theo `ADR-003`/`ADR-013`, phân loại PII/Payment/nghiệp vụ + đề xuất retention (chờ Legal, `OQ-007`) và whitelist chia sẻ seller theo `ADR-008`, chiến lược đọc/ghi/consistency/idempotency, đề xuất Transactional Outbox (ADR ứng viên, chưa viết — `OQ-044`), backup/PITR, migration/versioning, dữ liệu đối soát và job dọn `Order` kẹt. Đối chiếu `docs/05` P1 — phát hiện thiếu `CMP` Audit & Compliance (`OQ-047`). Thêm `OQ-043…047`, cập nhật `OQ-007/040/042`, `ASM-35…38`. Không sửa `SAD`/`ICD`/`FAIL`/`ADR`. `Confidence` 🔴 toàn bộ. *(Ghi bổ sung: dòng này bị thiếu ở lượt chạy trước, bổ sung lại khi sign `DEC-25` để không đứt mạch — không đổi nội dung `DAT` đã ghi.)* | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (giống `DEC-21` — chi phí đảo ngược thấp, ghi tài liệu thiết kế chưa có dòng code phụ thuộc · bán kính ảnh hưởng: `sec`/`inf` kế tiếp và dev BE dùng `DAT` làm nguồn sự thật ownership · có chạm `QAS-003/004/006/008/011/014` Must trực tiếp nhưng chưa phải cam kết thi công · không ràng buộc dài hạn tự thân · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…23`) | `DAT_e-commerce_v1.0.md` (toàn bộ), `OQ-043…047` |
| DEC-25 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `DAT_e-commerce_v1.0.md` bản v1.0: chấp nhận bảng ownership 15 `CMP` (§1), mô hình `Order`/`OrderSeller`/`OrderItem` + `payment_init_status` (`ADR-013`, §2), snapshot giá/`sellerName`, idempotency store cho `POST /v1/checkout` (§4.2), PITR RPO ≤15 phút (§9). Chấp nhận **TẠM** (🔴): `ASM-35` (1 `Order` = 1 `Payment`) — `OQ-043` **giữ nguyên MỞ**; chọn **Transactional Outbox** (không phải job quét PA-1) cho khoảng trống `FAIL §7` — yêu cầu SA viết `ADR-014` (`Proposed`) ở lượt hoạt động `adr` kế tiếp, `OQ-044` **giữ MỞ** tới khi có ADR; chọn phương án (a) — mỗi module tự ghi `audit_log` riêng trong schema của mình cho `OQ-047`, **không thêm `CMP-16`** Audit tập trung; ngưỡng job quét `Order` kẹt ở `PENDING_PAYMENT_INIT` **5 phút** cho `OQ-042`; cơ chế FE lấy `redirectUrl` là **polling** cho `OQ-041` — cả bốn `OQ-041/042/044/047` **giữ nguyên MỞ**, chờ Tech Lead thật xác nhận, không coi là đã đóng. `OQ-045` (Flyway/Liquibase) và `OQ-046` (routing read replica) **giữ nguyên MỞ**, không có hướng TẠM nào được chốt. **§5 (phân loại PII/retention/whitelist chia sẻ seller) CHƯA CÓ HIỆU LỰC** — nằm ngoài phạm vi duyệt lần này, chờ đại diện Pháp chế/Bảo mật phủ quyết (`OQ-007`). Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; Security/Ops/SRE **chưa ký**; `OQ-004` giữ mở. `Confidence`/Status của `DAT` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~4 (giống `DEC-12/14/16/19` — chi phí đảo ngược thấp (sửa `DAT` khi có Tech Lead/DBA thật không tốn nhiều, chưa có dòng migration nào chạy) · bán kính ảnh hưởng: toàn bộ hoạt động `sec`/`inf` kế tiếp và dev BE dùng `DAT` làm nguồn sự thật ownership, nhưng bản thân việc ký thay/duyệt từng phần thì nhỏ · có chạm `QAS-003/004/006/008/011/014` Must trực tiếp (đang duyệt cách hiện thực hoá) nhưng chưa phải cam kết thi công (idempotency/outbox chưa viết `ADR`/code) · không ràng buộc dài hạn tự thân (văn bản `DAT` sửa được qua version mới) · không tranh cãi mới, tiếp nối tiền lệ `DEC-06/09/10/12/14/16/19/22`) | `DAT_e-commerce_v1.0.md` (header, Change Log), `OQ-041/042/044/047` (cập nhật, không đóng) |
| DEC-26 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) **review nội dung** `adr/ADR-013_bat-dong-bo-hoa-khoi-tao-thanh-toan.md`: chấp nhận nội dung §3 (state machine `PENDING_PAYMENT_INIT`/`PAYMENT_INIT_READY`/`PAYMENT_INIT_FAILED`, timeout async 10s, idempotency, hành vi thất bại) làm cơ sở thiết kế tiếp (`ICD`/`DAT`/FE). **KHÔNG** đề nghị chuyển `Accepted` — `ADR-013` **giữ nguyên `Proposed`** vì chưa có chữ ký thật Tech Lead + PO (`ADR-013 §7`) và BA chưa viết `SRS`/`AC` cho US-004 (`OQ-034`). Ghi dòng "Reviewed (Proposed giữ nguyên)" ở `ADR-013 §9` — cùng mẫu với 12 ADR trước (`ADR-001…012`). Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**. `Confidence` 🔴; `AG2` chưa ký. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~7 *(radar gốc của chính `ADR-013`, không đổi bởi việc review — chi phí đảo ngược cao (>4 tuần, đã lộ FE) · bán kính ảnh hưởng Cart&Order/Payment/FE/BA/ICD · chạm `QAS-002` Must trực tiếp · ràng buộc trung hạn · không tranh cãi mới)* | `adr/ADR-013_bat-dong-bo-hoa-khoi-tao-thanh-toan.md §9`, `00-index/ADL_e-commerce.md` |
| DEC-27 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 6 — `SEC`) cho e-commerce dù AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…26`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `SEC_e-commerce_v1.0.md` tạo mới — threat model STRIDE cho 8 ranh giới tin cậy (`THR-01…31`, mỗi cái truy về `QAS`/`ASR`/`ADR` nguồn); mô hình authn (Guest/Customer/Seller/Admin, phát hiện khoảng trống service-to-service authn giữa Nhóm Giao dịch↔Nhóm Hỗ trợ↔Payment — đề xuất PA-3 service JWT, radar ~5, `ADR` bắt buộc chưa viết, `OQ-050`); mô hình authz (map đủ 2/2 `ROLE-nn` của `RBAC_CartCheckout`, chỗ ra quyết định = service theo `ADR-007`, fail-closed `E-CART-0007`); phân loại/mã hoá/masking PII và tuân thủ PCI-DSS/NĐ13/2023 — **toàn bộ đánh dấu "đề xuất chờ Legal/Security phủ quyết"** vì chưa có người (`OQ-007`); webhook: chưa bịa cơ chế chữ ký cụ thể của VNPay/Momo/GHN/GHTK (chưa có tài liệu đối tác, `OQ-049`, `ARISK-03/04`); trả lời `OQ-023` bằng đề xuất số cụ thể (30 req/phút Guest cart) kèm hệ quả hai chiều, không tự quyết thay Security; secret management (Secrets Manager, rotation), audit log (trường bắt buộc + retention theo phương án (a) đã chốt ở `OQ-047`), chuỗi cung ứng (SCA/container scan, pentest/ASV). Đề xuất `FIT-29…33` cho GĐ3. Thêm `OQ-048…053`, `ASM-39…41`. Không viết `ADR` mới (chỉ đề xuất 1 ứng viên cho hoạt động `adr` kế tiếp). Không sửa `SAD`/`ICD`/`DAT`/`FAIL`/`ADR` đã có. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — ghi tài liệu threat model, chưa có dòng code phụ thuộc · bán kính ảnh hưởng: hoạt động `inf` kế tiếp và toàn bộ dev dùng `SEC` làm nguồn sự thật authn/authz/PII, nhưng bản thân việc ghi tài liệu dưới ngoại lệ thì nhỏ · có chạm `QAS-010/011/012` Must trực tiếp (đang thiết kế cách đạt chúng) nhưng chưa phải cam kết thi công (chưa `FIT` nào chạy) · không ràng buộc dài hạn tự thân (văn bản sửa được qua version mới) · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…26`) → **ghi `DEC-nn`, không cần `ADR` cho việc chạy dưới ngoại lệ**. **Hệ quả nếu không chấp nhận ngoại lệ:** hoạt động `inf` (hoạt động 7) không có mô hình threat/authn/authz để thiết kế network segmentation/secret management thật — chậm tiến độ tương ứng thời gian xử lý `OQ-007` (chặn hoàn toàn hiệu lực phủ quyết của `SEC`). | `SEC_e-commerce_v1.0.md` (toàn bộ), `OQ-048…053` |
| DEC-28 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `SEC_e-commerce_v1.0.md` bản v1.0: ghi nhận nội dung 31 `THR` STRIDE (§4), map `ROLE-01/02` (§3.1), mô hình authn/authz đề xuất (§2, §3), SAQ A (§8.1), đề xuất rate limit **30/10/10 req/phút** (§5.3, `ASM-40`), quản lý secret/scanning (§6), audit log theo phương án (a) (§7). Chốt **TẠM** `OQ-050`: chọn **PA-3** (service JWT ngắn hạn ký bởi Identity & Access, không phải PA-2 mTLS/App Mesh) cho service-to-service authn giữa Nhóm Giao dịch↔Nhóm Hỗ trợ↔Payment — yêu cầu SA viết `ADR-015` (`Proposed`) ở lượt hoạt động `adr` kế tiếp cùng `ADR-014` đang nợ; `OQ-050` **giữ nguyên MỞ**, chờ Security + Ops/SRE thật xác nhận trước khi `Accepted`. **KHÔNG ký thay Security**: header `Approved by → Security` giữ `—`, `SEC` **chưa có hiệu lực phủ quyết AG2** cho tới khi có đại diện Security/Legal thật (`OQ-007`); mọi kết luận PII/residency/retention (§5, §8.2) vẫn là đề xuất chờ Legal/Security, không phải quyết định cuối. Ops/SRE **chưa ký**. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; `OQ-004` giữ mở. `Confidence`/Status của `SEC` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~5 (giống radar ước lượng PA-3 của chính `SEC §2.4` — chi phí đảo ngược trung bình (đổi cơ chế sau khi code tốn sửa cả hai đầu gọi) · bán kính ảnh hưởng: mọi lời gọi cross-network nội bộ TB3/TB4 + tiền lệ cho `IF` tương lai · chạm gián tiếp `QAS-002`/`QAS-010` · ràng buộc ≥1 năm (chuẩn nội bộ service-to-service) · không tranh cãi mới, tiếp nối tiền lệ `DEC-12/14/16/19/25`) | `SEC_e-commerce_v1.0.md` (header, Change Log), `OQ-050` (cập nhật, không đóng) |
| DEC-29 (SA) | Tiếp tục `sa-2-architecture` (hoạt động 7 — `INF`) cho e-commerce dù AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…28`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. `INF_e-commerce_v1.0.md` tạo mới — topology AWS `ap-southeast-1` (2 AZ, ALB+WAF, 2 ECS Fargate Nhóm Giao dịch/Nhóm Hỗ trợ + Payment tách biệt, RDS chính Multi-AZ + RDS Payment, ElastiCache Redis, SQS FIFO+EventBridge+DLQ, S3/CloudFront, Secrets Manager/KMS, NAT) đối chiếu `TCO §3.2` từng dòng (khớp toàn bộ trừ 1 điểm bản chất — cross-region snapshot Payment vs `ADR-009` "không multi-region", `OQ-054`, không tự sửa); split ECS task GD/HT đề xuất khớp tổng `TCO` (`OQ-055`); HA/auto-scaling A→B theo `QAS-009`, phát hiện SPOF ElastiCache kịch bản A (`OQ-058`); DR RPO≤15’/RTO≤1h theo `QAS-008`/`ADR-009` + **kế hoạch diễn tập DR 3 kịch bản** (mất AZ/RDS primary/Redis) kèm tiêu chí PASS/FAIL đo thật (`OQ-022`/`OQ-056`, ngày thật chờ Ops/SRE); observability alert ≤1 phút nhóm giao dịch cốt lõi (`QAS-013`), DLQ 14 ngày + alert lag>5 phút (`OQ-036`), error budget 43 phút/tháng trừ bảo trì ≤2h (`OQ-020`), on-call theo `CON-08`/`OQ-008`; CI/CD (build→test→SAST→SCA(Trivy/Snyk)→migration→deploy, blue-green 3 service, migration Flyway theo `OQ-045`); network/SG + egress đối tác ngoài (`OQ-057`); giải quyết khoảng trống service discovery GD↔HT (`SAD §7`/`OQ-028`) bằng AWS Cloud Map/ECS Service Connect (ghi mức `DEC`, không `ADR`); IaC đề xuất Terraform + `FIT-34…38` GĐ3; đề xuất 2 `ADR` ứng viên mới (`ADR-016` blue-green, `ADR-017` Terraform) cho hoạt động `adr` kế tiếp — không viết `ADR` ở lượt này. Thêm `OQ-054…063`, `ASM-42…46`. Không sửa `SAD`/`ICD`/`DAT`/`SEC`/`FAIL`/`ADR` đã có. `Confidence` 🔴 toàn bộ. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — tài liệu hạ tầng, chưa IaC thật · bán kính ảnh hưởng: `sa-3-enablement` phụ thuộc `INF` nhưng bản thân việc ghi tài liệu dưới ngoại lệ thì nhỏ · chạm `QAS-008/009/013` Must trực tiếp nhưng chưa cam kết thi công · không ràng buộc dài hạn tự thân · không tranh cãi mới, tiếp nối tiền lệ `DEC-11…28`) | `INF_e-commerce_v1.0.md` (toàn bộ), `OQ-054…063` |
| DEC-30 (SA) | Điều phối dự án (thay mặt Tech Lead, ngoại lệ `DEC-01`) duyệt **từng phần** `INF_e-commerce_v1.0.md` bản v1.0: chấp nhận topology AWS `ap-southeast-1`, bảng đối chiếu `INF↔TCO` (§10), HA/auto-scaling split ECS Nhóm Giao dịch/Nhóm Hỗ trợ A 2/2 – B 6/4 (`ASM-42`, `OQ-055` giữ mở), kế hoạch diễn tập DR 3 kịch bản (`OQ-022`/`OQ-056`, ngày thật chờ Ops/SRE — điều kiện tiên quyết AG2), observability, chiến lược CI/CD blue-green (`ADR-016` ứng viên), network/egress, IaC Terraform (`ADR-017` ứng viên). Chốt **TẠM** `OQ-058`: giữ nguyên `TCO` — **KHÔNG** thêm replica Redis ở kịch bản A, chấp nhận rủi ro SPOF ElastiCache kịch bản A với hành vi fail-closed theo `FAIL` (không mất dữ liệu nghiệp vụ, chỉ gián đoạn dịch vụ tạm thời) — `OQ-058` **giữ nguyên MỞ**, chờ PO xác nhận cuối cùng (đây là đánh đổi chi phí/rủi ro của PO, không phải SA/Tech Lead tự quyết). Đồng ý để SA viết `ADR-016` (blue-green) và `ADR-017` (Terraform) ở mức `Proposed` cùng lúc với `ADR-014` (outbox, `DAT`) và `ADR-015` (service JWT, `SEC`) ở lượt hoạt động `adr` kế tiếp. `OQ-054` (cross-region snapshot Payment vs `ADR-009` "không multi-region") **giữ nguyên mở**, không tự chọn hướng. **KHÔNG ký thay Ops/SRE**: header `Approved by → Ops/SRE` của `INF` giữ `—` — `INF` **chưa có hiệu lực xác nhận HA/DR/observability thật** cho tới khi Ops/SRE ký (`INF` là artifact cuối cần chữ ký Ops/SRE trực tiếp theo `workflow.md §2`). Security **chưa ký**. Ký thay Tech Lead theo ngoại lệ `DEC-01` (SA) — **không phải chữ ký Tech Lead thật**; `OQ-004` (tính hợp lệ ký thay) giữ mở. `Confidence`/Status của `INF` **giữ nguyên** (🔴 / 🟡 Draft) — duyệt từng phần không phải AG2 toàn phần, không phải bằng chứng nguồn mới nên không nâng `Confidence`. | Điều phối dự án (đại diện PO/Tech Lead, dự án chạy thử) | 2026-09-15 | ~4 (giống radar gốc ước lượng của `INF` — chi phí đảo ngược thấp (tài liệu hạ tầng, sửa được qua version mới, chưa IaC thật) · bán kính ảnh hưởng: `sa-3-enablement` dùng `INF` làm đầu vào chuẩn bị go-live · chạm `QAS-008/009/013` Must trực tiếp nhưng chưa cam kết thi công (chưa IaC/diễn tập thật) · không ràng buộc dài hạn tự thân (văn bản sửa được) · không tranh cãi mới, tiếp nối tiền lệ `DEC-12/14/16/19/25/28`) | `INF_e-commerce_v1.0.md` (header, Change Log), `OQ-058` (cập nhật, không đóng), `OQ-054`/`OQ-055`/`OQ-056` (không đổi) |
| DEC-31 (SA) | Viết 4 `ADR` còn nợ cho e-commerce trong khi AG1 chưa ký thật và AG2 (gate của chính GĐ2) chưa tới hạn — tiếp nối `DEC-01…30`. Người dùng (điều phối dự án) tái khẳng định muốn tiếp tục. Viết `ADR-014` (Transactional Outbox, hiện thực hoá hướng đã chọn TẠM ở `DAT §4.1`/`OQ-044`/`DEC-25`, radar 6/10), `ADR-015` (Service JWT ngắn hạn service-to-service, hiện thực hoá PA-3 đã chọn TẠM ở `SEC §2.4`/`OQ-050`/`DEC-28`, radar 5/10 — **`Accepted` bị chặn cứng bởi `OQ-007`, Security chưa có người**), `ADR-016` (Blue-green qua AWS CodeDeploy cho 3 dịch vụ ECS, hiện thực hoá đề xuất `INF §7.2`/`DEC-30`, radar 6/10), `ADR-017` (IaC Terraform, hiện thực hoá đề xuất `INF §11`/`DEC-30`, radar 7/10). **Cả 4 `ADR` giữ `Proposed`** — không cái nào `Accepted` (chưa chữ ký thật; không cái nào đạt radar ≥8 nên không bắt buộc POC, nhưng mỗi ADR ghi rõ điều kiện `Accepted` riêng ở §3 của từng file). Link 4 `ADR` vào `DAT_e-commerce_v1.0.md` (v1.1, §4.1), `SEC_e-commerce_v1.0.md` (v1.1, §2.4/§4 TB3-TB4), `INF_e-commerce_v1.0.md` (v1.1, §7.2/§11/§13) — chỉ thay "ứng viên"/"chưa viết" bằng đường dẫn thật, không đổi nội dung chuyên môn khác, mỗi file bump `+0.1` kèm Change Log "chỉ link ADR, không đổi nội dung". Cập nhật `ADL_e-commerce.md` (17 `ADR`, tất cả `Proposed`) và `DTM_e-commerce.md` (`ASR-004`/`ASR-005` → thêm `ADR-014`; `ASR-007` → thêm `ADR-015`; `QAS-007` → `ADR-016`; ghi nhận `ADR-017` không có `ASR`/`QAS` nguồn trực tiếp, hợp lệ vì gắn `CON-05`/`D9`). Không sửa 13 `ADR` cũ, không sửa nội dung `SAD`/`ASR`/`QAS`/`ICD`/`FAIL`. `Confidence` 🔴 toàn bộ 4 `ADR` mới. | Điều phối dự án (đại diện PO, dự án chạy thử) | 2026-09-15 | ~4 (chi phí đảo ngược thấp — ghi 4 ADR + link tài liệu, chưa có dòng code phụ thuộc · bán kính ảnh hưởng: AG2 phụ thuộc nhưng bản thân việc ghi dưới ngoại lệ thì nhỏ · chạm gián tiếp `QAS-005/007/002/010` Must nhưng chưa cam kết thi công (không ADR nào `Accepted`) · không ràng buộc dài hạn tự thân (nội dung từng ADR đã chấm radar riêng 5–7, không cái nào ≥8) · không tranh cãi mới, tiếp nối tiền lệ `DEC-17/23`) | `ADR-014…017` (toàn bộ), `DAT_e-commerce_v1.0.md` (v1.1), `SEC_e-commerce_v1.0.md` (v1.1), `INF_e-commerce_v1.0.md` (v1.1), `ADL_e-commerce.md`, `DTM_e-commerce.md` |
## Ghi chú
- Dùng chung ID-space `DEC-nn` với bộ BA nhưng là sổ riêng của SA. Bộ BA của e-commerce hiện
có `DEC-01` (và theo ghi chú điều phối, các ngoại lệ gate `DEC-02..07` đang được dùng để chạy
thử dự án — không có Designer, PO ký thay). Sổ SA sẽ cấp số `DEC-01` trở đi độc lập; khi tham
chiếu chéo giữa hai bộ, ghi rõ `DEC-nn (BA)` hoặc `DEC-nn (SA)` để tránh nhầm lẫn.
- Mọi lần bỏ giai đoạn SA (theo `workflow.md §5`) phải ghi một dòng ở đây kèm lý do.