# run: 2026-07-29-S160-khkk-dryrun-plan — DRY-RUN toàn trình đến Hợp đồng cứng (Plan cha + spec/checklist per-wave)

> Mở @S160 2026-07-29 ~15:45 (L8 window-2, ngay sau chốt đóng đầu việc arc-2).
> 🔴 Sub-file ghi-đĩa-TRONG-lúc-làm (chống #53). RAW `sub-*` ⟂ VERIFIED `*-synthesis.md`/spec (lead viết).

## 🔴 LỆNH ANH (verbatim, 2026-07-29 @S160)

> "Hiện tao quyết định sẽ dry-run luôn cho đến hợp đồng cứng.
> Hợp đồng cứng trong folder D:\Dropbox\CONG_VIEC\SOLUTION\FORM
> Còn quy trình và cách đặt tên: D:\Dropbox\CONG_VIEC\SOLUTION\QUY_TRINH
> Spec vừa rồi build đúng rồi đó.
> Giờ cho 2 /fable-real invest bổ sung lại cái spec củ để chạy dry-run luôn đến hợp đồng cứng -> Ra cái spec-chi-tiết-cách-làm-checklist-cho cụ thể từng wave (Mỗi wave cho 1 spec-chi-tiet-cach-làm cu thẻ và checklist )luôn. (Lập 1 cái plan cha cho cái này luôn).
> /fable-clone review lại.
> /fable-real review lại chốt cuối.
> Sau đó cho Opus 5 MAX chạy hwm dry-run hết các wave ->Dựa vào Plan cha chạy từ spec cụ thể cho từng wave và kiểm tra luôn."

**Đọc-hiểu chốt (lead — vá drift theo lane-1 F-09/F-20 + spec `:27`):** ① spec KHKK cũ = RATIFIED, chỉ BỔ SUNG không viết lại · ② phạm vi mở rộng theo ranh ĐÃ CHỐT @S159 (spec `:27`): GĐ2 = b.7→12 (KHKK, spec cũ W1-W5; b.7 email BỎ — Q8 ĐÓNG) **+ GĐ3 Duyệt hợp đồng = b.13→18 (tận dụng Contract V2) + GĐ4 Hợp đồng cứng = b.19→21, ký cứng UPLOAD-ONLY (`Hdc_*` skeleton → trang thật)** — 🧊 bản đầu run.md này viết "GĐ3 (b.13→21)" = SAI (13→21 là span verdict-LAI, không phải span GĐ3). Nhãn GĐ2: "Đề xuất ký kết hợp đồng" (spec `:27`, đời sáng @S159) → **superseded "Kế hoạch ký kết HĐ"** (PAUSE-1 chốt cuối + prod `Khkk_G1` seeder) — Plan cha dùng nhãn MỚI, class/bảng English `ContractSigningPlan*` GIỮ — toàn trình chạy được end-to-end dạng dry-run để mọi người bấm thử + góp ý (khớp ❹ @S159) · ③ deliverable đợt này: **1 Plan cha + mỗi wave 1 spec-chi-tiết-cách-làm + checklist** · ④ lệnh này ĐỒNG THỜI là lời giải cho gate "Wave 5 chạm HĐ ⇒ hỏi lại anh" (HANDOFF) — anh chủ động mở; riêng LỖ HỔNG authz S156 vẫn phải khoanh vùng đưa vào spec cho review chốt, KHÔNG tự coi là được sửa hay được bỏ qua.

## Nguồn PIN

| Nguồn | Path | Ghi chú |
|---|---|---|
| Spec KHKK cũ (RATIFIED) | `runs/2026-07-28-S157-ke-hoach-ky-ket-hd/spec-ke-hoach-ky-ket-hd-28-07-2026.md` | +NOTE W1 @S160 (Khkk_* tái dùng, dark-launch ĐẢO) |
| QT trình ký 21 bước | `runs/2026-07-28-S157-ke-hoach-ky-ket-hd/src-QT-TRINH-KY-HD.txt` (14.425B) | extract S157 từ QUY_TRINH docx |
| FO-002.01 Bảng kiểm tra HĐ | `runs/2026-07-28-S157-ke-hoach-ky-ket-hd/src-FO-002.01-bang-kiem-tra-HD.txt` (21.287B) | checklist per-phòng |
| RG-001 **v02** mã số HĐ | `runs/2026-07-29-S160-khkk-dryrun-plan/src-RG-001-v02-ma-so-hd.txt` (2.907B) | extract @S160 — DIFF với forms-spec/codegen repo (repo parse Phase 0) |
| Catalog 8 form | `docs/forms-spec.md` + FORM folder (6 template .doc/.docx/.xlsx còn lại) | form-engine đã render 8 form |
| Verdict LAI b.7→21 | STATUS ✅S155→S158 mục ② | b.13→21 TÁI DÙNG Contract V2 · b.7→12 DỰNG MỚI |

## taskList snapshot

| # | Stage | Vai / cách | Trạng thái |
|---|---|---|---|
| 1 | Scaffold + extract RG-001 v02 | lead | [x] |
| 2 | invest lane-1: NGUỒN/QUY-TRÌNH GĐ3-GĐ4 (b.13→21 chi tiết + RG-001 v02 diff + FO-002.01 checklist-map + "hợp đồng cứng" = gì cụ thể) | `/fable-real investigator-codebase` #1 | [x] |
| 3 | invest lane-2: CODEBASE dry-run map (PE→KHKK→Contract→Hdc gap-map + reuse Contract V2 + authz khoanh vùng + dry-run mode + wave structure đề xuất) | `/fable-real investigator-codebase` #2 | [x] |
| 4 | Plan cha + spec-chi-tiết + checklist per-wave | lead (từ 2 invest + spec cũ) | [x] |
| 5 | Review ensemble — 6 lane reviewer `tier:'opus'` (run `wf_0eb994aa-a63`) | `/fable-clone reviewer` | [x] |
| 5b | Synthesis + lead-verify 5 claim (5/5 CONFIRMED đĩa) → `review-synthesis-clone-s160.md`; disposition: 2 owner-gate + ~18 fix | lead | [x] |
| 5c | Owner-decision (AskUser): **W8=O-A để mở** + **đổi tên test khớp repo** | anh @S160 | [x] |
| 5d | Fix NHÓM-2 (13 spec-edit: W8→O-A biên bản · seeder UPGRADE · W3 2-write-path+changelog-KHKK+bỏ-port · W6 view-per-HĐ-3-site · W7 param-type · tên test khuôn repo · dựng WF 3-trạm · disclose §4.7) | lead | [x] |
| 6 | `/fable-real reviewer` chốt cuối — **VERDICT GO-WITH-FIXES** (reviewer #53 chết sau Trục-1+Trục-2; lead finalize on-behalf từ đĩa: 12/13 fix landed-đúng + 30 anchor CONFIRMED + 0 HIGH leftover; 3 dư-lượng nhỏ DR-1..3 + 1 check DR-4) | `/fable-real` | [x] |
| 6b | Vá 3 dư-lượng DR-1 (W7 badge bảng §①) · DR-2 (W3 anchor#5 →:356-360) · DR-3 (W1 anchor +:1256-1257) + check DR-4 (W6 admin-inbox) | lead | [x] @S161 — 4/4 xong + 1 site CÙNG-LỚP lòi thêm `plan-cha:75` (gỡ `ScannedSigned` khỏi bộ derive option-A, F-C6); DR-4 chốt = spec-hoá nhánh ADMIN (mirror PE `:731-748`) vào W6 §②-4 + 1 vế acceptance admin-inbox |
| 7 | hmw Opus-5-MAX thi công từng wave + kiểm (SAU vá DR) | hmw | [ ] |

## Ràng buộc mang theo (từ sổ bền)

- 🔴 **GATE 5-ANCHOR** (HANDOFF, reviewer đề @S157): trước thi công MỖI wave mở 5 anchor bất kỳ; ≥1 trượt ⇒ chấm lại TOÀN BỘ anchor wave đó. → nhúng vào Plan cha.
- 🔴 **Authz HĐ** (S156): `ContractWorkflowService.cs:48-66` Reject-trước-guard + `ContractsController.cs:13` `[Authorize]` trần 22 endpoint ghi — dry-run mở menu cho mọi người ⇒ phải khoanh vùng + đề phương án trong spec (review chốt quyết).
- 🔴 **KHÔNG SQL tay cho menu** (gotcha #84) — mọi thay đổi menu/permission qua seeder.
- 🔴 Khkk_* + Hdc_* skeleton ĐÃ TỒN TẠI prod (arc-2) — tái dùng, ComingSoon → trang thật; seeder skip-existing.
- Acceptance đo-được kiểu spec cũ: pin N + TÊN test (H5), tránh literal tự-lão-hoá (neo TÍNH-CHẤT).

## Stages

- [x] 1. scaffold + extract (15:45-15:50)
- [x] 2+3. 2 lane `/fable-real investigator-codebase` model=fable — XONG + LEAD-VERIFIED (lane-1 25 mục 24.222B END-ok, 3 claim verify byte-đúng · lane-2 8 mục 32.242B END-ok, 4 claim verify byte-đúng + tự bẻ 2 grounding sai của đề bài [Hdc 7-leaf-per-type · PE không per-action-attribute])
  - lane-2 lượt-1 ~16:03: **#53 garble** → đĩa cứu §0-§2 → SendMessage-resume làm nốt Q3-Q7 sạch. Tally #53 phiên: ×1.
  - Lead đo bổ sung @S160: **prod Contracts = 0 active + 0 deleted** (admin-bypass `:298/:440`; sổ S156 "7 HĐ V1" STALE) · login prod field `accessToken` · `KeHoachKyKet` const có nhưng NGOÀI All.
- [x] 4. PLAN CHA + 7 SPEC-WAVE (lead viết sau verify — H21 pipeline): `plan-cha-dry-run-toan-trinh-29-07-2026.md` + `spec-wave-{w1-schema-designer,w2-crud-nhap,w3-duyet-3-tram,w5-cau-khkk-hd,w6-duong-ong-hd-v2,w7-ban-cung-hdc,w8-authz}-29-07-2026.md` (W4/W9 DEFER ghi trong plan cha). Wave-numbering: GIỮ W1-W5 spec ratified + nối W6-W8; 12 default đảo được; 1 mig duy nhất (69/W1).
- [x] harvest M9: entry S160 engine-label `real-fable-S160` vào diary investigator-codebase (curate cùng lượt 23.285→22.452B, 2 entry S155 → archive moved-not-cut)
