Files
solution-erp/.claude/agent-memory/reviewer/archive/2026-05.gist.md
pqhuy1987 f36aab8934
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m52s
[CLAUDE] Docs: adopt Harness-9 — L2 archive dark-matter recovery (4 sub) + adap 2-workflow mandate (S70)
3-stage Workflow run-id evidence: investigate wf_be952f3c-97f / implement wf_a58e0d15-beb / audit wf_9520d8cd-4fe.

PART 1 (L2 recovery): 4 over-cap sub (cicd-monitor/investigator-codebase/reviewer/implementer-backend)
curated L1->L2 byte-exact + archive/_INDEX.md (substring sha-keyed pointers, no line-hints)
+ <period>.gist.md (4-field distill, distill-gen:1, verbatim frozen). All 4 MEMORY.md now < 25KB
auto-inject cap (closes P1 curate-debt). ~240KB archive no longer RAG-dark. 0-byte-loss git+sha
verified (Stage C audit + em-main self-gate on 2 reviewer StructuredOutput no-returns). Read-side
gap fixed (MEMORY.md L5 header -> _INDEX). + memory-budget.json (seed-by-measure) +
scripts/measure-agent-memory.ps1 + .ragignore guard.

PART 2/3 (process mandate): every adap = 2 separate workflows (implement + review) + report with
run-id; short-but-needs-confirm still requires review. Codified in .claude/commands/adap-apply.md
+ agents/README.md (Upgrade S70) + session-start.md (§2.1.2 budget-audit, pending-restart).

adap-report + email-back to AI_INFRA (body-hash 7c07b716e775).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 23:52:51 +07:00

7.9 KiB
Raw Blame History

Reviewer Agent — Gist 2026-05 (q1 S21-S24 + q2 S25/S26/S28)

