diff --git a/.claude/WAL.md b/.claude/WAL.md
index 405d361d..983e356f 100644
--- a/.claude/WAL.md
+++ b/.claude/WAL.md
@@ -18,9 +18,13 @@ chain:
[x] B3 style ×2 fable: FE 25-SF+10-bẫy+13-C (#53, đĩa trọn) · BE 20-SB+7-BS+18-C (sạch).
2 FLAG xử vào spec v2.1: BS-3 policy-khoá-oan → W5(d) đổi owner-check-handler (khớp
chốt (82) W8-hoãn) · SF-17 ContractDetailContent identical-chưa-khai-MIRROR → W5(iv)
-[!] B4 /fable-clone ×2 style — 4 lane opus (anchor+khuôn ⟂ ô-đo+Goodhart ×2 vai).
- wf: wf_6b7f00c2-c26 · artifact sub-style-review-b4-{fe1,fe2,be1,be2}.md
-[ ] B5 /fable-real reviewer — tổng hợp cuối → plan wave cụ thể "SOLTUON-12-08-2026"
+[x] B4 4-lane: fe1 FIXES-11 (bỏ sót khuôn ContractsListPage + gate typeInt===3) · fe2
+ FIXES-12 (eslint baseline ĐỎ 47/42 ⇒ ô delta; 4 false-green fault-injected) · be1 CHẾT
+ non (be2 phủ anchor 9/9 — khai, không relaunch) · be2 FIXES-15 (style-list tự đánh nhau
+ spec v2.1 → LẬT; BS-3 số thật 12/13 CanDelete=0; T-matrix 13 ca; ghost-wire
+ AuditBehavior). → STYLE-GATE-V2 land (style-gate-v2.md, delta-thắng-nền) + spec v2.2.
+[!] B5 /fable-real reviewer — tổng hợp cuối → plan wave FINAL. wf: wf_bc763d7d-aca ·
+ artifact sub-b5-plan-final.md (mâu-thuẫn-chéo 3 tầng + plan per-wave + Đ-dừng)
[ ] B6 hmw fan-out Opus 5 MAX execute toàn plan (per-wave gate + cicd 2 app + prod verify)
[!] TỒN CŨ — CỬA NGOÀI-GIỜ (anh gật giờ): dọn workspace runner + dispatch verify CI ·
(3B) Gitea cron + compact Vietreport_Master + báo VIETREPORT · đo lại A/059
diff --git a/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/run.md b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/run.md
index dc5f32fc..e6dc1b44 100644
--- a/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/run.md
+++ b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/run.md
@@ -97,3 +97,19 @@ HEAD lúc mở run: ae1dcf4a · HMW-mode ON · lead Opus 5 MAX (default)
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.
diff --git a/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/spec-soltuon-dieu-chinh-hd-12-08-2026.md b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/spec-soltuon-dieu-chinh-hd-12-08-2026.md
index 656cb3aa..f19eaa88 100644
--- a/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/spec-soltuon-dieu-chinh-hd-12-08-2026.md
+++ b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/spec-soltuon-dieu-chinh-hd-12-08-2026.md
@@ -82,9 +82,10 @@ Tổng: **W4/W1/W2/W3 FE-only · W5 BE nhỏ + FE (0 migration)**. DEPLOY CHỜ
`Guid?` — khuôn `PeSoftDeleteFeatures.cs:56-58` (BS-6);
(e) xác nhận sẵn: `Remove` = SOFT-delete qua `AuditingInterceptor.cs:54-62` (H-6 — wave chỉ assert,
đừng đo lại).
- **STYLE-GATE cho B6:** worker MỌI wave phải theo 2 spec-list style đã land cùng folder —
- `sub-style-fe-b3.md` (SF-1..25 + checklist C-1..C-13) + `sub-style-be-b3.md` (SB-1..20 + 18 ô C)
- — lệch luật nào phải kèm trích lời anh cho phép, không có = FLAG khi gate.
+ **STYLE-GATE cho B6 (🔄 v2.2 sau B4):** nguồn = **`style-gate-v2.md`** (delta THẮNG nền; nền =
+ `sub-style-{fe,be}-b3.md`). Checklist ô đo CHỈ dùng bảng trong style-gate-v2 (bảng B3 gốc bị B4
+ chứng có false-green/dương-giả bằng fault-inject). Ca test W5 = **T-matrix T-1..T-13 + phản-ca
+ T-14** trong style-gate-v2 §C (thay danh sách ca ở ✅W5(i) cũ — ca "V1 nháp 2" đã bị chứng TRÙNG).
FE: nút "Xóa phiếu" ở **thanh nút đáy `ContractDetailContent`** (port khuôn
`KhkkDetailContent.tsx:1077-1096` — KHÔNG lấy `KhkkWorkflowPanel` làm khuôn, phần xoá trong đó là
CODE CHẾT S175), hiện khi phase ∈ allow-list + user là Drafter/Admin; mirror ×2 app SHA-pair.
diff --git a/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/style-gate-v2.md b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/style-gate-v2.md
new file mode 100644
index 00000000..83a1bc8e
--- /dev/null
+++ b/.claude/workflows/runs/2026-08-12-S190-soltuon-dieu-chinh-hd/style-gate-v2.md
@@ -0,0 +1,117 @@
+# STYLE-GATE v2 — bản HỢP NHẤT sau B4 (lead synthesize, 2026-08-12)
+
+> **Cách đọc (B1 trỏ-nền + delta):** nền = `sub-style-fe-b3.md` (25 SF + 10 bẫy) + `sub-style-be-b3.md`
+> (20 SB + 7 BS) — VẪN LÀ LUẬT, **trừ các delta dưới đây (delta THẮNG nền)**. Checklist ô đo: DÙNG
+> BẢNG Ở ĐÂY (bảng trong 2 file B3 đã bị B4 chứng có false-green/dương-giả — giữ làm vết, không chạy).
+> Nguồn vá: `sub-style-review-b4-fe1.md` (11 R) · `-fe2.md` (12 R, fault-inject cây tạm) ·
+> `-be2.md` (15 R + T-matrix + đo LocalDB). Lane be1-anchor chết non (skeleton) — phần anchor BE được
+> be2 spot-check chồng lấn **9/9 khuôn SỐNG**, lead chấp nhận không relaunch (khai).
+
+## A. DELTA luật FE (đè lên SF tương ứng)
+
+1. **[fe1-R1] +Khuôn bị bỏ sót:** `fe-admin/src/pages/contracts/ContractsListPage.tsx:141` grid
+ `[340px_1fr_360px]` + `:265` `{!selectedId && }` — đây là khuôn GĐ3-prod ĐỜI TRƯỚC (KhkkListPage
+ tự khai copy từ nó). **Luật mới SF-26:** W2 đặt cây vào panel host PHẢI quyết `bodyMaxHClass`
+ tường minh (mặc định của panel đẻ "2 cuộn lồng nhau" — `PipelineTreePanel.tsx:112-115`).
+2. **[fe1-R2] SF-21/SF-8 bổ vế GATE:** khuôn thật `WorkflowMatrixViewPage.tsx:85-86` là
+ `typeInt === 10 && rawGroup !== null && /^[1-8]$/`. Nhánh `ct` mới PHẢI `typeInt === 3 &&
+ rawCt !== null && /^[1-7]$/` — thiếu vế `typeInt === 3` thì `?type=1&ct=5` lọc HD-* trên bộ
+ non-HĐ = trang trắng.
+3. **[fe1-R3] SF-24 literal sửa:** câu khuôn thật là **"hông truyền ⇒ …"** (6 hit) — gate đo theo
+ NGHĨA: JSDoc opt-in phải có mệnh đề "(kh|h)ông truyền ⇒ giữ nguyên/behavior cũ", regex
+ `grep -cE "hông truyền"` ≥1 per prop mới.
+4. **[fe1-R4] SF-14 sửa tên:** Select của repo = **wrapper `