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>
7.9 KiB
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!=nullremoved); guard EnsureCanRejectV2Async chặn forge non-approver PATCH Reject (defense-in-depth FE+BE); S22+4→S22+5 AdjustBudget refactor dùnglevel.AllowApproverEditBudgetopt-in; Identity password ≥12 chars reject 11-charUser@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-finalsilent NoOp (Task.CompletedTask, admin UI tick→BE swallow); (2) stale Mig 28 commentApprovalWorkflow.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 PASS — OneLevel/OneStep edge case keeps ChoDuyet (hot-path
ApplyReturnModeAsyncService.cs:287-333): replacePhase=TraLai+clear+returnbằ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:765per-NV ApproverUserId discriminator; Plan O 4-lookup-site cascade fixEnsureCanRejectV2Async:201+ ApplyReturnModeAsync:248 + EnsureEditableForDetailsAsync:72 + AdjustBudgetCommandHandler:311 (+3 regression test); Plan P ControllerTransitionPeBody:267record +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Ờ: TSFlagCellindexed-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 skipdotnet testrecurring 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
0bf6c7e2-file +346/-116 mirror IDENTICAL21001E90...; 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