# B2 synthesis — ensemble reviewer 3-lane (wf_d9a14945-190) → spec v2

> Lead refute+synthesize @S190. Lens-1 FAIL-11 (return sạch) · lens-2 PASS_WITH_FIXES-12 (#53,
> artifact cứu trọn) · lens-3 FAIL-11 (return sạch). 34 finding thô → hội tụ 8 cụm, 0 mâu thuẫn
> giữa lane; 2 BLOCKER được ≥2 lane độc lập cùng bắt bằng 2 phép đo khác nhau = chắc.

## Cụm hội tụ → hành động (đã vào spec v2)

1. **"Bỏ type=3" = tự chế + gây trang trắng** (L1-F1 · L2-F1 · L3-F1): trang CHỈ đọc `?type`
   (`WorkflowMatrixViewPage.tsx:57,61` fallback `:1`); "alias-path KHKK" thật ra GIỮ type= trên URL
   (`Layout.tsx:216`) — khuôn chứng điều NGƯỢC. → v2 GIỮ `?type=3&ct=N`; delta = trang đọc `ct` +
   accordion ưu tiên `ct` + allowlist pathname (diệt luôn `Hdc_*` cross-talk L1-F5).
2. **`pendingMe` không tồn tại BE Contract** (L1-F2 · L2-F2 · L3-F2): 0-hit + control-dương KHKK
   4-hit; ASP.NET nuốt param lạ im lặng. Khuôn PE THẬT = đổi-endpoint. → v2 W3: `pendingMe=1` ⇒ FE
   gọi `/contracts/inbox` + lọc type client (khai lệch-W7 chấp nhận); acceptance so-số 2 chiều.
3. **W5 sai khuôn KÉP** (L2-F7/F12 · L3-F3/F4/F5): (a) hành-vi phải theo KHKK (lời anh) — KHKK CẤM
   approver xoá khi đang duyệt, allow {Nháp, TraLai, TuChoi} Drafter/Admin; (b) bằng-chứng "KHKK có
   nút Xóa ở panel duyệt" = CODE CHẾT S175 (nút thật ở thanh đáy detail `KhkkDetailContent:1077-1096`);
   (c) thiếu changelog + bẫy T26 Remove→Add; (d) DELETE endpoint `[Authorize]` trần + handler không
   kiểm chủ sở hữu = lỗ sẵn (#82) mà v1 sắp NỚI RỘNG; (e) thiếu ca chặn `DaPhatHanh(9)`.
   → v2 W5 viết lại trọn; approver-delete tách thành Q4 CHỜ ANH.
4. **W2 thiếu 3 mitigation khuôn + 2 quyết định của anh** (L2-F3/F4/F5 · L1-F3 · L3-F9/F11): cây
   không chứa HĐ tạo-trực-tiếp; `!canPe` ⇒ panel trống (#82 mặt-2); cây không lọc theo loại; đọc-ý
   "list thành fallback" = suy diễn đội. → v2: Q1 nhánh-an-toàn HOÁN ĐỔI (giữ list ở panel phải) ·
   Q2 Select loại khuôn KHKK · control-âm fe-admin + deep-link + ca HĐ-ngoài-gói.
5. **Acceptance Goodhart** (L1-F4 · L3-F6/F7/F8/F10): ô "0 dòng loại khác" xanh trên trang trắng;
   grep thiếu `-F` (rg đọc `?` thành regex — đo thật 2 chiều); 1/7 mã được phủ; 9/20 ô hành-vi không
   có chỗ chạy khi deploy CHỜ. → v2: vòng ct 1..7 + control ct-rác + grep -F + mục ④ nấc-đo-local +
   DEFERRED-TO-DEPLOY + pin 680→680+N.
6. **Xác nhận DƯƠNG giữ nguyên** (3 lane): root-cause A+B HELD · `view=approved` diệt bug B đúng
   khuôn PE · W4 cơ chế khớp trọn (17 leaf, nhánh chèn đúng khối awV2Match) · mirror baseline SHA
   sạch 4 cặp · soft-delete xác nhận (AuditingInterceptor) — H-1..H-6 lens-3 ghi lại để wave khỏi đo.
7. **Thứ tự wave đổi**: W4 (lành nhất) → W1 → W2 → W3 (sau W2 vì layout quyết chỗ hiển thị) → W5.
8. **Q1-Q5 đánh số** trình anh (Q1/Q2 nhánh-đã-chọn khai · Q3 cấu-hình-câm 2 cờ anh đang thấy ·
   Q4 approver-delete · Q5 QT-HD-V2-001) — thay mục "ngoài wave" không số của v1 (L2-F6: rơi im lặng).

## Bài học lead tự nhận

v1 lead verify 4 claim bằng grep NHƯNG toàn claim "chỗ thiếu/chỗ có" — KHÔNG verify 2 claim
"CƠ-CHẾ khuôn" ("trang tự suy theo path" · "BE param sẵn") vì chúng nghe xuôi theo khuôn. Đúng bài
`feedback_claim_stronger_than_work` + lens-2 gọi tên: "spec viện dẫn khuôn X phải MỞ khuôn X ra đọc".
Ensemble 3-lane trả cổ tức đúng chỗ lead mù.
