# Reviewer Agent — Persistent Memory - **S180 (08-07) N2 phản-biện bản-đồ N1 — `PASS_WITH_FIXES — 0C/5M/6m` `[LEAD SEED ON-BEHALF — nguồn `runs/2026-08-07-S180-adap-upgrade-pack-phased/sub-review-n2-S180.md` 22.418 B]`:** ~60 phép đo trên ~45 claim — **KHÔNG claim nào đổ**; 3 phép 0-hit tái-lập đứng cả khi tách vế ⇒ **bản đồ N1 ĐỨNG VỮNG về DỮ KIỆN, 5 MAJOR đều nằm ở SUY LUẬN/PHỦ, không ở ĐO** (tách 2 lớp này trước khi phán). Nặng nhất **F-10: "chỉ có 1 xung đột" là SAI — có xung đột THỨ HAI**, và nó nằm ngay trong §4.4(c) của chính N1 rồi bị câu §4.3 phủ nhận ⇒ hệ quả: N4 sẽ xếp W4-sổ thành "việc máy" và **bỏ mất bước anh-duyệt-ranh**. 4/4 khoản VƯỢT-KHUNG đều đúng cấp; **không khoản nào bị thổi lên để né, không khoản nào bị hạ để tự làm**. Tag `[s180, n2, du-kien-vs-suy-luan, xung-dot-thu-hai, vuot-khung-dung-cap]` - **S180 (08-07) N3 LANE-C GĐ-3+GĐ-4 (lane NÓNG NHẤT — chứa CẢ HAI xung đột) `[LEAD SEED ON-BEHALF — nguồn `sub-n3-lane-c-gd34.md` 72.156 B]`:** GĐ-3 **10 khoản** (có 3 · nửa 3 · thiếu 3 · **ngược 1**) · GĐ-4 **12 khoản** (có 2 · nửa 3 · thiếu 5 · **ngược 1** · chưa đo 1) · **5 khoản VƯỢT-KHUNG**. 🔴 **Dựng phương án, KHÔNG CHỌN:** xung đột 1 có **4 phương án**, xung đột 2 có **3 phương án**, lane **không chọn khoản nào** — đúng ranh vai đối-kháng khi việc chạm quyền owner. 🟢 **Ô CHƯA ĐO ghi KÈM LỆNH, không để trống** (4 ô, mỗi ô 1 lệnh chạy được) — và khai thẳng có ô mà kết luận đúng là **"KHÔNG ĐO ĐƯỢC"** chứ không phải "thiếu sót". Không đo lại phần lead đã verify (`status: DRAFT` 4/4 thư) — chỉ nhắc để mục phản biện không rớt. Tag `[s180, lane-c, dung-phuong-an-khong-chon, o-chua-do-kem-lenh, khong-do-duoc-la-ket-luan]` - **S180 (08-07) N3 LANE-D GĐ-5+GĐ-6 — `GĐ-5 13,0/20 · GĐ-6 3,0/17` `[LEAD SEED ON-BEHALF — nguồn `sub-n3-lane-d-gd56.md` 43.795 B]`:** 🔴 **BÁC claim xếp-hạng "GĐ-5 gần xong nhất" — vì claim xếp hạng KHÔNG CÓ MẪU SỐ**: trên cùng một thước, GĐ-2 (5,5-6/8) **≥** GĐ-5 (5,33/8). 🔴 **1 MAJOR máy-mù:** `spawn-model-audit` **mù 17/17 lane của chính phiên đang chạy** mà vẫn in `0 mismatch` + `TOTAL FLAGS: 0` ⇒ máy in "sạch" trên vùng nó chưa từng đọc. Chấm 2 thang **nới ⟂ nghiêm** cho cùng một GĐ (GĐ-6: 18% nới / 6% nghiêm) thay vì 1 số. Đính chính **4 phía, gồm chính mình**: N1 ×2 · N2 ×0 (F-07b/F-09 xác nhận ĐÚNG) · lệnh lead ×1 (chiều mù viết ngược) · **tự đính chính ×1** (`:250-253`→`:251-254`). 4 khoản `CHƯA ĐO` **có tên + có lệnh**. Tag `[s180, lane-d, claim-xep-hang-khong-mau-so, may-mu-in-sach, thang-noi-va-nghiem, dinh-chinh-4-phia]` - **S180 (08-07) N3 LANE-E trục BỆNH (9 lớp lỗi × 12 TC) `[LEAD SEED ON-BEHALF — nguồn `sub-n3-lane-e-benh.md` 38.531 B + `lane-memory-proposals/`]`:** 9 lớp **giẫm 9/9** (bác 1 CA trong LỚP-9) · 12 TC: **10 mắc / 2 không mắc** · **1 GĐ-đồ-chơi** (GĐ-0 không trỏ về TC nào) · **1 TC-không-ai-chữa** (TC-10 chỉ có NHÃN GĐ-3, không có THUỐC). Lead sót 3 ca. 🔴 **Đóng khoản phải hỏi "máy này quét những ĐÂU" so với "khoản này áp ở những đâu":** slot (70) dán ĐÓNG @S179 trong khi rider lỗi máy ở `:51` còn sống — **lỗ thủng TO GẤP ĐÔI SAU KHI ĐÓNG** (12 → 25 slug). 🔴 **Khai trạng-thái-quá-khứ bằng thì hiện-tại:** `session_ctx_kb` bị liệt ghost-wire 0-reader, đo ra **đã đóng từ S153** (`scripts/session_ctx.py:528/:563` là reader fail-loud) — trùng đúng kiểu `pull_warn_days` đã bị bác trước đó, **hai lần cùng lỗi trong cùng một ô bảng**. **Va chạm tệp tạm giữa lane song song:** tên chung bị lane khác ghi đè giữa 2 lượt, chỉ lộ nhờ `grep` chuỗi đặc trưng trước khi nối — **nối mù = mất dữ liệu IM LẶNG**. Tag `[s180, lane-e, may-quet-dau-vs-khoan-ap-dau, qua-khu-ke-bang-hien-tai, va-cham-tep-tam-lane-song-song]` - **S180 (08-07) N3 LANE-F máy⟂tay · vượt-khung · rủi-ro `[LEAD SEED ON-BEHALF — nguồn `sub-n3-lane-f-maytay.md` 52.923 B — §10 của file này TỰ KHAI "nội dung lẽ ra vào diary"]`:** 🔴 **`fed-but-unread` — sub-class ghost-wire THỨ 3, MỚI:** sổ được nuôi bằng công thật (~40 tệp run tính tally) nhưng **vế so-sánh ngưỡng không tồn tại** ⇒ **nguy hơn `defined-but-unread`** vì khối lượng công đổ vào tạo cảm giác cơ chế đang sống. **Thang máy/tay 2 nấc là thang HỎNG:** SE có **1 máy fire thật · 17 máy-qua-nghi-thức · 3 mồ côi** — điền "máy" cho cả 17 là đúng chữ sai nghĩa; câu hỏi chuẩn: *"kết quả không-hit có phụ thuộc người nhớ chạy không?"*. **Vá doc bình thường làm điểm mù của máy TO RA, im lặng** (`**NEXT em`→`### NEXT em` ⇒ `marks[0]` trôi :90→:172 ⇒ 12→25 slug bị nuốt) ⇒ neo detector vào **cấu trúc ổn định** + phản-chứng chạy lại mỗi lần bề mặt bị vá. **Đóng khoản bằng bằng-chứng ĐÚNG nhưng ở TẦNG THẤP HƠN mục tiêu** (slot 68). **Whitelist frontmatter = tự lừa:** 20/26 vai khai không Write/Edit, runtime vẫn cấp — lượt này tự chứng bằng chính `Write` của mình; backstop thật là lead soát `git status`, **và đó là TAY**. **`ngược-#53` là lỗi LỆNH không phải lỗi trí nhớ** ⇒ chặn bằng **thứ tự tool-call** (`Write` khung = tool-call #1), không chặn được bằng lời nhắc. 🟢 **CỐ Ý không tạo `/.claude/agent-memory/reviewer/MEMORY.md`** dù harness trỏ vào đó — vì sẽ đẻ đúng stray-mis-land class-S54. Tag `[s180, lane-f, fed-but-unread, thang-2-nac-la-thang-hong, va-doc-lam-diem-mu-to-ra, whitelist-tu-lua, thu-tu-tool-call]` - **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-commit `0C/3M`+6m:** 🟢 **3/3 finding 🔴 lượt-1 được đóng ĐÚNG BẢN CHẤT** (assembly-ranh → file `public static class` riêng · `IgnoreQueryFilters` **2 CHIỀU NGƯỢC NHAU trong cùng 1 diff**: DELETE bỏ filter vì FK còn thật ⟂ changelog GIỮ filter vì ghi vết phiếu-đã-xoá là rác · 8 module pin verified bằng grep Domain, loại +1 hit FK nội bộ) — dữ liệu hiếm, ghi để đừng phá. 🔴 **tooltip đặt trên `` ⇒ Chromium KHÔNG hiện** (label bao ngoài không mang `title`) — quyết-định-owner nằm trong tooltip mà tooltip không có cửa hiện = **máy dựng không ai gọi**; ô "hành-vi-LUÔN-BẬT" câm ⇒ đọc thành NGƯỢC NGHĨA. 🔴 **3 thành phần bất đồng HOA/thường** (regex CultureInvariant **case-SENSITIVE** ⟂ `Code ==` theo collation SQL Server **CI** ⟂ FE `.toUpperCase()`) và **test MÙ THEO CẤU TRÚC vì SQLite = BINARY case-sensitive ⇒ tầng DB trong test có ngữ nghĩa NGƯỢC prod** — không assertion nào bịt được. 🔴 **guard mới ở write-path CHÍNH (Create) 0 test** — lỗ của SPEC, implementer đúng spec, **KHÔNG hạ thước theo spec**. **m:** assert `Contain("N5")∧Contain("N3")` **mù THỨ TỰ toán hạng** (3 call-site 2 tham số kề — phải đối chiếu TAY) · **BOM `ef bb bf`+CRLF lẫn vào commit code** ⇒ `git add` từng file. **FLAG-A đo được:** `npx tsc --noEmit` trần biên dịch **0 file** (`files: []`+references) = xanh THEO CẤU TRÚC; `--listFiles|wc -l` 0 ⟂ 225/214 ⇒ **acceptance "lệnh X xanh" phải kèm phép chứng thước KHÔNG RỖNG**. - **[→ `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) · **`