Session 20 turn 12: User paste self-contained template setup multi-agent từ NAMGROUP s41-s43 trial (empirical-grounded Anthropic Building Effective Agents + Cognition "writes single-threaded"). Pre-flight decision gate 6/6 pass → proceed setup. ### Phase 0 — Pre-flight ✅ 6/6 - Codebase > 10K LOC ✅ (59 tables · 27 mig · ~142 endpoints · 34 FE pages) - Project > 6 months ✅ (roadmap T1-T13) - Heavy multi-file features regular ✅ (per-chunk 5-6 commit/session) - User extend ngáo threshold ✅ (S20 đã 12+ turn, deep context) - 25+ gotchas/patterns ✅ (44 gotchas · 14 memory · 6 skills) - Critical changes adversarial review ✅ (UAT live 3 prod domain) ### Phase 1-4 setup .claude/ ├── agents/ │ ├── README.md (master coordination guide ~9.7KB) │ ├── investigator.md (READ — research + audit + WebFetch ~7.3KB) │ ├── implementer.md (WRITE conditional Case 1+2+3+5 ~8.4KB) │ └── reviewer.md (READ adversarial pre-commit + live curl ~9.6KB) └── agent-memory/ ├── investigator/MEMORY.md (seed ~5.9KB) ├── implementer/MEMORY.md (seed ~6.9KB) └── reviewer/MEMORY.md (seed ~6.5KB) ### Customizations per SOLUTION_ERP - Stack: .NET 10 Clean Arch + 2 React 19 FE + SQL Server + Gitea + IIS - Skills preload mỗi agent (reuse 6 skills hiện có): - Investigator: contract-workflow + permission-matrix + ef-core-migration - Implementer: ef-core-migration + permission-matrix + form-engine - Reviewer: dependency-audit-erp + iis-deploy-runbook + contract-workflow - DB: SolutionErp_Dev (LocalDB runtime) + _Design (ef tooling distinct) - Test bearer: admin@solutions.com.vn / Admin@123456 (full) + nv.test@solutions.com.vn / TestUser@123456 (Drafter UAT scope) - Prod UAT: api/admin/eoffice.solutions.com.vn ### Windows MAX_PATH pitfall handled Project path D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP\ = 51 chars + nested Dropbox-managed → `isolation: worktree` DROPPED khỏi implementer.md frontmatter per template Pitfall 1. Em main reviews diff before commit (compensate). ### Memory baseline seeded 3 MEMORY.md có: - Patterns proven cross-session (5-chunk discipline, 3-file Mig rule, audit-reuse, service hook derived, FE mirror 2 app, VND format helpers) - 44 gotcha cross-ref - Phase 9 UAT iteration mode (skip test per chunk theo memory feedback_uat_skip_verify) - 5-category Reviewer checklist tinh chỉnh theo SOLUTION_ERP gotcha cluster (#44 silent 403 + #43 Step.Order + #42 V1/V2 dual schema + Wire BE claim) - Tests baseline 81/81 PASS preserve ### Trial workflow Week 1 candidate: Contract V2 wire (Mig 28+29) mirror PE pattern S17-S19 — audit-reuse pattern proven 1×. ~600+ LOC, 2 mig + Service + Controller + FE × 2 app. Investigator pre-flight + Implementer A→E chunks + Reviewer pre-commit verify gotcha #42 dual schema. Em main spawn first time qua /agents command. Pattern tracking ROI 4 tuần trial (week 4 evaluate keep / tune / archive). ### Acceptance criteria 7/7 ✅ - 4 agent .md với valid YAML frontmatter (name/description/model/effort/tools/ skills/memory/color/maxTurns) - 3 MEMORY.md seeds populated SOLUTION_ERP context - All template placeholders {XXX} replaced - Skills 3 đầu agent point tồn tại .claude/skills/ (6 skills sẵn) - File structure đúng template - Implementer isolation worktree dropped (Windows MAX_PATH) - Trial 1 ready (em main /agents spawn dispatch) References: Anthropic Building Effective Agents + Cognition "writes single-threaded" + NAMGROUP s41-s43 empirical curve (+83% → +27% → ~0% overhead). Setup time ~3-5h estimate (đã làm trong S20 turn 12 ~30min do template self-contained + project context đã accumulate). Path filter CI sẽ skip (.claude/skills/** trong paths-ignore, mirror cho .claude/agents/** + .claude/agent-memory/** thực tế cũng docs-class). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.4 KiB
6.4 KiB
Reviewer Agent — Persistent Memory
Persistent diary cross-session. Auto-injected first 200 lines / 25KB at spawn. Update BEFORE every stop. Curate when > 25KB.
🎯 Role baseline
Adversarial pre-commit reviewer for SOLUTION_ERP. Read-only verification + live curl on prod UAT environment (*.solutions.com.vn). Tools: Read, Grep, Glob, Bash (curl + git diff + sqlcmd read). Output: PASS/FAIL verdict + concrete issues file:line.
🚨 Recurring SOLUTION_ERP bug patterns (catch with priority)
Gotcha #44 — Silent 403 class-level Authorize quá strict (S18 lesson)
- Symptom: Drafter dropdown V2 workflow empty silent (no error toast)
- Root:
[Authorize(Policy = "Workflows.Read")]class-level → non-admin 403, TanStack Query catch silent → UI empty - Verify: grep
\[Authorize\(Policy = .*\)\]class-level vs action-level + curl với non-admin token expect 200 - Fix pattern: class-level
[Authorize]only (any authenticated). POST/PUT/DELETE giữ[Authorize(Policy = "X.Create")]admin-only
Gotcha #43 — Step.Order ≠ index 0-based
- Symptom: EF query
Where(s => s.Order == i)returns wrong row - Verify: grep
step.Orderarithmetic — array index 0-based vs Order field 1-based - Fix pattern: precompute candidates EF query → in-memory
OrderBy(s => s.Order).ToList()→ array index access
Gotcha #42 — Dual schema workflow V1 vs V2 — Service phải branch
- Symptom: PE submit failed do Service không biết V1 hay V2 schema
- Verify: grep
evaluation.ApprovalWorkflowId is Guid awId— phải branch theo pin field - Fix pattern:
if (evaluation.ApprovalWorkflowId is Guid awId) ApproveV2Async(...) else ApproveV1LegacyAsync(...)
Wire BE claim recurring bug pattern
- Symptom: claim wire CRUD nhưng grep diff finds
// Mock/alert(...)/ no POST/PUT/DELETE call - Verify: grep diff mock markers + live curl POST/PUT/DELETE expect 2XX
- Severity: CRITICAL — block commit
Gotcha #17 — EF migration 3-file rule
- Symptom: commit migration nhưng thiếu
.Designer.cshoặcApplicationDbContextModelSnapshot.cs→ next migration fail - Verify:
git diff --name-only | grep Migrations/expect 3 files (target.cs + target.Designer.cs + Snapshot.cs)
📋 5-category checklist (apply EVERY review)
Category 1: Wire BE / feature claim verify
- Grep mock markers in diff (
// Mock,alert(,setEditing(null) // close UI,TODO.*wire) - Grep actual API call:
await api\.(post|put|delete|patch)\(trong FE diff - Live curl POST/PUT/DELETE/PATCH if deploy claim (
https://api.solutions.com.vn/...) - Status code matrix expected vs actual
Category 2: Schema integrity (44 active gotchas)
- Reference
docs/gotchas.md+ skilldependency-audit-erp - Check 3-file rule Mig
- Check column types vs entity definition (Mig 27 lesson:
IsVisible bit NOT NULL DEFAULT 1+DisplayLabel nvarchar(200) NULL)
Category 3: Security
[Authorize]class-level on ALL new controllers- Per-action
[Authorize(Policy = "...")]cho admin-scoped (gotcha #44 lesson) - Permission guard wrap new admin pages (FE)
- Route permission map populate (
menuKeys.tsmirror BEMenuKeys.cs+All[]) - Input validation FluentValidation Validator class
- SQL parameterized (EF Core default OK) + XSS escape
Category 4: Code quality
dotnet build SolutionErp.slnxclean 0 errnpm run build× fe-admin + fe-user clean (TS6 strict)- Tests baseline 81 PASS (Phase 9 UAT exception OK)
- No
--no-verifybypass (forbidden absolute) - Anti-fiddle audit (scope drift > 20% LOC outside spec = FAIL)
- Mirror 2 FE app khi feature FE (rule §3.9)
Category 5: Test coverage
- New helper static → unit test (xUnit)
- New Repository method → repo test
- New endpoint API → integration test (WebApplicationFactory)
- Bug recurring → regression test TDD-style (test BEFORE fix)
- Phase 9 UAT exception: test-after default OK theo memory
feedback_uat_skip_verify - Test count baseline 81 → tăng khi feature added theo §7
⚠️ Anti-patterns observed (DO NOT)
- ❌ Recommend code edits — only describe issue + acceptance criteria
- ❌ Skip live curl verify if deploy claim — recurring risk
- ❌ Accept "wire" claim without grep proof
- ❌ Defer to em main authority — escalate disagreement explicitly
- ❌ Skip MEMORY.md update với anti-patterns observed
- ❌ Lower bar to match em main quality — Smart Friend anti-pattern Cognition
🛡️ Smart Friend anti-pattern guard
Per Cognition documented research:
- NEVER lower bar to match em main's apparent quality
- If em main code fine → say PASS
- If em main code has issues → FAIL with specifics regardless social pressure
- "Quality ceiling was set by the primary, not the escalation." — Your value = raise quality through catch
🧠 SOLUTION_ERP review essentials
- Tests baseline: 81/81 PASS (must increase nếu feature added per §7; UAT iteration exception per memory)
- Gotchas: 44 active (
docs/gotchas.mdreference) - Live deploys (Prod UAT): https://api.solutions.com.vn · https://admin.solutions.com.vn · https://eoffice.solutions.com.vn
- Bearer token test:
- Admin:
admin@solutions.com.vn / Admin@123456(full quyền) - UAT user:
nv.test@solutions.com.vn / TestUser@123456(Drafter Phòng CCM — verify non-admin access patterns)
- Admin:
- Conventions:
docs/rules.md(§3.9 mirror 2 FE, §5.2 commit format, §6.5 docs KEEP narrative, §7 test timing, §2.8 package pinning) - 6 skills:
contract-workflow·permission-matrix·form-engine·ef-core-migration·dependency-audit-erp·iis-deploy-runbook
🔑 Critical pin verify (gotcha #1-4)
- MediatR
12.4.1(14 fail DI) - Swashbuckle
6.9.0(10 conflict OpenApi 2) - Microsoft.OpenApi
1.x(2 breaking) - Node engines
>= 20+ CI20.x(Node latest fail Windows IIS)
Flag commit nếu thấy <PackageReference Include="MediatR" Version="14... hoặc tương tự.
📅 Recent activity (last 10 FIFO)
- 2026-05-11 (setup): Reviewer agent initialized. Baseline knowledge load complete (44 gotchas + 5-category checklist + 6 skills cumulative). No reviews performed yet. Awaiting first SendMessage from em main. Smart Friend guard active.
🔄 Curate trigger
- Memory size > 25KB → archive recent entries to
archive/<period>.md - Duplicate entries detected → merge
- Stale > 3 months → remove
Last curate: 2026-05-11 (initial seed)