# Reviewer Agent — Persistent Memory - **S187 (08-10) STAGE-C plan-review YC-023 Duyệt-HĐ (artifact `runs/2026-08-10-S187-duyet-hd-tu-khkk/sub-plan-review-fable.md`) — verdict 12/12 claim ĐỨNG · 3 phát hiện MỚI · 11 wave · 12→9 câu:** 🔴 **Bài đắt nhất — review PLAN phải check KHỚP-KHUÔN-CHÉO:** FE invest chọn mirror `KhkkWorkflowPanel` (UI) nhưng đề xuất DTO khuôn **PE precompute** — 2 shape NGƯỢC NHAU (panel KHKK tự-suy cây-thô, header `:19-25` TỰ KHAI "KHÁC PE Ở CHỖ ĐẮT NHẤT"); cả 3 bản trước (2 invest + style-review 7-flag) đều không bắt ⇒ khi ai nói "mirror X + data theo Y", MỞ HEADER X xem nó ĂN shape gì. **0-hit DTO-gap tin được nhờ control-dương cùng lệnh trên module anh em** (PE có hit :158/:186). **Tách wave theo MỐI-CHẶN không theo tầng:** W3-seed (chặn roster-owner) ⟂ W4-guard (chặn UX-dialog) — gộp = wave nghẽn kép; wave "bất biến mọi nhánh câu-owner" (gỡ-bom + DTO) lôi lên chạy NGAY. **Ẩn menu có thể 2 TẦNG** (set `ADMIN_HIDDEN_KEYS` + prefix-rule `startsWith('Ct_')` `:248`) — grep 1 tầng là sót nửa việc gỡ. Thước-hỏng: `grep -E '^\d{14}'` MSYS trả 0 im lặng (GNU grep không \d) ⇒ dùng `[0-9]` hoặc Glob đếm. Tag `[s187, plan-review, khop-khuon-cheo, tach-wave-theo-moi-chan, an-menu-2-tang]` - **[→ `archive/2026-08.md` §@S180-N2-N3-5lane — verbatim 5 entry, probe 5/5 + control-âm 0] S180 (08-07) N2 + N3 lane C/D/E/F (digest gộp):** (digest nén @S188 E2 — verbatim + digest cũ đủ ở archive, đọc on-demand). - **S182 (08-08) lens HOÀN-CHỈNH-VẬN-HÀNH + tổng hợp WAVE-PLAN FINAL `[LEAD SEED ON-BEHALF — nguồn `runs/2026-08-08-S182-khkk-awf-mirror-ncc/sub-review-2-fable.md` 32.326 B; entry S182 sẵn có chỉ khai đĩa `sub-review-1-fable` + `sub-reviewer-precommit`]`:** review **không dừng ở diff** mà dựng trọn đường ship: W4 test-gate (số canonical đổi ⇒ update **DUY NHẤT** `docs/STATUS.md` row test, B1) · W5 **commit MỘT phát** BE+FE+tests · **cicd 4-chân** với **control-âm bắt buộc** (bundle cũ 0-hit; *"eoffice: hash GIỮ nếu bỏ W2e / ĐỔI nếu làm — **đo, không suy**"*) · acceptance PROD **đọc-only** (CẤM bấm "Tạo phiên bản mới" trên prod). 🔴 **Rollback không đối xứng — phải khai:** 0-mig nên revert sạch phần MÁY, nhưng **revert W1a = bom per-type TÁI VŨ TRANG** ⇒ sau revert CẤM "Tạo phiên bản mới" mọi panel type-10. Data ở lại là **hợp lệ + khai rõ** (changelog W1c = audit-history · v02+ = ratchet vô hại, pin by-Id). Accepted-risk ghi thẳng: race 2-admin-cùng-Code → 500 thô (UNIQUE đỡ data, **không silent-dup**). Tag `[s182, review-2, review-den-duong-ship, control-am-bat-buoc, rollback-khong-doi-xung, accepted-risk-khai-thang]` - **S185 (08-09) review CHECKLIST 21-item (YC-017 email-adap, artifact `runs/2026-08-09-S185-email-adap-pipeline/sub-review-checklist-fable.md`) — `PASS_WITH_FIXES` 9MAJ/4m:** review CHECKLIST ≠ review code — đòn đắt nhất = **đối-chiếu TỪNG DÒNG bảng-nợ §2.1 → checklist §3**: ≥5 dòng BIẾN MẤT không disposition (1 dòng "CHỜ-ANH" rơi im lặng). **File-đích tự khai guard thắng sổ-lead**: `tien-kiem-cua.ps1:4-5` "phải qua W3b trước, đang chờ owner (P1)" ⟂ HANDOFF:7 NEXT-em "tự chạy" — xung đột 2 nguồn uỷ-quyền phải hoá giải TRONG spec, không được để Opus tự chọn. **Invest chép số cũ từ report thay vì đo tươi** → ring2 thật 30.781B ĐÃ VỠ cap (không phải 96,8%) — stale chiều NGƯỢC làm item KHẨN trông như thường. **Harvest nợ bằng grep debt-marker hụt nợ không-marker** ("PENDING"·"không máy nào canh") — 2/2 report mở thêm đều dính. **LT3 bậc-2 (đảo-ngược-được?) = thước routing rẻ** → demote 1 W khỏi CHỜ-ANH. **Carry đa-vế gỡ phải đóng TỪNG VẾ** (evidence lẫn trio khác trio). Thước-hỏng của TÔI: `cd` AI_INFRA rồi chạy `git ls-files` → đo nhầm repo (cwd-trap, warning path lộ) — compound-cd rồi git = tự kiểm repo-root trước khi tin 0-hit. - **[→ `archive/2026-08.md` §@S182 — verbatim 2 lượt, probe 7/7 + control-âm 0] S182 (08-08) YC-013 KHKK 8-panel — lượt SPEC `2C/5M`, lượt DIFF pre-co:** (digest nén @S188 E2 — verbatim + digest cũ đủ ở archive, đọc on-demand). - **[→ `archive/2026-08.md` §@S180 — verbatim, probe 10/10 + control-âm 0] S180 (08-07) LANE A/6 GĐ-0+GĐ-1 (đĩa `runs/…-S180-adap-upgrade-pack-phased/sub-n3-lane-a-gd01.md` 57 KB):** 🔴 **"0 hit" ĐÚNG THEO LUẬT vẫn là LỖ THẬT** — `_index` thiếu **24/69** thư (lead giao "4"); `to=se` **23/23 sạch** ⟂ `to=all-fit` 22 có/20 thiếu; luật `:7` trỏ `COMMS-LEDGER` mà `find "*COMMS*"`=**0 trong SE** (control `*ledger*`=4) ⇒ **sổ mà luật trỏ tới KHÔNG TỒN TẠI**; S153 phán dương-giả = đúng cho câu-hỏi CŨ. ⇒ gặp 0-hit phải hỏi thêm **"sổ đó có tồn tại không"** · **phân-họ regex 160/159, lệch 1 vì `S57bis`** ⇒ luôn cộng lại đối-chiếu tổng · **`CLAUDE.md` quy-ước nhật-ký khớp ≤64/159 đĩa** · **"single source" tự-xưng ≠ chuẩn** (bảng-dịch; 3 phép thử tiên-đoán/phủ-sóng/hướng) · **số-trong-chú-thích trôi** (`hmw.js` "11 class" ⟂ đĩa **12**). - **[→ `archive/2026-08.md` §@S179 — verbatim] S179 (08-07) C7 re-review sau vá — `PASS-WITH-8`, 3 MAJOR:** **2/3 MAJOR là lỗi TRONG CHÍNH BẢN VÁ vừa pass 12/12 acceptance** — vì acceptance đo **HÌNH-DẠNG chuỗi, không đo HÀNH-VI**. `cut -c4-` đẻ path RÁC (rename 1 dòng `R old -> new`) · ba-chấm→hai-chấm = **regression có điều-kiện** (thủ phạm thật = `git diff` mù untracked, lead gán sai tội) · mỏ-neo `:112` **tự-vô-hiệu ngay lúc viết** ⇒ neo TÊN SELECTOR không neo số dòng · census "8/9" thiếu 3 ý đóng im lặng. - **[→ `archive/2026-08.md` §@S171 — verbatim] S171 (08-04) 3 lane lens ĐỐI-KHÁNG, cả 3 chết hết-giới-hạn nhưng ĐĨA CỨU 74.070 B:** **cite sai ≠ claim sai** (`WorkflowService.cs:552` trỏ hụt mà claim vẫn HELD — phải tách 2 lớp) · **A-6 kiểm SAI KHOÁ ⇒ lỗ thủng NGAY TRONG hàng rào R-4** · **N-3 HELD về THỨ TỰ nhưng lệch số hình-thức** (template-literal đếm động) — 🔴 chính bẫy này lead tự dẫm sau đó ⇒ *có thước đúng trong tay ≠ sẽ dùng thước đúng*. - **[→ archive/2026-07.md §@S166-K5-curate · §@S167-K7-curate · §@S167-K7-curate-2 — verbatim] S166 K4a/b/c/K5 + S167 K7 (digest gộp):** mỏ-neo XUYÊN FILE · tham-số-trang-trí · **mỏ-neo tự-vô-hiệu** ⇒ đo **2 THẾ GIỚI HEAD ⟂ cây** · **cây phình giữa review** ⇒ re-đo `--stat` TRƯỚC verdict · HIGH-nằm-ở-git (`--porcelain … '^??'`) · bất-biến Σ do CẤU TRÚC · **phép-đo-rẻ-nhất ở file RÁC của lane khác** · chân-lý-RỖNG phải khai rỗng · tiền-lệ đo ở BASE · **flake chỉ lộ LƯỢT ĐẦU, `-v q` NUỐT assert** · **1 số đóng 2 câu hỏi** · **prod probe sửa số của chính comment** · **răng phủ NỬA** (`await` tuần tự ⇒ ca ĐỒNG THỜI hở) · **SHA-identical ≠ route-identical**. - **[→ archive/2026-07.md §@S168-curate + @S168-K8 — verbatim, ĐÃ PROBE] S168 gate GĐ3-D (Panel-3 ×3 trang) + K8 Lines-editor KHKK — PASS-WITH-FLAGS 10 / 8, 0 blocker:** **khuôn dùng-lại phải ĐO LẠI theo HOST** (`max-h`/`sticky` hiệu-chỉnh cho host CŨ ⇒ 2 thanh cuộn lồng) · **class chết ÂM THẦM khi đổi kiểu cha** (`self-start`/`lg:sticky`) — tsc+build 0 bắt, chỉ đọc CSS-chain · `{!selectedId && }` = unmount ⇒ **mất state thuần** trong khi `localStorage` sống · **1 con số đóng 2 câu hỏi** (642 = 639 + 3 Fact) · **quy-ước-của-chính-file là thước rẻ nhất** (mọi changelog điền `EntityId`, chỗ mới là chỗ DUY NHẤT trống ⇒ MAJOR bằng 1 grep) · **`