# RUN — W7 KHKK: Bản cứng `Hdc_*` 7 leaf — 1-MỐC (S161→S162, 2026-07-29/30)

> Wave cuối build (5/6). Spec: `../2026-07-29-S160-khkk-dryrun-plan/spec-wave-w7-ban-cung-hdc-29-07-2026.md` (**ĐÃ RÚT 1-MỐC @S161** — anh chốt verbatim "Upload file cứng lên -> Là xem như xong": 0 enum-extend, 1 badge has(SealedCopy), note tùy chọn, b.19/20/21 làm trên giấy). W1-W3+W6 ĐÃ SHIP.
> Build song song hợp lệ (đồ thị plan-cha); VERIFY prod cần HĐ DaPhatHanh → sau W5.

## taskList snapshot

| # | Stage | Vai | Trạng thái |
|---|---|---|---|
| 1 | Gate 5-anchor §③-A (mở tươi) | lead | [ ] |
| 2 | Đợt-1a BE nhỏ: param `type` ListContractsQuery+controller (F-C1) + DTO +1 cờ `hasSealedCopy` | hmw `implementer-backend` | [ ] |
| 3 | Đợt-1b FE: `HardCopiesPage` ×2 app + 4-place re-point 7 leaf `Hdc_*` khỏi coming-soon + panel upload 1-purpose + badge + LevelOpinions readonly | hmw `implementer-frontend` | [ ] |
| 4 | Đợt-2: test-specialist 3 test PIN §③-B | hmw `test-specialist` | [ ] |
| 5 | Lead: suite + build ×2 + sweep | lead | [ ] |
| 6 | Reviewer | `reviewer` | [ ] |
| 7 | Commit + push + cicd (menu 142 GIỮ — chỉ re-point staticMap) | lead + `cicd-monitor` | [ ] |

## Ràng buộc
- 🔴 1-MỐC @S161: 0 enum-extend (SealedCopy=3 sẵn) · 1 badge · note TÙY CHỌN · KHÔNG InitialSigned/CoverChecklist · UI ghi rõ ký/đóng-dấu NGOÀI hệ thống.
- 🔴 Badge KHÔNG từ ScannedSigned (F-C6 #71) · KHÔNG lọc client-side pageSize:100 (F-05) · authz O-A giữ (KHÔNG policy mới).
- 🔴 Mirror mù: Hdc = 7-leaf-per-type (KHÔNG 6-leaf grounding cũ).

## Stages — kết quả (S161→S162)

- **Gate 5-anchor**: [x] 5/5 (mở tươi trước đợt-1).
- **Đợt-1** (2 lane song song, file-disjoint): [x] BE CLEAN 5/5 — 3 file +31/−4, bắt lỗi memory-pack lead (`IsDeleted` không tồn tại trên `ContractAttachment` BaseEntity) · [x] FE #53 KHÔNG để lại sub-md nhưng mọi thứ LAND (SHA-pair, build ×2, coming-soon 0/0) — review đo thẳng đĩa bù.
- **Đợt-2 test**: [x] CLEAN — `sub-test-specialist-0.md` (17.5K, 12 mục): 587→**590/0**, 3 PIN khớp spec §③-B từng chữ, probe vi-phân `_TempMutationProbe.cs` tạm 5/5 phân biệt bản-hỏng rồi XOÁ (verify 2 chiều: git sạch + Infra 545≠548); vai tự bắt claim-trước-đo của mình → truncate → đo lại.
- **Reviewer**: [x] PASS-có-điều-kiện — `sub-reviewer-3.md` §1-§4 đủ evidence (hợp-đồng 4/4 + tsc ×2 · boundary O-A 4/4 · map 7 loại 3 nguồn), §5 VERDICT lead finalize on-behalf (return #53 stale hơn đĩa). FLAG-1 untracked → gate F-0 ĐÃ XỬ · FLAG-2/3 comment ĐÃ VÁ (SHA-pair `C7DCC20B` giữ) · +31/−4 errata ghi vào sub-md BE · §3.1 an-ninh (attachment 0-rào hiện-trạng O-A) chuyển hồ sơ W8-authz.
- **Ship**: [x] commit `3119cb9` — cicd **PASS 3/3** (CI #431 590/590 · sqlcmd 142+69 GIỮ + pool-recycle-proof · bundle rotate 4/4 marker khớp-từng-đồng + smoke 200/200/400/404). 1 treo có-chủ-đích: `hasSealedCopy` per-item UNVERIFIED-LIVE (prod 0 HĐ, N=0) → tự đóng ở E2E. Tổng hợp: `ship-synthesis.md`. **W7 ĐÓNG.**
- **Bài học lượt này**: (i) PS 5.1 `git commit -m @'…'@` chứa `"` lồng → native-arg VỠ ("error: pathspec") NHƯNG lệnh sau `;` vẫn chạy — push đẩy wal-commit trong khi code-commit chưa tồn tại ⇒ message có quote = `git commit -F <file>`, và ĐỪNG chuỗi `commit; push` một lệnh; (ii) memory-pack slice lead soạn cũng là giả-định — lane BE đo và bác đúng.
