7.1 KiB
spec — vá đội STYLE 3 vai theo SETUP-REVIEW (S176, 06-08-2026)
Engine
/fable-real reviewerrunwf_264fb5c2-0db→ verdictSETUP-REVIEW: SỬA-6. Nền thiết-kế ĐỨNG VỮNG, KHÔNG BÁC. 🔴 Spec do LEAD ghi SAU khi verify (honest-note (c)). Run chấm/verify vẫn sinh spec (honest-note (d)).
① Tính-năng / đề-bài
Vá 6 điểm engine bắt trong cách cài đặt đội STYLE 3 vai (front-end-reviewer-style · back-end-reviewer-style · database-reviewer-style, land 090ab1c), giữ nguyên nền: production-làm-chuẩn đo bằng TREE · 3 địa-phận rời · trục ĐỒNG-NHẤT ⟂ ĐÚNG-SAI của reviewer.
🔴 SỬA-1 là điểm sống-chết: thước dispatch mù working-tree ⇒ đội chết câm đúng use-case chính (review TRƯỚC commit). Không vá thì 3 persona chỉ là chi-phí.
② Cách implement
| # | Mức | Vá gì | Ở đâu |
|---|---|---|---|
| 1 | 🔴 TRUNG-CAO | Thước dispatch: git diff --name-only origin/main...HEAD (ba-chấm, mù uncommitted + untracked) → git diff --name-only origin/main (2-chấm) ∪ git status --porcelain lọc ??. Thêm câu CẤM ba-chấm làm thước dispatch |
agents/README.md:68 · front-end-reviewer-style.md:30 · back-end-reviewer-style.md:27 · database-reviewer-style.md:26 |
| 2 | VỪA | Câu "mọi thứ CÒN LẠI trên origin/main = ĐÃ PRODUCTION" quá rộng 2 vế: (a) deploy.yml:20-27 paths-ignore (docs/** · /*.md · .claude/ · scripts/**.md) chưa từng deploy ⇒ thêm "= CHUẨN trong địa-phận glob của mày"; (b) cửa-sổ deploy-FAIL ⇒ thêm "wal/cicd lần push gần nhất KHÔNG có deploy VERIFIED ⇒ lùi mốc chuẩn về commit VERIFIED gần nhất" |
fe:31 · be:28 · db:27 |
| 3 | VỪA | Miễn-trừ thành dấu-cao-su: 2/3 nguồn (commit-message · WAL) do chính lead viết, format chỉ đòi CON-TRỎ. Đổi thành: PHẢI trích NGUYÊN VĂN lời anh ≤1 dòng + con-trỏ; xếp hạng prompt/_context "> anh:" (mạnh) > WAL có ngày (vừa) > commit message (yếu — chỉ nhận khi chứa trích nguyên văn; "theo yêu cầu anh" trống = KHÔNG TÍNH, vẫn FLAG) |
fe:49-52 · be:47 · db:43 |
| 4 | VỪA | Thách-CLEAN nhánh DAT bẻ được (chỉ đòi "nêu 1 khối khớp", không bắt neo). Áp khuôn db cho cả 3: cặp neo file:line ⇄ file:line (bản mới ⇄ bản production) + 1 chi-tiết khớp CỤ THỂ (tên prop/banner/badge/cột). Thiếu neo ⇒ coi như CHƯA SOI, lead từ chối nhận DAT |
fe:111 · be:90 · (db:85 đã đạt — làm mẫu) |
| 5a | 🔴 THẬT | Seed 3 dir agent-memory/<vai>/ + MEMORY.md mồi rồi re-run measure-agent-memory.ps1. Hiện ls agent-memory = 23 dir, thiếu cả 3 ⇒ máy enumerate theo DIR ⇒ 3 vai vô hình câm trong đo/budget (class vắng-mặt trông giống ổn). Lead đã tự đo lại: 3/3 THIẾU — CONFIRMED |
.claude/agent-memory/ |
| 5b | VỪA | Khai lỗ CHỌN CHỦ ĐÍCH: ngoài 3 glob (tests/ scripts/ .gitea/ docs/ .claude/) + seam FE↔BE (DTO⟂type · route string · MenuKeys.cs⟂menuKeys.ts) = 0 vai style soi — thuộc reviewer/lead |
agents/README.md §RULE |
| 5c | VỪA | README:67 ra lệnh "MỖI LƯỢT REVIEW gọi THÊM" mà không kèm nhãn hiệu-lực, trong khi STATUS:476 khai verified-pending-restart ⇒ kẽ giữa 2 doc. Thêm "(hiệu-lực sau restart CLI)" + thêm nhánh style vào decision-tree :87-155 (hiện chỉ §RULE có) |
agents/README.md:67 + decision-tree |
| 6a | VỪA | Claim "BE 0 máy style gác" bị chép ra 4 SITE (be:4 · be:55 · README:71 · STATUS:476) ⇒ cắm .editorconfig là 4 chỗ sai cùng lúc; detector C2/B3 chỉ so SỐ nên KHÔNG bắt. Biến thành PHÉP ĐO per-spawn trong be §1: "trước khi tin mục này re-đo 10 giây: ls .editorconfig; grep -rn 'dotnet format|EnforceCodeStyleInBuild' .gitea/workflows/ src/Backend/*/*.csproj — có hit ⇒ mục HẾT HẠN, FLAG lead cập-nhật, KHÔNG tự gánh tiếp"; rút README:71 thành câu-trỏ; STATUS:476 giữ như lineage có ngày |
be:4/55 · README:71 · STATUS:476 |
| 6b | VỪA | Lead chép luật vào persona — vi phạm chính B1 viết trong CÙNG file: db:32 (PascalCase số nhiều) · db:34-35 (liệt đủ field BaseEntity/AuditableEntity) · db:61 (PK Id/FK {Entity}Id) trong khi db:71 CẤM chép · be:63 (mũi tên 4-layer) trong khi be:74 CẤM · fe:4 chép digits "React 19 + Vite 8 + TS 6" — class ĐÃ drift thật trong repo: root CLAUDE.md ghi React 18 vs package.json ^19.2.5 · fe:67 (danh sách "máy BẮT" = chép config ESLint). Đổi ô-chép → con-trỏ + lệnh-đo. Riêng tên 3-file migration (db:4+db:51) = rule bất-biến EF, chấp nhận giữ |
fe · be · db |
🔸 Lo hão (engine bác thẳng, ghi để khỏi lo lại): ① ca REVERT — thước là TREE nên tự lành (bằng chứng revert thật 3f339c0) ② spawn-model-audit.ps1 · governance-detectors.ps1 · mfe-eval.ps1 enumerate ĐỘNG, không hardcode ⇒ tự nhận vai mới ③ roster 26 > WIDTH_CAP 20 — LOUD-skip có log hmw.js:165-169, không câm; pre-existing từ 23>20 @S153; use-case 1-3 lane không đụng trần. Chỉ cần nhớ: xếp 3 vai style cuối taskList sweep thì chúng là nhóm bị cắt.
③ Checklist (vai · deliverable · acceptance ĐO ĐƯỢC)
| # | Vai | Deliverable | Acceptance (ĐO ĐƯỢC) |
|---|---|---|---|
| C1 | lead | Vá thước dispatch 4 site | grep -rn 'origin/main\.\.\.HEAD' .claude/agents/ = 0 hit VÀ grep -c 'git status --porcelain' 3 persona = 3 |
| C2 | lead | Vá 2 vế phạm-vi chuẩn | grep -c 'paths-ignore|deploy VERIFIED' fe+be+db ≥ 3 |
| C3 | lead | Miễn-trừ đòi trích nguyên văn | grep -c 'TRÍCH NGUYÊN VĂN' 3 persona = 3 |
| C4 | lead | Thách-CLEAN đòi cặp neo | grep -c 'file:line ⇄ file:line' 3 persona = 3 |
| C5a | lead | Seed 3 dir agent-memory | ls -d .claude/agent-memory/*-reviewer-style | wc -l = 3 VÀ measure-agent-memory.ps1 in ra đủ 3 vai |
| C5b/c | lead | Khai lỗ + nhãn hiệu-lực + decision-tree | grep -c 'hiệu-lực sau restart CLI' README ≥ 1 VÀ grep -c 'seam FE↔BE' README ≥ 1 |
| C6a | lead | Claim BE thành phép-đo per-spawn | grep -c 'HẾT HẠN' back-end-reviewer-style.md ≥ 1 VÀ grep -c '0 máy style' README = 0 (rút thành câu-trỏ) |
| C6b | lead | Ô-chép → con-trỏ | grep -c 'React 19 + Vite 8' fe = 0 VÀ grep -c 'BaseEntity.cs' db ≥ 1 (trỏ file thay vì liệt field) |
| C7 | reviewer |
Re-review sau vá | verdict ĐẠT hoặc SỬA còn lại đều mức THẤP |
🔴 Thứ tự bắt buộc: C1 trước hết (không có nó thì mọi vá khác vô nghĩa — đội không bao giờ được gọi). C5a rẻ nhất, làm cùng lượt.