# SOLTUON-12-08-2026 — YC-029: 5 điều chỉnh GĐ3 sau review prod của anh

phien-logic: L15 (session-15) · window 2 · nhan-phien S190 · ngày 2026-08-12
lệnh anh: YC-029 (sổ yêu-cầu — nguyên văn + 3 ảnh; mô tả ảnh kết tinh: `anh-mo-ta.md`)
HEAD lúc mở run: ae1dcf4a · HMW-mode ON · lead Opus 5 MAX (default)

## Pipeline 6 bước anh chỉ định (kênh CỨNG)

| bước | lệnh | vai | engine | trạng thái |
|---|---|---|---|---|
| B1 | /fable-real | investigator-codebase | single Fable-5 | 🔄 |
| B2 | /fable-clone | reviewer | ensemble ≥3 lane opus | ⬜ |
| B3a | /fable-real | front-end-reviewer-style | single Fable-5 | ⬜ |
| B3b | /fable-real | back-end-reviewer-style | single Fable-5 | ⬜ |
| B4a | /fable-clone | front-end-reviewer-style | ensemble opus | ⬜ |
| B4b | /fable-clone | back-end-reviewer-style | ensemble opus | ⬜ |
| B5 | /fable-real | reviewer (tổng hợp plan) | single Fable-5 | ✅ GO_WITH_NOTES (sub-b5-plan-final.md) |
| B6 | hmw fan-out | Opus 5 MAX execute plan | per-wave | ✅ 5/5 wave commit + verify-local |

## B6 — kết quả 5 wave (commit per-wave, PUSH GOM CHỜ)

