# RUN 2026-07-31-S164-4gd-khkk-fanout — Chuỗi 4 GĐ theo SOL-CCM-SP-002

> Lệnh owner @S164: B0 draft → B1 fable-real invest spec-tổng-quát + fable-clone review → B2 per-cụm-3-wave fable-real invest sâu (spec-chi-tiết + checklist) + fable-clone review → B3 fable-real review chốt cuối → B4 fan-out Opus 5 MAX bám spec + checklist. + "yêu cầu là dry-run luôn" + "Tạo luôn các cái master data danh mục hợp đồng".
> Nguồn PIN: `draft-yeu-cau-owner.md` (Bước 0) + memory `sol-ccm-sp002-signing-matrix`. HMW marker ON (check @S164). Lead = Fable (anh /model giữa phiên); worker-pin: sub opus+max; /fable-real qua spawn-param tier (H23 đo S126).

## taskList snapshot

| # | bước | vai/engine | trạng thái |
|---|---|---|---|
| 0 | Draft yêu cầu owner | em-main | ✅ `draft-yeu-cau-owner.md` |
| 1a | Spec tổng quát các wave | /fable-real invest | ✅ att-2 (att-1 ngược-#53 0-byte; att-2 A-D đầy 18.277B, E/F lead-compile; spot-check 4/4) |
| 1b | Review spec tổng quát — 3 lane `WF reviewer lens{1,2,3} s164` | /fable-clone review (tier:opus ×3) | ✅ 3/3 sạch 0-empty · 41 finding thô → synthesis 14 vá + 2 OG mới → **spec v2** |
| 2.c1 | Cụm-1 K1+K2+K3 chi tiết — `WF invest-fable b2c1-att2 s164` | /fable-real invest | ✅ att-2 33.048B 5/5 section 17 test (att-1 skeleton-472B chết; luật ĐAN-XEN cứu) — 3 QUYẾT + 1 mâu-thuẫn OG-3 (K3 phải port finalize) + roster 1 ô ⚠️ Trưởng |
| 2.c2/c3 | Cụm-2 K4+K5+K6 · cụm-3 K7+K8 chi tiết | /fable-real invest | ✅ (tách 2 row 2.c2/2.c3 dưới — row kép này vá checkbox-ma @S166 theo ctx-verifier cờ③) |
| 2.c1-r | Review cụm-1 — 3 lane `WF reviewer c1-{evi,cov,seq} s164` | /fable-clone (opus ×3) | ✅ 3/3 sạch · L1 2-blocker+GỠ-(i)-:342 · L2 FAIL 3H (menu-ngoài-All chết · ép-false ≥3 site sót · KhkkCreatePage mâu thuẫn) · L3 PWB 5H → **spec-cum1-final 12 vá + OG-9** |
| 2.c2 | Cụm-2 K4+K5+K6 — `WF invest-fable b2c2 s164` | /fable-real invest | ✅ SẠCH 5/5 (K4 13v·K5 6v·K6 4v, 0-mig; BÁC 2 tiền-đề lead có chứng) |
| 2.c2-r | Review cụm-2 — `WF reviewer c2-{evi,cov,seq} s164` | /fable-clone (opus ×3) | ✅ l1 PWF 2-MAJOR · l2 PWF 3H/7M · 🔴 l3 CHẾT-RUỘT 188B (opus đầu tiên gãy — phủ bù lead-note có khai) → **spec-cum2-final 15 vá** |
| 2.c3 | Cụm-3 K7+K8 — `WF invest-fable b2c3 s164` | /fable-real invest | ✅ SẠCH 22.9KB (K7 8v/8test BÁC tiền-đề 3-lỗ-S156-đã-vá · K8 17 bước · HỐ-1-KHKK mới) |
| 2.c3-r | Review cụm-3 — `WF reviewer c3-{evi,cov,seq} s164` | /fable-clone (opus ×3) | ✅ 3/3 sạch · L1 7/7-ĐÚNG PWF 4M · L2 FAIL 5H (K8 chưa-chạy-được-như-viết) · L3 FAIL 4H (authz hội-2-khóa · Contracts.Create 0-vai) → **spec-cum3-final 16 vá** |
| 3 | Chốt spec cuối — `WF review-fable b3-chot s164` | /fable-real review | ✅ **GO-WITH-SPEC-FIXES**: GO 9/10 (K8 by-design) · 8 mâu-thuẫn (3 nặng A-1/A-4/A-5) · 0 vá-đè-vá/43 · build-order K1→K2→K3→K4a→K4b→K5→K4c→K6→K7→K8 · 8 fix lead ÁP XONG |
| 4.K1 | Build K1 danh mục HĐ (BE+FE+test) | wf_2569b79b p1 · wf_2e08ba77 p2 · implfe · wf_1fb9f309 | ✅ @S165: 3 lane trọn · gate `sub-reviewer-gate-k1.md` **PASS-WITH-FLAGS 9f** · F4/F7 vá + T5b · Mig 70 áp LocalDB |
| 4.K2 | Build K2 (BE+FE+test) | 4 lane + lead-solo đóng | ✅ @S165: gate PASS-WITH-FLAGS 10f · commit `0779f2d` · cicd PARTIAL-5/6-deploy-khỏe (mục-4 chân-lý-rỗng chờ phiếu thật) |
| 4.K3 | Build K3 (8 wf nhóm + finalize + designer) | chẻ-nhỏ: nhịp-1-lane + nhịp-2/3-lead + FE-lane + test-lane | ✅ @S165: gate PASS-WITH-FLAGS 8f/0-blocker · commit `15349e8` · cicd **re-verify @S166 6/6 PASS** (lượt đầu chết-limit 18:50, artifact 2640B §0; mốc recycle-proof w3wp PID 5364 @17:11:25) · F-1 checkbox-opt-out → row 4.F1 dưới |
| 4.F1 | F-1 checkbox opt-out `applyLevelFinalize` màn duyệt (gate-K3 MAJOR) | lead + reviewer-f1 | ✅ @S166: mirror `PeWorkflowPanel` + DTO expose cờ level + types ×2 app · commit `7a903cf` · deploy #437 (gate-K4a PRE đo post-F-1 — STATUS `:479` lineage) — `sub-reviewer-f1-checkbox.md` |
| 4.K4a+K4b | Build K4a (bộ-sinh `Khkk_G*` +49 key/+196 policy) + K4b | hmw | ✅ @S166: commit `88e7ecf` · cicd **7/7** — gate: `sub-reviewer-gate-k4a.md`/`-k4b.md` · `sub-cicd-verify-k4ab.md` |
| 4.K5+K4c | Build K5 (forward-provision `lines[].contractId ∪ pe.contractId`) + K4c | hmw | ✅ @S166: commit `ce35f90`+`e202393` · cicd **5/5** (+1 Fact K4c server-side filter) — gate: `sub-reviewer-gate-k5.md`/`-k4c.md` · `sub-cicd-verify-k5-k4c.md` |
| 4.K6 | Build K6 | hmw | ✅ @S167: gate PWF-5 (MAJOR-1 số-đếm-comment FIXED) · commit `1c6d77a` · cicd **#440 PASS 5/5** (admin ROTATE `Ig1R5tAh` · eoffice FROZEN-lành-tính cmp-byte · marker-ÂM route-68-giữ) — `sub-reviewer-gate-k6.md` · `sub-cicd-verify-k6.md` |
| 4.K7 | Build K7 bridge KHKK→HĐ (hội-2-khóa + `Line.ContractId` + grant seeder) | hmw ×5 lane | ✅ @S167: 13-file +2241/−46 · gate PWF-**10**/0-blocker (F-8 neo-số-dòng→tên-hàm FIXED ×3 chỗ) · commit `aaed699` · cicd **PARTIAL-live-sạch** (run `aaed699` CANCELLED-cơ-chế 2-push-sát → ship #442, gotcha **#86**; seeder `"0 added + 2 upgraded"` verbatim + CanCreate 1→3 + row-13-giữ) · suite **639/0** Δ+17 — `sub-implbe-k7.md` · `sub-implfe-k7.md` · `sub-test-k7.md` · `sub-reviewer-gate-k7.md` · `sub-cicd-verify-k7.md` |
| 4.GĐ3 | Lane GĐ3 cây-4-folder ĐỒNG-NHẤT (slot 55 → 63) | implfe lane → lead-solo | ✅ **@S168: owner chốt (b)=D + "mở rộng"** ⇒ áp CẢ 3 trang Panel-3 · commit `081557b` · gate PWF-10/0-blocker (F-1 MAJOR max-h vá bằng prop `bodyMaxHClass`) · cicd #444 — `sub-implfe-gd3.md` + `sub-reviewer-gate-gd3d.md` |
| 4.K8 | K8 dry-run E2E toàn trình | **LEAD-SOLO script** (0 spawn ⇒ 0 spawn-record là ĐÚNG, không phải silent-miss) | ✅ **@S168 PASS TOÀN TRÌNH 2 NHÁNH** — B0 fail-closed PASS (backup 27,8MB · roster LIVE 3 workflow · form-14-dòng đủ chủ) · GĐ1 `PE/2026/A/052` finalize-CCM + `A/053` full-CEO · GĐ2 `KHKK/2026/001`+`002` qua **endpoint Lines-editor MỚI** (🔴 blocker phát-hiện-bởi-chính-dry-run + vá + ship `0bfadc2` cùng phiên) · bridge K7 → **HĐ ĐẦU TIÊN prod** DaPhatHanh · GĐ4 bản-cứng `hasSealedCopy=True` · **QĐ9 4/4 vế** · B15 sổ-ID + seq-cháy · B16 không kích hoạt — `sub-k8-dryrun.md` |
| 5 | Dry-run E2E + **bộ dữ liệu test toàn trình fx3** | LEAD-SOLO | ✅ **@S168** — B0-form 14 dòng đủ chủ (hết chặn); fx3 danh-tính TEST 100% (`test.drafter` soạn+bridge · `ADMIN_TEST` duyệt-thay ×9): PE/2026/A/054 → KHKK/2026/003 → HĐ `ZZTEST-K8-2/…/01` DaPhatHanh → bản cứng |

## Stages

- [x] B0 — draft tổng hợp 10 lời chốt + model 4GĐ + 8 nhóm + scope 5 mảnh + ràng buộc khuôn + nền kỹ thuật + 8 treo
- [x] B1a — att-1 wf_22e8949b-afa CHẾT ngược-#53 (207K tok, 0 byte) · att-2 wf_bc04352b-6a4 A-D đầy + spec-file lead kết tinh `spec-4gd-khkk-tong-quat-31-07-2026.md` (8 verdict · 8 wave K1-K8 · 3 cụm · OG-1/2/3/5)
- [x] B1b — wf_8eb13087-5f9 3/3 lane sạch (l1 FAIL 5H · l2 6/6 chịu-lực ĐÚNG +l2-F1 rào-1-PE · l3 FAIL 6H + bác 6 nghi) → `b1b-review-synthesis.md` 14 vá + OG-6/OG-7 → spec v2 (hội tụ 2-lane: admin-hide tập-key tường minh; ApprovalGroup K2-chủ + backfill=1; 8 designer có phép đo; nguồn K1 = 7 ảnh [file đĩa 6-trang không bảng])
- [x] B2 — 3 cụm TRỌN: c1 (33KB + 12 vá) · c2 (5/5 + 15 vá; l3 chết-ruột phủ-bù) · c3 (22.9KB 7/7-đúng + 16 vá) = 43 vá tổng, 3 spec final
- [x] B3 — GO-WITH-SPEC-FIXES (sub-review-fable-b3.md 6 section; 3 anchor re-grep đĩa khớp; 8 fix áp vào 3 spec) — SPEC ĐÓNG BĂNG cho B4
- [x] B4 — fan-out build **8/8** (K1..K7 ✅ @S165-S167 gate per-wave PWF 9f/10f/8f/…/PWF-5/PWF-10 + **K8 ✅ @S168 dry-run PASS**; lane GĐ3 ✅ @S168 owner chốt D — ledger vá 2 lượt: @S168-sáng theo ctx-verifier cờ②, @S168-close theo H2 F-COV-2 [bệnh *bản-đồ mù* tái phát TRONG CÙNG PHIÊN sau lần vá đầu ⇒ ledger phải cập-nhật NGAY khi wave đóng, không gom cuối])
- [x] B5 — dry-run E2E ✅ @S168 (PASS toàn trình 2 nhánh + bộ fx3; sổ `sub-k8-dryrun.md`)