distill-gen: 1 (đã nén — KHÔNG nén lại bản này). 4-field/record: VIỆC · KẾT-LUẬN(+file:line/commit) · BÀI-HỌC · BẤT-NGỜ. Mỗi dòng kết bằng back-resolve substring:"..." về verbatim. Nhãn cao/vừa/thấp = giá-trị-tái-dùng. Verbatim: 2026-05-q1.md (### headings) + 2026-05-q2.md (## headings). Mục lục: _INDEX.md. Archives FROZEN. Foundation note (gotcha #17): q2 header ghi foundation gotchas #17-#48 + Smart Friend guard + 5-category + Cat6 + cross-module-security mirror preserved untouched in MEMORY.md — gotcha #17 = q2-foundation-note anchor.


q1 — S21→S24

  • [cao] VIỆC: S21 t3-t5 em-main solo self-review (no spawn), 12-commit cumulative push, CICD-Monitor thay vai Reviewer post-deploy. KẾT-LUẬN: PASS — build+npm×2 mỗi chunk; gotcha #45 fix = self-test 3 regression test (test-before §7); cumulative 84 test/29 mig/45 gotcha. BÀI-HỌC: future-focus = per-NV permission audit (Level-table vs User-table flag) + EF backfill SQL order giữa ADD-DROP. BẤT-NGỜ: heavy push không cần Reviewer spawn khi UAT-mode + Monitor cover. substring:"S21 t3-t5, no spawn" → 2026-05-q1.md

  • [cao] VIỆC: S22 em-main solo self-review (no spawn) Plan E strict-V2. KẾT-LUẬN: PASS — actor.UserId scope List+Detail+Inbox (loose clause || ApprovalWorkflowId!=null removed); guard EnsureCanRejectV2Async chặn forge non-approver PATCH Reject (defense-in-depth FE+BE); S22+4→S22+5 AdjustBudget refactor dùng level.AllowApproverEditBudget opt-in; Identity password ≥12 chars reject 11-char User@123456. BÀI-HỌC: anti-pattern default-scope-expansion S22+4→S22+5 (per-NV opt-in, KHÔNG default-expand không admin tick); verify type-fields trước render (BudgetAdjustSection TS2339 assume changelogs). BẤT-NGỜ: gotcha #30 PS5.1 Vietnamese diacritics ASCII-only (seed-test-users-prod.ps1 parser-fail) + NEW gotcha #47 paths-ignore agent-memory gap (PENDING bro decide). substring:"S22 18:00" → 2026-05-q1.md

  • [cao] VIỆC: S23 t1 Plan K1+K2 adversarial spawn review — Mig 31 schema swap + Service Approver F2 branch (11 BE files +4093/-83 LOC). KẾT-LUẬN: VERDICT PASS với 2 Major + 2 Minor. Major: (1) Orphan UsersController zombie endpoint PATCH /api/users/{id}/allow-skip-final silent NoOp (Task.CompletedTask, admin UI tick→BE swallow); (2) stale Mig 28 comment ApprovalWorkflow.cs:78. Wire: Approver F2 branch line 477 AFTER UPSERT opinion 441-468 + BEFORE advance 502 (audit context đủ). BÀI-HỌC: anti-pattern "Transient sentinel" — đặt sentinel + comment "chunk khác cleanup" nhưng chunk đó scope SHIFT → zombie state; recommend explicit K5 cleanup trước K7 test. BẤT-NGỜ: Mig Designer 3938 dòng dominate diff. substring:"S23 t1 Plan K1+K2 cumulative review, spawn" → 2026-05-q1.md

  • [cao] VIỆC: S23 t3 Plan M adversarial spawn review — F1 edge-case Bước 1 + Phase=TraLai display rename. KẾT-LUẬN: VERDICT PASSOneLevel/OneStep edge case keeps ChoDuyet (hot-path ApplyReturnModeAsync Service.cs:287-333): replace Phase=TraLai+clear+return bằng set-pointer(0,1)+summary "không lùi được"→fallthrough→Phase=ChoDuyet preserved; Drafter mode GIỮ Phase=TraLai. 106/106 test (+2 Fact). BÀI-HỌC: backward-compat phiếu UAT đang TraLai vẫn resume (entry fromPhase==TraLai→ChoDuyet). BẤT-NGỜ: 8 user-facing "Trả lại" literal chưa rename = action-verb vs phase-label phân biệt (spec narrow OK). substring:"S23 t3 Plan M cumulative review, spawn" → 2026-05-q1.md

  • [cao] VIỆC: S23 t4-t11 em-main self-review (no spawn) Plan N+O+P+Q+R+S+T+U. KẾT-LUẬN: PASS cumulative — Plan N GetPe PurchaseEvaluationFeatures.cs:765 per-NV ApproverUserId discriminator; Plan O 4-lookup-site cascade fix EnsureCanRejectV2Async:201 + ApplyReturnModeAsync:248 + EnsureEditableForDetailsAsync:72 + AdjustBudgetCommandHandler:311 (+3 regression test); Plan P Controller TransitionPeBody:267 record +3 fields mirror Command — root-cause 2-ngày prod bug F1+F2 wire fail; Plan T DbInitializer DemoSeed:Disabled flag. BÀI-HỌC: grep ENUMERATE TẤT CẢ lookup sites cùng pattern (Plan N point-9 chỉ catch 1/5 → Plan O cascade); Controller body record MUST mirror Command fields. BẤT-NGỜ: DbInitializer auto re-seed loop (IIS recycle) → Plan T flag root-cause. substring:"Plan N+O+P+Q+R+S+T+U, no Reviewer spawn" → 2026-05-q1.md

  • [vừa] VIỆC: S24 Plan AA adversarial spawn review — AwAdminOverview wire (BE+Layout+FE WorkflowMatrixViewPage). KẾT-LUẬN: VERDICT PASS 0 critical/0 major/0 minor — Controller→GetAwAdminOverviewQuery→Handler Where(IsUserSelectable==ius) real call no mock; class-level [Authorize] bare PRESERVED (gotcha #44 protect); DbInitializer ToDictionary PK-unique safe. Low-note: non-admin pass isUserSelectable=false leak workflow chưa ghim (non-sensitive, NOTE only). BÀI-HỌC: enforce admin/non-admin filter = audit follow-up; MenuKeys.All[] không cover dynamic Pe_*_WfView. BẤT-NGỜ: TS FlagCell indexed-access từ Pick 7-keys union compile clean. substring:"S24 Plan AA cumulative pre-commit verify, spawn" → 2026-05-q1.md

  • [cao] VIỆC: S24 Plan AA post-wrap finalize (no re-spawn) — 4 polish chunks back-to-back (px-2 hotfix + redesign v1/v2 + wrap fix). KẾT-LUẬN: PASS — ROI pattern: BUNDLE cumulative verify cho heavy chunk (wire BE / migration / cross-stack); SKIP spawn cho <30min polish (CSS/layout/color) — multi-spawn 4× ~100K = ROI thấp vs 1 spawn heavy ~25K. BÀI-HỌC: UI/UX iteration thuần CSS chỉ cần self-verify build + bro visual confirm. BẤT-NGỜ: Run #210 mixed BE+FE+docs trigger CICD normal — KHÔNG reinforce docs-only anomaly hypothesis. substring:"S24 Plan AA post-wrap cumulative finalize" → 2026-05-q1.md

q2 — S25 / S26 / S28

  • [cao] VIỆC: S25 Plan AB + wrap em-main self-review — ApplyReturnModeAsync refactor cdfd542 (PE Budget Adjust + Trả lại Người-chỉ-định log). KẾT-LUẬN: PASS — gotcha #48 SQLite frozen-clock tie-break (Multi-Changelog.Add cùng SaveChangesAsync transaction → OrderByDescending(CreatedAt).FirstAsync() non-deterministic). BÀI-HỌC: Cat5 ADD = test filter discriminator beyond timestamp = EntityType + Summary keyword; UAT skip dotnet test recurring risk khi BE refactor >100 LOC. BẤT-NGỜ: frozen-clock = same-tick CreatedAt → order ambiguous in SQLite test. substring:"S25 Plan AB + wrap" → 2026-05-q2.md

  • [vừa] VIỆC: S26 Plan AG adversarial spawn review (~25K) + AG2-AG6 em-main solo. KẾT-LUẬN: PASS 12-check 0-issue — commit 0bf6c7e 2-file +346/-116 mirror IDENTICAL 21001E90...; useMemo nested + details/summary 2-level + localStorage Set persist; 0 mig; 111/111 test. BÀI-HỌC: Reviewer spawn cho heavy cross-stack (A+B+C ~370 LOC + 4 sub-agent), em-main solo cho polish iteration (SHA256 IDENTICAL + npm×2). BẤT-NGỜ: AG2-AG6 polish 50-100 LOC ROI thấp → no re-spawn. (Smart-Friend guard active all spawns). substring:"S26 Plan AG pre-commit + AG2-AG6" → 2026-05-q2.md

  • [cao] VIỆC: S28 wrap Layer A governance Reviewer-perspective (em-main solo, KHÔNG actual product review). KẾT-LUẬN: Cat6 ADDED = Authority-boundary check (distinguish "bro suggested X" advisory vs "bro mandated X" directive; flag em-main self-authorized "MANDATORY ... cross-project" rule). ABANDONED-rule: "RAG ghi mọi tương tác mandatory" S28-t2 over-reach — bro caught t4 scope-down về SOLUTION_ERP self-discipline. BÀI-HỌC: implicit consent ("chú ý"/"có thể") ≠ explicit mandate ("BẮT BUỘC"); tag schema [lesson, phase-<N>, <bc>] forward S28+. BẤT-NGỜ: em-main t2 implicit-interpret "chú ý X" AS "MANDATORY policy" = authority-boundary violation caught retroactive. substring:"S28 wrap Layer A governance Reviewer perspective" → 2026-05-q2.md