migration-todos.md: insert Phase 10 detail section (10 Plan G-* atomic per-module sprint ~3 thang T6-T8/2026 target, aggressive multi-agent parallel ROI ~70%). 4 quyet dinh anh chot S32: FULL 11 module scope + single schema dbo mo rong Mig 34-42 + reuse Workflow V2 extend ApplicableType +5 values + chunk per-module Plan rieng. Sequence Phase 9 stabilize first per anh main "tuan tu theo ke hoach tot nhat". G-P1 pure web GPS check-in (no device). G-H2 seed reference NamGroup demo data. 4 MEMORY sub-agent: append S32 startup entry (Investigator + Implementer + Reviewer + CICD Monitor) ghi nhan S31 RAG retrieval.py fix + S29 Plan CA+B deploy + Pending tasks anh main co the SendMessage reuse. Implementer 36.2KB OVER 25KB threshold FLAG curate. Refs: docs/CLAUDE.md Phase 6-9 done. docs/STATUS.md S31 wrap. gotcha #51 INFRASTRUCTURE vs DEMO seed gate (Phase 10.3 enum extend caution). gotcha #52 qdrant.search removed (RAG layer stable post-S31 fix). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
27 KiB
Investigator Agent — Persistent Memory
Persistent diary cross-session. Auto-injected first 200 lines / 25KB at spawn. Update BEFORE every stop. Curate when > 25KB.
🎯 Role baseline
Read-only research + audit for SOLUTION_ERP codebase. Tools: Read, Grep, Glob, Bash, WebFetch, WebSearch. Output: concise structured findings under 500 words.
📋 Patterns proven (cross-session)
Pattern: Smoke verify catalog SOLUTION_ERP
- Bearer auth từ
https://api.solutions.com.vn/api/auth/login(POST email + password) - Status code matrix expected vs actual + JSON output + MD audit
- Test credentials:
admin@solutions.com.vn / Admin@123456(full) ORnv.test@solutions.com.vn / TestUser@123456(Drafter UAT scope)
Pattern: Schema scan via sqlcmd
# LocalDB Dev (runtime — primary)
sqlcmd -S "(localdb)\MSSQLLocalDB" -d SolutionErp_Dev -Q "..."
# LocalDB Design (ef tooling)
sqlcmd -S "(localdb)\MSSQLLocalDB" -d SolutionErp_Design -Q "..."
# Production (qua SSH vietreport-vps)
ssh vietreport-vps "sqlcmd -S .\SQLEXPRESS -d SolutionErp -U vrapp -P '...' -Q '...'"
Common queries: sys.columns, sys.triggers, __EFMigrationsHistory, COUNT(*), sys.indexes.
Gotcha: 2 LocalDB distinct (memory feedback_designtime_runtime_db):
_Dev— runtime API (appsettings.Development.json ConnectionStrings:Default)_Design—dotnet ef migrations add/updatedefault target- Use
--connection "Server=(localdb)\MSSQLLocalDB;Database=SolutionErp_Dev;..."override khi cần Dev specifically.
Pattern: Controller audit
- Grep
\[Route\("api/[a-z]+"\)\]enumerate ~30+ controllers - Grep
\[Authorize(Policy = "..."audit per-action policy (gotcha #44 silent 403 class-level quá strict) - Grep
IActionResultvsActionResult<T>— typed return preferred - Grep
// Mock/alert(/setEditing(null) // close UI— wire claim bugs
Pattern: Memory cross-reference
19 memory entries tại C:\Users\pqhuy\.claude\projects\D--Dropbox-CONG-VIEC-SOLUTION\memory\ (S20 +2 turn 11/12, S21 +2 turn 5):
MEMORY.md— indexproject_solution_erp.md— cumulative narrative S1-S17feedback_per_chunk_commit.md— 5-chunk A-E disciplinefeedback_uat_skip_verify.md— Phase 9 skip test rulefeedback_drastic_refactor_scope.md— defer dedicated sessionfeedback_audit_reuse_before_clone.md— audit-first pattern (Investigator natural fit)feedback_service_hook_vs_endpoint.md— derived state hook patternfeedback_n_stage_workflow_pattern.md— DEPRECATED (Mig 21 flat workflow replaced)feedback_designtime_runtime_db.md— 2 LocalDB distinctfeedback_md_compact_narrative.md— §6.5 KEEP narrative rulefeedback_unittest_timing.md— §7 test timingfeedback_cron_monthly_limitation.md— Cron SDK 7-day expirefeedback_user_manual_style.md— non-tech docs stylefeedback_node_cicd.md— Node 20.x pinfeedback_responsive_laptop_breakpoint.md— 4-tầng responsive pattern (S20 t11)feedback_multi_agent_setup.md— 4 sub-agents setup discipline (S20 t12 init 3 + S21 t1 +cicd-monitor)feedback_rag_hybrid_pattern.md— RAG Hybrid Cách A planning (S21 t2, 5 dự án future)feedback_ef_migration_backfill_reorder.md— ADD→BACKFILL SQL→DROP manual reorder (S21 t5 Mig 29)feedback_per_nv_permission_scope.md— Multi-role flag split scope per role (Approver Level vs Drafter User), S21 t4→t5 refactorreference_session_prompts.md— canonical session start template
Pattern: External research priority sources
anthropic.com/engineering/(official patterns)cognition.ai/blog/(Devin lessons)philschmid.de+eugeneyan.com+hamel.dev(senior engineers)learn.microsoft.com/en-us/aspnet/core/(.NET 10 official)tanstack.com/query/latest(TanStack Query)
⚠️ Anti-patterns observed
- ❌ Skip MEMORY.md update before stop — lose knowledge tài sản
- ❌ Vague conclusion "seems like" / "probably" — em main rejects
- ❌ Missing file:line refs — non-verifiable evidence
- ❌ Exceed 500 words — em main reads too slow
- ❌ Scope drift to architectural recommendations — em main decides, not me
🧠 SOLUTION_ERP context essentials (auto-load)
- DB Dev:
SolutionErp_DevLocalDB (59 tables / 30 migrations / Mig 30 latestAddAllowApproverEditBudgetToLevels) - DB Design:
SolutionErp_Design(ef tooling distinct) - DB Prod:
.\SQLEXPRESS/SolutionErp/vrappuser via SSHvietreport-vps(fallbackC:\inetpub\solution-erp\api\appsettings.Production.jsonkhi$env:PROD_DB_PASSWORDempty — CICD Monitor discovery S21 t5) - Tech stack: .NET 10 Clean Arch (Api → Application ← Domain + Infra) + CQRS MediatR + EF Core 10 + 2 React 19 Vite 8 TS 6 (fe-admin :8082 + fe-user :8080) + SQL Server + Gitea Actions CI + IIS prod
- Live deploys (Prod UAT): https://api.solutions.com.vn · https://admin.solutions.com.vn · https://eoffice.solutions.com.vn
- Gitea remote: https://git.baocaogiaoduc.vn/vietreport-admin/solution-erp
- Gitea Actions API: path
/api/v1/repos/.../actions/tasks(NOT/actions/runs— 404). Cache stale ~2 min (gotcha #46) — cross-check VPS file mtime - SSH VPS:
ssh vietreport-vps(config~/.ssh/configuser=Administrator key=id_ed25519) - Gotchas active: 47 (+1 #48 SQLite tie-break pending docs — Plan AB Chunk A2 S25 t1; reference
docs/gotchas.md) - Tests baseline: 111 PASS (S22 baseline 104 + 7 PE WF cumulative; S25 Plan M tests SQLite tie-break re-stabilized Chunk A2) — Phase 9 UAT skip per chunk (memory
feedback_uat_skip_verify) - Endpoints: ~146 (S22 +3 stable: PATCH /users/{id}/allow-skip-final + PATCH /pe/{id}/budget-adjust + GET /pe/{id}/attachments/{attId}/view)
- Memory user-level: 23 entries (+2 S25: Plan AC2 FE merge synthetic recovery + Plan AF userMap fallback patterns)
- Users: 30 demo + 33 active prod (13 cũ + 20 mới S22+2 role-based: act/bod/equ/fin/hra/pm/qs prefix
.nv/.pp/.tp+ bod.1/2). Password policy ≥12 chars (S22+2 discovery,TestUser@2026) - API auth response:
accessToken+refreshToken+user(S22+2, NOTtoken) - Master HEAD reference: check via
git log -1 --format='%H' - 6 skills:
contract-workflow·permission-matrix·form-engine·ef-core-migration·dependency-audit-erp·iis-deploy-runbook
🔄 Active workflow schemas (V1 + V2 coexist post-Session 17)
- V1 Mig 21 flat workflow —
WorkflowDefinitionpin với PE/Contract cũ. Match Dept+PositionLevel. - V2 Mig 22-30 —
ApprovalWorkflowpin với PE mới + matchApproverUserId1-1 OR-of-N cùng Cấp. Steps (Phòng) > Levels (Cấp). PE đã wire V2. Contract V2 PENDING (Plan F drop V1 ABORTED S22+4 — Contract entity HOÀN TOÀN V1 chưa wire V2 + 4 PE V1-only + 19 PE V1+V2 mix).- Mig 25 IsUserSelectable (admin pin/unpin per workflow cho user pick)
- Mig 26 PE Level Opinions UPSERT (service hook khi Duyệt)
- Mig 28 (S21 t4) 6 Allow* workflow-level — REPLACED by Mig 29
- Mig 29 (S21 t5) Allow* refactor per-NV: 5 flag on
ApprovalWorkflowLevels(F1+F3 per Approver slot) + 1 flag onUsers.AllowDrafterSkipToFinal(F2 per Drafter) - Mig 30 (S22+5) F4
AllowApproverEditBudgetper-Level slot onApprovalWorkflowLevels— admin Designer tick per slot cho Approver được edit Budget khi review. Pattern reinforced 2× với Mig 29 F1+F3: default = admin opt-in per slot, KHÔNG = mở rộng default. Cross-ref memoryfeedback_per_nv_permission_scope.mdproven cumulative Mig 29 + Mig 30.
State machine 5 trạng thái phiếu PE: Nháp / Đã gửi duyệt / Trả lại (TraLai=98) / Từ chối / Đã duyệt.
Mode Trả lại 4 option per-Level (S21 t4-t5 Mig 28→29):
- OneLevel = lùi 1 Cấp cùng Step (peer review)
- OneStep = lùi sang Bước trước Cấp cuối
- Assignee = pick NV đã ký runtime (PeLevelOpinions)
- Drafter = Phase=TraLai clear pointer (S17 backward compat default TRUE)
3 mode đầu giữ Phase=ChoDuyet lùi pointer. Mode Drafter giữ Phase=TraLai. Admin bypass level.Allow* flag.
📅 Recent activity (last 10 FIFO)
-
2026-05-26 (S32 startup — em main proxy verify context + S31 RAG v1.3 baseline awareness): S31 đóng ~1.5h ngày 2026-05-26 với RAG v1.3 baseline PASS recall@5=1.000 (11/11 queries) + avg_rerank=0.847. Root cause S31 fix:
AI_INFRA/claude-rag/lib/retrieval.pyxài API cũqdrant.search()đã bị qdrant-client 1.18 xóa → đổi sangquery_points().pointsAPI mới. Gotcha #52 NEW add vàodocs/gotchas.md(Qdrant search removed). Downstream impact: MCP toolsmcp__rag-unified__search_memory+mcp__rag-unified__cross_project_searchlive PASS post-CLI restart — test query "gotcha 52 qdrant search removed" top_k=3 trả 3 chunks rerank scores 0.515 / 0.479 / 0.461 (all dưới threshold 0.7 cao mong đợi vì query về symbolqdrant.searchchỉ match doc rag-setup-plan.md historical, KHÔNG match gotcha #52 doc — doc chưa indexed lần re-index gần nhất hoặc chưa ingest gotchas folder). Memory size 25.8 KB ĐÃ VƯỢT curate trigger 25KB — em append entry này + flag em main curate cuối S32 (archive S25 + S26 verbose entries →archive/2026-05-q2.md). Pending tasks anh có thể spawn em qua SendMessage: (a) Plan B-Wrap test bundle BW1-BW7 (regression ApproveV2Async Contract V2 + ApplicableType=3 validate), (b) Phase 9 UAT audit Contract V2 wire prod usage (V1 7 contract + V2 sampleQT-HD-V2-001smoke verify), (c) gotcha #52 doc verify trong RAG index (cross-checkdocs/gotchas.mdđã re-ingest sau S31 fix chưa). State delta S29 → S32: 30 mig → 33 mig (Plan B Contract V2 Mig 32+33 + Plan CA role CatalogManager) · 59 → 60 tables · ~146 → ~148 endpoints · gotcha 47/48 → 52 (+4 #49 Plan B + #50 Plan CA INFRASTRUCTURE seed gate + #51 + #52 Qdrant) · 111 test PASS UNCHANGED (UAT defer test-after) · 23 → 25 memory user-level. Token cost spawn này ~10K. -
2026-05-22 (S29 wrap — Plan CA + Plan B pre-flight 2 spawns + 3 patterns NEW): S29 close 2 big plans cumulative. Plan CA (Move Cấu hình danh mục admin → eoffice) 7 commits
06a441c..6eec8d7push deployed Run #229+#230 PASS. Plan B (Contract V2 wire mirror PE V2 pattern Mig 22-26) 11 commits58898e8..38f1c4dpush deployed Run #231+#232 PASS. Investigator role 2 spawn: (1) Plan CA pre-flight audit (agentId a7ab5576c77ee3730, ~15K token): map 9 menu danh mục terrain + GOTCHA tree-inherit Catalogs↔Master + recommend chunk structure A/B/C/D. fe-user component parity verified (DataTable + PageHeader + PermissionGuard + 6 shadcn ui). DbInitializer SeedAdminPermissionsAsync admin role grant CRUD 27 menu key. Permission Matrix dynamic load /api/menus → tự reflect post-move. (2) Plan B pre-flight audit Contract V1 state (agentId abf91b30391fb0cdb, ~25K token): mapContract.cs25 fields (V1 only) +ContractPhaseenum 12 values (TraLai=98 + TuChoi=99 ready) +ContractWorkflowService.cs220 LOC V1 only + sqlcmd prod 7 V1 contract (Phase 2-8 active workflow) + PE Mig 22-26 reference templates + impact assessment (COEXIST V1+V2, KHÔNG drop V1) + re-chunk 6 chunks (split A → A1 entity + A2 mig). 3 surprise: ApprovalWorkflows Prod ZERO ApplicableType=3 (Chunk A2 must seed sample) +RejectedAtStepIndexdrift deprecated + ContractType 7 variants generic ApplicableType=3. Patterns proven NEW Investigator perspective S29: (a) 9-menu permission terrain map pattern (Plan CA) — Investigator inventory file paths + line ranges + component parity check + recommend chunk before delegate Implementer. ROI cao. (b) V1+V2 coexist boundary (Plan B) — KHÔNG drop V1 vì 7 prod contract pinned. Mirror PE Mig 22-24 spec. (c) Reference template paths cross-module mirror (PE → Contract V2): Investigator cite EXACT line ranges (PE Mig 23:14-31, Mig 24:14-17, Mig 26 UNIQUE composite, Service ApproveV2Async 446-634, 519-546 UPSERT, 774-783 ResolveActor) → em main + Implementer chỉ cần mirror rename entity. ROI rất cao saving 30%+ time. Anti-patterns observed: (a) Investigator KHÔNG verify endpoint exists end-to-end qua live curl — defer to CICD Monitor stage 4. (b) Investigator output sometimes verbose >700 words → em main hỏi cô đọng <500 next time. -
2026-05-22 (Plan B Contract V2 wire pre-flight audit — Q1-Q5 + Bonus re-chunk): Em main spawn Investigator pre-flight Plan B priority HIGH. 5Q audit + Bonus chunk refinement. Tag schema:
[audit, phase-9, contract]. Findings: (Q1)Contract.cs:8-5825 fields, V1 ready (WorkflowDefinitionId line 22 + CurrentWorkflowStepIndex line 39 + Phase line 12 + RejectedAtStepIndex line 40) MISSINGApprovalWorkflowId Guid?+CurrentApprovalLevelOrder int?→ need Mig 32 add. (Q2)ContractPhase.cs:14-2812 values ready ChoDuyet=10 + TraLai=98 + TuChoi=99 mirror PE.ContractWorkflowService.cs:23-219220 LOC V1 ONLY. NO V2 branch. Match Dept+PositionLevel line 113-126. Gen mã HĐ line 148-155 trigger last step → Phase=DaPhatHanh (terminal khác PE DaDuyet). (Q3) Prod: 7 Contracts 100% V1Pinned (Mig 21 flat WorkflowDefinitionId), 6 in-workflow Phase 2-8 → MUST coexist V1+V2, KHÔNG drop V1. ApprovalWorkflows Prod: 2 rowsApplicableType=1 (DuyetNcc)ZEROApplicableType=3 (Contract)chưa seed. (Q4) Mig 2220260508053749_AddApprovalWorkflowsV2.cs:14-1273 CREATE TABLE shared cho cả PE+Contract, Mig 32 chỉ cần ADD COLUMN tạiContracts. Mig 2320260508072821_AddApprovalWorkflowIdToPurchaseEvaluation.cs:14-31template 15 LOC cookie-cutter rename Pe→Contract. Mig 2420260508074937_AddCurrentApprovalLevelOrderToPe.cs:14-173 LOC.ApproveV2AsyncPurchaseEvaluationWorkflowService.cs:446-634189 LOC clone mẫu — load AW.Steps.Levels + match actorId ∈ pendingLevelGroup.ApproverUserId (line 484-495) + UPSERT opinion (line 522-546) + advance level/step (line 605-633) + skipToFinal F2 (line 561-602). Branch entry pattern line 167-171 ternaryif (evaluation.ApprovalWorkflowId is Guid awId) ApproveV2Async else ApproveV1Legacy. (Q5) Risk LOW — schema 80% shared. F1-F4 7 flags Mig 29+30+31 trênApprovalWorkflowLevels(entity line 86-114) inherits FREE Contract. Risk MEDIUM: ContractType discriminator — 1 workflow serve ALL 7 ContractType vs per-type? PE chỉ 2 type. Defer Q em main. Bonus re-chunk 6 chunks: A1 entity 5 LOC (em main) + A2 Mig 32 cookie-cutter (Implementer) + B Service ternary 189 LOC clone adapt gen mã HĐ terminal (em main critical cross-stack) + C Mig 33 ContractLevelOpinions cookie-cutter (Implementer) + D FE-User Workspace Select V2 (Implementer mirror) + E FE Section 5 LevelOpinionsV2 dynamic (Implementer mirror). Surprises: (a) ApprovalWorkflows Prod ZERO ApplicableType=3 — recommend Chunk A2 include DbInitializer seed sample. (b)RejectedAtStepIndexContract line 40 DEPRECATED chưa marked obsolete drift với PE line 50. (c) ContractType 7 variants vs ApprovalWorkflow generic ApplicableType=3 — future Mig 34 có thể cầnContractTypes int[]filter nếu Solutions cần per-type workflow. Recommendation: PROCEED coexist V1+V2 pattern, 6 chunk re-chunk. Token ~25K. source_path:solution_erp/audit/investigator-plan-b-contract-v2-preflight-2026-05-22. -
2026-05-22 (S28 wrap — Layer A governance internalized + tag schema mandatory forward): S28 5-turn arc t1 RAG ROI verdict → t2 over-reach mistake → t4 bro caught → t5 Layer A active. Investigator agent absorb 3 rules forward: (1) Tag schema mandatory every RAG ingest
[<type>, phase-<N>, <bc-or-module>]— type ∈ {bug, plan, audit, schema, ui-pattern, decision, retrospective, gotcha-doc}; phase enum 11 (phase-9UAT current); bc/module 8 domain {contract, pe, budget, master, identity, forms, notifications, audit-log} + 5 cross-cutting {cicd, infra, rag, governance, deploy}. (2) 4-category default + skip list — skip ephemeral state ("S28 t3 startup ngày 22"), pure file paths không context, single-file < 5-line edit confirmation. Investigator output report tags MUST include all 3. (3) NO self-authorize cross-project rule — lesson S28 t4: stay scope-down SOLUTION_ERP self-discipline, don't generalize policy without bro consent. Pre-flight audit query patterns Layer A §6.2 internalized: Pattern Alookup_gotcha_<id>(top_k=3, narrow), Pattern Bverify_precedent_pattern_X(top_k=3 thay default 10 — broad similarity rerank surface 3 best matches), Pattern Cfind_code_symbol_<class.method>(top_k=5, symbol-anchor). Weekly Friday eval ritual: Investigator support Plan B Contract V2 wire pre-flight audit kick-off khi bro launch. Cumulative audit checklist (foundation cicd-monitor MEMORY S22+5→S23 t6 10-surface-point per-NV): (a) Contract entity V1 state inspectDomain/Contracts/Contract.cs+WorkflowDefinitionId, (b) Mig 22-23/26 PE V2 mirror reference confirm pattern reusable, (c) 4 PE V1-only audit migrate gap (per memory S22+4 Plan F ABORT), (d) 7 V1 contract scope drop boundary, (e) verify 10-surface-point per-NV checklist S22+5 cumulative reusable Contract V2 wire trước Mig 32 schema design. source_path convention output:solution_erp/audit/investigator-<topic>-<date>standardized cho tag schema BC=peorcontractswitch per task. Lesson abandoned: S28 t2 "ghi RAG mọi tương tác" rule ABANDONED — Investigator KHÔNG mass-ingest, only specific findings with full tag schema. Audit retroactive S20-S26 "Investigator spawn" claims (memory log discrepancy registry NOT loaded vs token cost ghi 28-40K) defer S28+ priority #4 — uncertainty preserve cross-session, không retract memory unverified. -
2026-05-22 (S27 wrap-up em main proxy - retrospective Investigator): Investigator pre-flight CRITICAL miss: nếu spawn pre-Plan A.3 (RAG manual control build) → would have catch Qdrant Web UI static missing PRE-em main write rag-dashboard.ps1 link
localhost:6333/dashboard. Pattern reinforced: pre-flight infrastructure audit MUST spawn Investigator trước khi em main claim "X work" trong docs. Em main S27 SOLO miss external dependency check (Qdrant Web UI separate repo from binary). Anh pqhuy catch via UAT browser → escalate.Audit cumulative S20-S26 memory log entries claiming "Investigator spawn" - re-verify retroactive: Per pitfall confirm spawn
investigatoragent type NOT FOUND trong session S27, có nghĩa registry chưa bao giờ load trong session này. Nhưng memory log S23 t1 K0 + S25 t1 audit Bug 1+2 + S26 Plan AG audit 5Q + Plan AI RAG research đã ghi "spawn Investigator" với token cost 28-40K. Possibility: (a) Previous sessions có registry load thành công (Claude Code version cũ hơn / file format khác / hot-reload sau /agents UI invoke), hoặc (b) Em main misattribute - actually spawngeneral-purposeagent default. Cần audit history Claude Code logs để xác minh - ngoài scope S27. For now: trust prior memory entries but FLAG uncertainty cho future investigation. -
2026-05-22 (Curate session em main): Archived 10 verbose Recent activity entries S21 → S24 Plan AA →
archive/2026-05-q1.md. KEEP: S25 Bug audit + wrap, S26 Plan AG + Plan AI RAG, 2026-05-11 setup. Patterns proven section + Active workflow schemas section preserved. Memory size before: 34.9 KB → after: target ~20-22 KB. -
2026-05-19 (S25 t1 spawn audit 2 bug critical UAT — Changelog logging missing): Em main report 2 bug UAT: (1) Budget Adjust 2×click → "Lịch sử thay đổi" KHÔNG show 2 entry. (2) Return Assignee mode F1 click → "Lịch sử thay đổi" KHÔNG show return action. Audit 5Q: Q1-DB state Prod SSH fail (auth), fallback code inspect. Q2-Budget handler:
PurchaseEvaluationFeatures.cs:379-387ĐÃ log changelog EntityType=Header + Action=Update + summary diff → code ĐÚNG, likelihood FE filter bug or UAT DB stale. Q3-Return handler:PurchaseEvaluationWorkflowService.cs:215-378 ApplyReturnModeAsyncZERO changelog log — 4 mode branches (OneLevel/OneStep/Assignee/Drafter) mutate pointers only, return summary, callerTransitionAsync:100 LogTransitionAsynconly logs phase transition KHÔNG log mode side-effect. Q4-Schema:PurchaseEvaluationChangelog.cssupport EntityType=Workflow(5) enum but ZERO code populate — schema incomplete missing Kind/ChangeType subtype enum to disambiguate "budget adjust" vs "detail edit" vs "return mode" (all Header/Workflow entity cùng Action.Update). Q5-FE: Query handlerListPurchaseEvaluationChangelogsQueryHandler:1050-1064KHÔNG filter logic — returns ALL entities. FE query component unknown (fe-user source not easily searchable) but likely filter EntityType == (Supplier|Detail|Quote) omit Header+Workflow → Bug 1 Budget (Header type) hidden, Bug 2 Return (Workflow type unlogged vậy). Root cause B1: FE filter skip Header updates OR Schema gap (Header.Update collision: budget vs section 2 edit). Root cause B2: Handler intentionally skip logging (no companion audit table like PurchaseEvaluationApprovals for return history). Fix path B1: Option A (add Kind enum — 30 LOC schema+handlers) vs B (extend EntityType — 20 LOC) vs C (FE filter conditional show Budget — 10 LOC FE). Fix path B2: Adddb.PurchaseEvaluationChangelogs.Add()per mode (15-25 LOC 1 file). Cross-ref pattern memory: S23 t3 lookup bug (Level.Order collision per-NV Mig 29) — schema Mig 29 OR-of-N refactor created similar subtype ambiguity. Surprise:EntityType.Workflow=5enum value design-only, unused 4+ mig history. Recommendation: B2 fix first (clear win, 1 file BE), then B1 design (schema + cross-module pattern audit Contracts). Token ~28k. -
2026-05-19 (S25 wrap — Plan AB Bug 1+2 audit + 6 follow-up plans em main solo): Pre-Plan AB audit ~28K confirm root cause: Bug 1 Budget Adjust Handler ĐÃ log Changelog (Header+Update) nhưng FE HistoryTab filter strict TraLai-only loại. Bug 2 ApplyReturnModeAsync 4 mode KHÔNG add Changelog.Add() — chỉ caller LogTransitionAsync log phase transition. Recommended fix path: BE add log return mode + FE filter relax + Decision badge differentiation. Subsequent em main solo follow-ups (Plan AC..AF, KHÔNG re-spawn Investigator): AC capture pre-call Step/Level state + skipToFinal comment enrich + FE Decision badge; AC2 FE merge synthetic Reject rows từ Changelog (reversible recovery KHÔNG DB touch); AD drop misleading dual-phase badges + parse semantic next-target hint via regex
Chuyển phase X → Y+ comment keyword "Trả về"/"vượt cấp"; AE BE preventive batch UserName fix 9 Changelog.Add sites (Drafter+Detail+Quote+Adjust); AF FE userMap fallback từ embedded domain data PeDetailBundle (drafter+approvals+approvalFlow+levelOpinions+departmentOpinions) — no extra API fetch. Patterns reusable Contract V2 audit recovery + Budget changelog UI: (a) synthetic recovery FE merge từ existing audit table, (b) userMap fallback từ embedded domain data, (c) drop misleading badges + semantic hint via regex parsing, (d) preventive batch fix systemic gap. Cross-reffeedback_service_hook_vs_endpoint(audit log derived state) + new pattern user-level: FE merge synthetic + userMap fallback. Tokens cumulative em main this session ~340K (mostly solo iterations, sub-agent leverage ~62K total). CICD result: 7 commitse23f51c..506cadapush remote, runs #215 FAIL (Plan M tests SQLite tie-break re-emerge) → #216 PASS (Chunk A2 SQLite tie-break fix) → #217-#221 PASS streak. Gotcha #48 SQLite tie-break pending docs. -
2026-05-21 (S26 spawn Plan AG 5Q audit — PE List tree view feedback Tra Sol): Bro UAT 2026-05-21 screenshot phàn nàn UI Duyệt NCC flat list "đám rừng" + propose Outlook-style folder template. Em main spawn Investigator audit 5Q: Q1 prod data scale (SSH auth fail, fallback code inspect — ~50-200 projects × 5-15 PE typical). Q2 Project entity
Master/Project.cs:5-14extends AuditableEntity với Code+Name+dates+Budget+PM+Note, MISSING MaxLength + navigation tới PE → ready for Phase 2 ProjectPackage table mở rộng. Q3 PE List structurePurchaseEvaluationsListPage.tsx:1333-panel gridlg:grid-cols-[340px_1fr_360px]flat<ul><li>line 199-252 + pageSize 50 + filter type/phase/awId/search. Q4 shadcn fe-user component GAP THIẾU Accordion/Collapsible/Tree/Card/Badge (chỉ Button/Dialog/Input/Label/Select/Textarea) → Phase 1 fallback HTML<details>/<summary>native + inline badge<div>(verified S24 Plan AA pattern). Q5 Mig 32 prep namingAddProjectPackageTablefollow cumulative pattern. Recommend Approach C Hybrid: Phase 1 FE-only group view ~160 LOC × 2 app (1-2 ngày) + Phase 2 ProjectPackage schema (3-5 ngày defer post-UAT). Implementer Case 2 cookie-cutter mirror 2 app ACCEPT. Token ~30k. -
2026-05-21 (S26 spawn Plan AI RAG distribution research — 4 study cases industry-validated): Bro plan setup RAG cho 5 dự án cùng máy localhost share infrastructure. Investigator deep research 7Q: Anthropic patterns + community tools + multi-tenant architecture + distribution mechanism + auth + cost + sync. Findings 4 study cases: (1) Cursor — Merkle tree + Turbopuffer + 92% similarity reuse pattern, secret key derived Git commit hash, per-team index sharing cut indexing hours→seconds. (2) Cline Memory Bank — markdown + JIT retrieval + git-native sync. (3) Continue.dev Hub — slug-based YAML config sharing centralized. (4) Sourcegraph Cody — interesting anti-pattern, BỎ embeddings sang Search API + graph IR scale 100K+ repos enterprise (alternative if good search infra sẵn). Multi-tenant 3 patterns: Single index (pool, cheap), Per-tenant isolated (silo, expensive), Hybrid base+delta (Cursor pattern). Distribution combo winner cho 5-dev team: FastMCP HTTP server VPS Hetzner $15/tháng + git-sync embeddings snapshots committed to private repo. Auth JWT RS256 + role scopes + document-level ACL. Cost reality 5 dev ~$20/month vs cloud Qdrant $50/month. Sync git-based weekly cron (real-time chỉ cần khi team > 10 dev). Surprise: Voyage AI 200M tokens/month free tier cover 5 devs comfortably — coi như chỉ tốn $15 VPS. Anthropic standards 9/9 matched + community best practices 6/7 matched (Sourcegraph alternative N/A cho memory-heavy). Plan AI architecture chốt với em main: User-level Global MCP (Pattern C — 1 server localhost serve 5 project) thay vì team VPS pattern (anh single dev 5 dự án). Token ~40k.
-
2026-05-11 (setup): Investigator agent initialized. Baseline knowledge load complete (44 gotchas + 14 memory entries + 6 skills + 27 mig + 81 test pass cumulative). No investigations performed yet. Awaiting first SendMessage from em main.
🔄 Curate trigger
- Memory size > 25KB → archive recent entries to
archive/<period>.md - Duplicate entries detected → merge
- Stale > 3 months → remove
Last curate: 2026-05-22 em main full curate — archived 10 verbose entries (S21 → S24 Plan AA) → archive/2026-05-q1.md. KEEP: S25 audit + wrap (Bug 1+2 Changelog), S26 Plan AG + Plan AI RAG (2 spawn), setup baseline. Patterns + Active workflow schemas foundation preserved. Per feedback_md_compact_narrative.md §6.5 — archive preserves full verbose entries cho cross-session audit retrieve. Next curate trigger: > 25KB OR Plan B Contract V2 wire complete.