Files
solution-erp/.claude/workflows/runs/2026-08-06-S176-doi-style-3-vai/spec-va-doi-style-3-vai-06-08-2026.md
2026-08-06 13:24:12 +07:00

7.1 KiB
Raw Blame History

spec — vá đội STYLE 3 vai theo SETUP-REVIEW (S176, 06-08-2026)

Engine /fable-real reviewer run wf_264fb5c2-0db → verdict SETUP-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.csmenuKeys.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"không kèm nhãn hiệu-lực, trong khi STATUS:476 khai verified-pending-restartkẽ 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 .editorconfig4 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 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 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 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 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 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.