| wave | commit | worker | ô máy | ghi chú |
|---|---|---|---|---|
| W4 | `1cc16a2d` | impl-fe (sạch) | 4/4 | 7 dòng resolvePath; lead-gate diff PASS |
| W1 | `09ebd20e` | impl-fe (sạch) | 10/10 | bug A+B fix + slice HD-*; IDE-diag never-read = snapshot dở #68, bác bằng tsc+wire-site |
| W2 | `7b291014` | impl-fe **#53 sau-code-trước-sổ** | 9/9+build+eslint (lead đo) | lead commit on-behalf; diff tự khai delta WorkflowHistoryPanel |
| W3 | `ed3b39ff` | impl-fe **#53 đúng-bước-commit** | 10/10 (artifact trọn) | worker tự bắt ô-2a-không-răng; lead spot-check 4 số khớp → commit on-behalf |
| W5 | `2ae62f3f` | 3-worker: test-spec (RED 13 Fact, #53 trước chạy-đỏ — lead xác nhận compile-RED) → impl-be (GREEN **693/693 vòng-1**, #53 artifact trọn) → impl-fe W5c (sạch, 10/10 — tự bắt bẫy tự-trích-dẫn `<Dialog`) | đủ | lead commit MỘT phát 7 file; gate-reviewer CHẾT NON 0-ruột → **lead-gate on-behalf có khai** (G-1 Roles-shape · G-2 UserInfo.roles thật · G-3 host-404-ổn; FLAG reason=GIỮ-y-khuôn-KHKK · onDeleted=carry) |

**VERIFY LOCAL ④** (`b6-verify-local-synthesis.md`): 5/5 wave hành-vi SỐNG — bug A chết (ct=1→
nhóm01 · 6→06 · 7→07) · bug B chết (1 leaf highlight) · slice per-loại + control ct=99 · layout
hoán-đổi + `?id=` ở-lại-trang + HĐ-ngoài-gói hiện list · pendingMe gọi `/contracts/inbox` thật +
chip + search-khoá-có-chữ · admin 17 leaf + HdTP khoá mã · **W5 end-to-end: nút ẩn@9/hiện@2 →
xoá → list vắng + Đã-xóa có + changelog 1-dòng + IsDeleted** (T26 không dẫm). 2 ô DEFER-có-khai
(leaf-cây GĐ3 + so-số pendingMe — thiếu DỮ LIỆU không phải nghi CODE).

**Tồn sau run:** đo lại `docs/STATUS.md:476` row Tests = DEFERRED-TO-DEPLOY · `[carry:w8-delete-policy]`
· `[carry:w5-host-ondeleted]` · Q1-Q5 chờ anh (spec §Q) · PUSH GOM khi anh cho giờ dọn runner (P0).

## taskList snapshot — B1 (single deep-pass)

- 1 task · role `investigator-codebase` · tier `fable`
- label: `WF investigator-codebase b1-invest s190`
- đề-bài: đối chiếu 5 điều chỉnh YC-029 với code hiện tại (khuôn CHUẨN = KHKK + Duyệt NCC
  đã deploy prod, luật owner S176) + truy root-cause bug menu lẫn (Thứ-3) → PROPOSE spec
  3-mục + chia wave + checklist acceptance ĐO ĐƯỢC.
- artifact: `sub-invest-b1-fable.md` (khung rỗng lượt 1-2, append trong lúc làm — chống #53)

## Stages

*(append theo tiến độ — mới nhất ở cuối)*

- **B1 lượt-1** `wf_c8b1d8ba-4b0` (30 tool-use · 165K tok · ~8'): return RỖNG (#53 —
  "completed without StructuredOutput") nhưng ARTIFACT cứu ~50%: **Thứ-1 layout** (3-panel
  my-contracts vs khuôn KHKK 400px cây-trái + gap `stage3Options`/`onOpenContract`) +
  **Thứ-3 root-cause A+B ĐỦ** (A: WfView 7 loại cùng `?type=3` [ApplicableType] ⟂ accordion
  auto-expand `Layout.tsx:470-485` đọc `type` mù ngữ-nghĩa → mutex đóng/mở nhầm nhóm; B:
  `Đã duyệt` dùng `phase=9` transient làm danh tính → 2 leaf cùng sáng — PE đã chữa bằng
  `view=approved`, `Ct_*` không bắt chước). Thứ-2/4/5 + Đọc-ý + PROPOSE = pending.
- **B1b relaunch-cắt-gọt** (tiep.md §4 tinh thần): lane fable MỚI làm nốt 5 phần pending,
  append CÙNG file `sub-invest-b1-fable.md`; phần đã xong = ground-truth CẤM làm lại.
- **B1b kết quả** `wf_9094b868-9ea` (34 tool-use · 167K tok · ~9'): return RỖNG (#53 lần 2 —
  cùng vân tay "completed without StructuredOutput") nhưng artifact +2 mục DÀY: **Thứ-2**
  (máy ĐÃ per-loại: 7 mã HD-* + 4 cửa guard + PA-A; "lẫn" = 3 lỗ UI [WfView không đọc `ct`
  · bug A+B · comment stale Layout.tsx:141-142]; van-xả mã ngoài họ HD- = CỐ Ý, muốn tuyệt
  đối thì thay QT-HD-V2-001 bằng 7 bản HD-* = việc DATA/Designer 0-code) + **Thứ-4** (6 leaf
  seed GIỐNG HỆT; lệch hành-vi: Luồng-duyệt 🔴 + Danh-sách 🔴 + Đang-duyệt ⚠️ pendingMe +
  Đã-duyệt 🔴 + Đã-xóa ✅; màn duyệt THIẾU nút Xóa [cột AllowApproverDelete sẵn — delta BE
  nhỏ 0-mig] + 3 món cố-ý-không-port khai rõ). Còn pending: Thứ-5 + Đọc-ý + PROPOSE.
- **B1c chặng chót** `wf_09951efa-970`: 3 mục cuối (Thứ-5 admin Designer · Đọc-ý · PROPOSE
  spec/wave/checklist — gợi ý W1 bug-menu → W2 cây-trái → W3 slice-WfView → W4 admin-7-leaf
  → W5 nút-Xóa-BE-nhỏ, lane được quyền chỉnh).
- **B1c KẾT QUẢ** (19 tool-use · 157K · ~11' · return SẠCH): VERDICT READY 3/3. Phát hiện
  đắt: **Thứ-5 ĐÃ CÓ ~95% @S188** (7 menu-row `AwV2_Hd*` seed by-construction Order 11..17 +
  Designer family-slice + route đủ) — thiếu ĐÚNG 1 nhánh `Hd*` trong resolvePath fe-admin
  `Layout.tsx:175-189` ⇒ 7 leaf DROP IM LẶNG #50 (mà comment ngay đó tự cảnh báo #50 — ca
  "vá tệp A quên tệp B" tái diễn). Đọc-ý 4 ĐÚNG / Đ3 CẦN-CHỈNH (không phải #34/#50/#85 mà
  2 lỗ trên-thuốc-#34). Wave chốt: W1 GỘP danh-tính + slice (2 nửa 1 thay đổi) → W2 cây-trái
  → W3 pendingMe → W4 admin-5-dòng (song song) → W5 Xóa V2-aware (khuôn BE = PE
  PeSoftDeleteFeatures.cs:110-114, KHÔNG phải KHKK).
- **LEAD VERIFY B1** (@S190): 4/4 claim load-bearing grep độc lập KHỚP (seed 2296/2306 ·
  awV2Match 0-Hd + control KhkkN · Layout:151-152 nguyên văn · delete-guard so số — đính
  chính path `Application/Contracts/ContractFeatures.cs`; + lead phát hiện thêm: đường xóa
  = `db.Contracts.Remove` ⇒ W5 phải xác minh soft-vs-hard trước khi nới guard). **SPEC ghi:**
  `spec-soltuon-dieu-chinh-hd-12-08-2026.md` (3-mục H21).
- **B2 phóng** `wf_d9a14945-190` — /fable-clone reviewer ensemble 3 lane opus:
  label `WF reviewer b2-lens1-correct s190` (correctness W1/W2 + regression) ·
  `WF reviewer b2-lens2-khuon s190` (fidelity khuôn + scope + đọc-ý cần hỏi lại anh) ·
  `WF reviewer b2-lens3-accept s190` (acceptance chạy-được + Goodhart + W5 khuôn PE).
  Artifact: sub-review-b2-lens{1,2,3}.md.
- **B2 KẾT QUẢ** (85 tool-use · 486K tok · ~14'): lens-1 FAIL-11 (sạch) · lens-2
  PASS_WITH_FIXES-12 (#53, artifact cứu) · lens-3 FAIL-11 (sạch). Hội tụ 8 cụm — 2 BLOCKER
  tiền-đề v1 (bỏ-type=3 gây trang-trắng · pendingMe 0-hit BE) + W5 sai khuôn kép (KHKK cấm
  approver-delete + anchor "nút Xóa panel KHKK" = CODE CHẾT S175) + acceptance Goodhart
  (grep thiếu -F · ô xanh-trên-ca-chết · 9/20 ô không chỗ chạy) + xác nhận DƯƠNG root-cause
  A+B HELD 3/3 + H-1..H-6 khỏi đo lại. → **SPEC v2** land (GIỮ type=3&ct= · W3 đổi-endpoint
  inbox · W5 khuôn KHKK thuần + changelog T26 + authz + chặn DaPhatHanh · Q1-Q5 đánh số ·
  mục ④ nấc-đo-local + DEFERRED-TO-DEPLOY) + `b2-review-synthesis.md`. Thứ tự wave mới:
  **W4 → W1 → W2 → W3 → W5**.
- **B3 phóng** `wf_f71dc3e3-3ce` — /fable-real ×2 vai style (anh chỉ định):
  label `WF fe-style b3-speclist s190` (SPEC-LIST STYLE FE — khuôn comment-header tự-khai ·
  đặt tên opt-in · TanStack idiom · mirror-pair kỷ luật · thanh-đáy KhkkDetailContent) ·
  label `WF be-style b3-speclist s190` (SPEC-LIST STYLE BE — guard-order · exception-map ·
  comment T26 · changelog idiom · policy per-action · test style 680→680+N).
  Artifact: sub-style-{fe,be}-b3.md.
- **B3 KẾT QUẢ** (73 tool-use · 342K · ~13'): FE #53-return-rỗng nhưng artifact TRỌN
  (25 SF + 10 bẫy-đã-đo + 13 ô C — đặc sản: SF-16 window.confirm-không-Dialog · bẫy-1
  KhkkWorkflowPanel xóa = xác-chết-còn-máy · SF-17 ContractDetailContent identical 403/403
  dòng nhưng CHƯA khai MIRROR header) · BE return sạch (20 SB + 7 BS + 18 C — 2 shape
  controller-authz song song CÓ CHỦ ĐÍCH · enum-trap 98/99>5 · Reason 3-tầng 2000-char).
  **Lead xử 2 FLAG vào spec v2.1:** BS-3 (policy-403-trước-owner-check + ngược chốt (82))
  → W5(d) đổi thành owner-check-handler, policy dời W8 · SF-17 → W5(iv) thêm dòng tự-khai
  MIRROR. BS-1 (docs/CLAUDE.md §7 "comment English" stale vs 100% deployed comment Việt)
  → NEXT-em bookend, ngoài scope wave.
- **B4 phóng** `wf_6b7f00c2-c26` — /fable-clone ×2 vai style, 4 lane opus:
  `WF fe-style b4-anchor s190` · `WF fe-style b4-odo s190` (chạy thử C-1..13 baseline +
  2 biến thể grep/rg) · `WF be-style b4-anchor s190` (soi cả SB-3 policy thành thừa sau
  v2.1?) · `WF be-style b4-odo s190` (T-matrix hợp nhất ca test + đo CanDelete LocalDB).
  Artifact: sub-style-review-b4-{fe1,fe2,be1,be2}.md.
- **B4 KẾT QUẢ** (101 tool-use · 588K · ~15'): fe1 PASS_WITH_FIXES-11 (2 MAJOR: bỏ sót
  khuôn `ContractsListPage.tsx:141,265` [bodyMaxHClass] · SF-21 thiếu vế gate typeInt===3;
  0 anchor chết, 0 luật tự-chế) · fe2 PASS_WITH_FIXES-12 (BLOCKER C-1 eslint baseline ĐỎ
  47/42 → ô DELTA; C-3/C-7/C-13 false-green CHỨNG bằng fault-inject cây tạm; C-9 0-răng
  drift 7 token → -oE sort-u) · **be1 CHẾT NON** (skeleton 3-heading — #53 class; be2 phủ
  anchor chồng lấn 9/9 SỐNG ⇒ lead chấp nhận không relaunch, KHAI) · be2 PASS_WITH_FIXES-15
  (🔴 R-1 style-list ĐÁNH NHAU spec v2.1 [SB-13/14/18+C10/C13 còn đòi policy] → LẬT ·
  R-2 BS-3 xác nhận SỐ THẬT: `Contracts` 12/13 role CanDelete=0, Drafter=0, control
  KHKK Drafter=1 · R-7 ca "V1-nháp-2" TRÙNG DangSoanThao(2) → thay phase-3 legacy ·
  R-13 ghost-wire comment `AuditBehavior` — file KHÔNG tồn tại · T-matrix 13 ca + phản-ca).
  → **STYLE-GATE-V2** land (`style-gate-v2.md` — delta-thắng-nền + checklist thay-thế
  fault-inject-proof + T-matrix) + spec **v2.2** trỏ sang.
- **B5 phóng** `wf_bc763d7d-aca` — /fable-real reviewer tổng hợp cuối:
  label `WF reviewer b5-tonghop s190` — rà mâu-thuẫn CHÉO 3 tầng {spec v2.2 ⟂ style-gate-v2
  ⟂ T-matrix} + PLAN FINAL per-wave worker-cầm-làm-được + điều kiện dừng/leo-thang Đ-1..
  Artifact: sub-b5-plan-final.md.

## Nửa sau cửa-sổ (bổ hồi-tố @S191 — ctx-verifier cờ-4: 5 artifact mồ côi, run.md dừng ở B5)

- **B5 KẾT QUẢ:** GO_WITH_NOTES → plan final per-wave (`sub-b5-plan-final.md`).
- **B6 SHIP 5 wave:** W4 `1cc16a2d` (17 leaf admin) · W1 `09ebd20e` (bug menu A+B + slice HD-*) ·
  W2 `7b291014` · W3 `ed3b39ff` (pendingMe đổi-endpoint) · W5 `2ae62f3f` (xoá đồng-khuôn KHKK
  5-nấc + 13 test-before RED→GREEN). Workers #53 3/6 — lead đo-đĩa commit on-behalf, mất 0 việc.
- **YC-030 (anh phán Q1-Q5):** Q1 remake ContractListPanel KHKK-thuần (`sub-wq1*`) · Q3 Mig 73
  `AddContractEndedByLevelFinalize` + ApproveV2 finalize + máy-duyệt panel-3 ×5 host
  (`sub-wq3-test.md` + `sub-wq3b-fe.md`) · Q5 data-op Dev+prod. Commit `69860362`(BE) +
  `59cb1217`(FE) + `091073f9`(docs).
- **DEPLOY:** CI **#600 success** ~11m · test gate **697** (45D+652I) · Mig73 prod-top · bundle
  rotate ×2 byte-match CI↔prod · smoke 200/401 · cicd-monitor **PASS 6/6** (`sub-cicd-deploy-yc030.md`)
  + lead re-verify độc-lập KHỚP. Đĩa VPS dọn 4.7→26.6GB trước push (#89).
- **@S191 verify-lại toàn bộ qua /tiep:** 6/6 KHỚP (bundle ×2 · Mig73 · Q5=7 · smoke 401 · test 697 local).
