diff --git a/.claude/agent-memory/reviewer/MEMORY.md b/.claude/agent-memory/reviewer/MEMORY.md index e401218..ab61ca7 100644 --- a/.claude/agent-memory/reviewer/MEMORY.md +++ b/.claude/agent-memory/reviewer/MEMORY.md @@ -1,10 +1,12 @@ # Reviewer Agent — Persistent Memory +- **S166 (08-01) vá F-1 ô-tích opt-out `applyLevelFinalize` KHKK — PWF 7 finding (3 MAJOR):** vá ĐÚNG kỹ thuật (mirror 2 app chứng bằng **blob-SHA in ngay trong `git diff` index-line** — rẻ hơn sha256 tay; body không rò field; cấp thường bất-biến từng bit). **Bài thu:** ① 🔴 **khuôn-nguồn có 2 tầng, chú-thích nói dối tầng dưới** — implementer trích ĐÚNG dòng JSX PE `:772-791` + nhãn "khuôn PE S96 default tick", nhưng `useState` PE `:61` = `false` (S97 owner **ĐẢO** sang opt-IN) và chính chú-thích PE `:769-771` cũng stale ⇒ **đo khuôn phải đo GIÁ-TRỊ KHỞI-TẠO, không đọc chú-thích**; tái phát S165 F-1 (đo sai tầng). ② **cây làm việc PHÌNH GIỮA LƯỢT REVIEW** — đo `git status` 2 lần cách ~40 tool-call: 5 file→7 file (+121 dòng K4a, `All` 64→113) ⇒ **verdict phải neo mốc đo + re-đo `--stat` TRƯỚC khi phát verdict**, nếu không lead commit ké code chưa qua cổng. ③ vắng-mặt-đọc-thành-sạch: sơ đồ `isApproved ⇒ mọi Bước 'Done'` ⇒ CEO chưa đụng vẫn "đã duyệt", dấu-vết duy nhất = THIẾU dòng "✓ ký". ④ sợi-dây-1-argument (`l.AllowApproverFinalize` projection) 0 test ⇒ xoá là control biến mất mà 614 test + tsc vẫn xanh. ⑤ STATUS: prose vá, 2 row canonical detector đọc thì không (fix-NỬA). Tag `[s166, khuon-2-tang-chu-thich-noi-doi, cay-phinh-giua-review, sợi-day-1-argument]` **Evidence:** `runs/2026-07-31-S164-4gd-khkk-fanout/sub-reviewer-f1-checkbox.md` + - **S164/S165 (07-31) gate K3 KHKK (8 wf nhóm + port level-finalize + gỡ khoá Designer) — PWF 8 finding/0 blocker:** build 0W/0E · 614/0 (45D+569I) · npm ×2 sạch; 3/3 quyết-định lead ĐÚNG kỹ-thuật. **Bài thu:** ① 🔴 **tham-số-chết-vì-thiếu-tầng-UI** — BE port opt-out `applyLevelFinalize` đủ 3 tầng + seed cờ finalize cho TP.CCM ở CẢ 8 wf, nhưng panel KHKK POST **body literal đúng 2 field** `{action,comment}` ⇒ luôn finalize ⇒ **trạm CEO chết 8/8**, mất đúng quyền owner vừa chốt. Bắt bằng **đối-chứng khuôn-nguồn**: PE panel `useState(false)` + luôn gửi tường minh ⇒ PE opt-IN, KHKK opt-OUT ⇒ *"mirror khuôn PE"* SAI ở chiều mặc-định. **Luật: claim 'port khuôn X' phải đo TẦNG-CUỐI (ai GỬI tham số), đừng đếm tầng-BE.** ② **sweep 2-cờ bất-đối-xứng** — FE gỡ khoá CẢ 2 ô, BE chỉ gỡ 1 ⇒ tick bị NUỐT IM LẶNG (chính class comment vừa xoá đã cảnh báo, đảo chiều); **vá 1 cờ ⇒ grep cờ ANH-EM ở CẢ 2 bờ**. ③ spec liệt SAI site (bảo gỡ PUT-Conflict) — bác bằng `grep typeEnum` trong thân handler = 0 hit ⇒ luật CHUNG mọi type; **lead cãi spec ĐÚNG khi có phép đo**. ④ suite **flake 1/3 lượt** ⇒ 'N/0 tươi' phải khai SỐ LƯỢT. ⑤ DELTA STATUS chưa khai — tái phát y hệt K1 cùng phiên. Tag `[s165, tham-so-chet-thieu-tang-ui, doi-chung-khuon-nguon, sweep-2-co-bat-doi-xung, spec-liet-sai-site]` **Evidence:** `runs/2026-07-31-S164-4gd-khkk-fanout/sub-reviewer-gate-k3.md` - **[→ archive/2026-07.md @S165-curate] S164 (07-31) gate K1 danh mục SP-002 (Mig 70) — PWF 9 finding/0 blocker:** giá-trị lớn nhất ở **GATE QUY-TRÌNH** không ở mã (commit gộp = vượt quyền owner; seeder 0 nhánh update) · 2 quyết-định hợp-lệ ghép nhau đẻ **ghost-policy** (4 policy, 0 endpoint tiêu thụ — đo `grep policy`, đừng suy từ "key đã vào All") · **default-lấn-ngữ-nghĩa** `IncludeInactive?`→`IsActive?` · DELTA đo được mà STATUS chưa khai. -- **[→ archive/2026-07.md @S165-curate] S162 (07-30) cây 4-folder GĐ (FE-only) — PWF 8 flag/0 blocker:** class **im-lặng-về-độ-chính-xác-của-con-số** ×3 cùng diff (vứt `total` · `contracts[0]` cardinality · fallback trộn 2 nguyên nhân) · **#82 ngược chiều**: FE OR nhiều menu-key LỎNG HƠN policy khớp-CHÍNH-XÁC-1-key ⇒ tự chuốc 403, gate query = ĐÚNG key policy của endpoint · nhãn ✓ không có phép đo (đọc `^import` của harness). +- **[→ archive/2026-07.md @S165-curate] S162 (07-30) cây 4-folder GĐ (FE-only) — PWF 8 flag:** im-lặng-về-độ-chính-xác-của-con-số ×3 cùng diff · **#82 ngược chiều** (FE OR nhiều menu-key LỎNG HƠN policy khớp-CHÍNH-XÁC-1-key ⇒ tự chuốc 403) · nhãn ✓ không có phép đo. - **[→ archive/2026-07.md @S162-curate] S161-W2 (07-29) KHKK CRUD — 2 lane viết SONG SONG:** hợp-đồng FE↔BE VỠ 6 điểm mà tsc+build+574-test đều XANH (route lệch tên · field lệch · 2 lỗi CHE NHAU); lời-khai-lane = GIẢ ĐỊNH ⇒ so ROUTE+FIELD trên ĐĨA; list-bịt-detail-mở ⇒ rào chỉ còn UX; INNER-join global-filter = picker vanish. diff --git a/.claude/agent-memory/reviewer/archive/2026-07.md b/.claude/agent-memory/reviewer/archive/2026-07.md index 52388d4..0281f2d 100644 --- a/.claude/agent-memory/reviewer/archive/2026-07.md +++ b/.claude/agent-memory/reviewer/archive/2026-07.md @@ -198,3 +198,7 @@ - {nấc: verified (lead đọc lại sub-file 16.761B) · evidence: `runs/2026-07-29-S159-tong-quan-pipeline-menu/sub-reviewer-diff-tongquan.md`} - **7 FLAG (2M+5L), 4 bài giữ:** ① [M] a11y AA — 2-3 `