Commit Graph

96 Commits

Author SHA1 Message Date
69cb3937bb [CLAUDE] Master: nạp master data thật từ Excel (62 dự án + 71 hạng mục + 3 NCC) + Project +4 cột (Mig 48)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m33s
Nạp master data công ty từ file Excel 'HẠNG MỤC CÔNG VIỆC DỰ ÁN':
- 62 Projects (Mã + Năm; tên/CĐT/địa điểm/gói thầu cho ~6 dự án có chi tiết)
- 71 WorkItems: Vật tư 16 · Thầu phụ 30 · MEP 9 · Thiết bị 16
- 3 Suppliers (TRUONGGIANG/TANPHU/TGN)

Mig 48 AddProjectMasterFields: Project +4 cột nullable (Year/Investor/Location/Package) + ProjectFeatures DTO/Create/Update + ProjectsPage form ×2 app (SHA256 mirror).
SeedRealMasterDataAsync per-code idempotent, UNGATED → reaches prod (coexist demo). FLOCK01 collision → skip (demo wins).

Verify: build 0-err · test 216 PASS · runtime Dev proof (data landed, Investor col populates). Provenance: scripts/master-import-data.generated.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 09:27:04 +07:00
f8640d6f18 [CLAUDE] Docs: S54 closeout — IT ticket reassign cross-stack (Run #376) + harvest reconcile + monitor GATE PASS
- STATUS/HANDOFF: S54 IT-staff reassign (ca4b602, test 216, bundle rotate cả 2), user-mem re-ground 20, Phase 9 Ops scope cho NEXT
- Session log 2026-06-08-S54 + cicd-monitor MEMORY (Run #376, H2-gap post-deploy lag)
- H2 harvest GATE PASS 5/5 (residual reconcile verified) + H1 tooling 4-mặt stable
- flag monthly 2026-07-01: sys.tables 93-vs-92, STATUS re-tier S50..S38

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 16:28:53 +07:00
ca4b60277b [CLAUDE] Office: IT staff tự reassign ticket — authz Admin-OR-IT + capability endpoint (S54)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m17s
- BE: GetAssignableItStaffQuery {canReassign,staff} capability endpoint + AssignItTicketHandler authz Admin-OR-dept-IT (Forbidden) + assignee-must-IT (Conflict); controller /assign hạ [Authorize(Roles=Admin)]→[Authorize] (handler enforce fine-grained data-driven)
- FE: fe-admin + fe-user ItTicketsPage SHA256-identical (reverse S53 divergence), nút gate by canReassign, dropdown từ /assignable-staff (không /users)
- Test: +13 authz guard (203→216 PASS), reviewer PASS (role-string Admin chain-verified real)
- No migration (DepartmentId reuse), no menu change

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 16:12:14 +07:00
18d397f095 [CLAUDE] Docs: S53 H1-gate residual fixes — ef-core Mig 44-47 table rows + count stragglers + database-agent verified-runtime flip
Session-end H1 tooling-chốt (formal monitor gate on /session-end re-trigger) caught 4 residuals em-main self-check missed:
- ef-core-migration/SKILL.md: added Mig 44/45/46/47 table rows + totals 91->92 bang / last Mig 43->47 (header said 47 but body stopped at 43 — internal contradiction).
- dependency-audit-erp/SKILL.md:153 gotcha 56->57.
- agents/README.md:155 'All 10 agent'->11 (RAG-MCP grant line straggler).
- database-agent.md: SELF-CHECK [x] verified-runtime S53 + nac reword (honest: DB1/DB10 exercised, DB2-DB11 per-task).

H2 harvest gate PASS 5/5 (separate run). Tree was clean before this; this closes the H1 residual loop.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:34:02 +07:00
d8cd111532 [CLAUDE] Docs: S53 closeout — gotcha #57 EXT Master (Mig 47) + P11-D/E + database-agent verified-runtime + doc-drift
Session 53 closeout (HMW-mode ON, 'làm hết' full close). Code already shipped in 44b9e54 (Mig 47, Run #260) + dbf6648 (C+D, Run #261), both prod-verified.

- STATUS/HANDOFF: S53 entry (mig 46->47, test 200->203, menu +Off_AttendanceReport, bundle admin DfCfHUE9, database-agent verified-runtime).
- Doc-drift E (H1 top-5): ef-core skill 43->47, agents/README roster 10->11 + plugin nac, CLAUDE.md root 45->47 mig + 186->203 test, docs/CLAUDE.md 56->57 gotcha + 91->92 ERD.
- adap-report: database-agent executed-file -> verified-runtime (spawn-test caught Mig 46-unapplied-local).
- session log 2026-06-08-S53 + 4 agent diaries (S53 work).
- Memory: +project_database_agent_verified_local_drift (user-memory, outside repo).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 15:24:45 +07:00
f440c194a8 [CLAUDE] Docs: S52 closeout — Phase 11 D+E+F deployed + database-agent + session-limit recovery
STATUS/HANDOFF S52 (Phase 11 product COMPLETE, test 200, Mig 46, roster 11, bundle DYfjnpY0/_3S0BPJ2). Session log. Proxy-append implementer-backend + test-specialist diaries (Wave 2 agent killed by session-limit truoc MEMORY step).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 13:38:12 +07:00
6a664298fa [CLAUDE] Office: P11-E AttendanceReport+Excel+OtPolicy + P11-F MaTicket codegen (Wave 1)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m10s
P11-F: MaTicket gen-on-create qua WorkflowAppCodeGen (IT/2026/NNN Serializable atomic, kanban no-workflow). P11-E: GetAttendanceReportQuery monthly aggregate (day-type weekday/weekend/holiday OT x OtPolicy multiplier in-memory) + AttendanceReportExcelExporter (ClosedXML) + 2 endpoint Admin-only + fe-admin AttendanceReportPage. Migration-free. +5 test (186->191). reviewer PASS (gotcha #44 role-string verified, 0 blocker).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 12:34:48 +07:00
e9ee97fb3b [CLAUDE] Docs: adopt database-agent (DB1-DB11 read-advisory) — roster 10->11 + adap-report
AI_INFRA broadcast 2026-06-08-Agent-database-codebase-agents. database-agent STRONG-FIT (DB11 RowVersion va lost-update gap S43); READ-advisory tier (implementer-backend van author). codebase-agent SKIP n-a (investigator cover + csharp-lsp Windows no-op). Nac executed-file -> verified-runtime CHO CLI restart.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 12:33:52 +07:00
3b67a2bd19 [CLAUDE] Docs: S51 session-end closeout — error-ledger §L + monitor spawn-records + root counts
§L.a/b: E-002 RESOLVED (gotcha #57 LeaveType/Shift/OtPolicy filtered Mig 45) + NEW E-007/AS-11 (parallel-fan-out FE<->BE contract mismatch, reviewer-caught pre-commit) + Active-Guards (#57 guard 2->3 verified + reviewer cross-stack guard). H2 GATE PASS 5/5 + H1 CHOT 4-mat spawn-records appended (both wrote 0 files - E-006 backstop held). CLAUDE.md root counts 43->45 mig / 91->92 tables / 181->186 test. HANDOFF: database-agent /adap-apply recommend next-session + doc-drift backlog coords. CI-skip (docs/.md only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 11:44:39 +07:00
68c6bfea77 [CLAUDE] Docs: S51 P11-C Vehicle+Driver + gotcha #57 (3 HRM catalog) closeout
STATUS/HANDOFF S51 (Mig 43->45, tables 91->92, test 181->186, bundle Cg9mvltU/YgqDvsqr, P11-C DONE) + gotchas #57 ext (2->3 HRM catalog Mig 45 + Master ext backlog Mig 46 worktree) + session log 2026-06-08-S51. Agent-memory flush (impl-be/fe + test + cicd + investigator self-write; reviewer em-main proxy [return truncated gotcha #53]). CI-skip (docs/.md only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 10:52:25 +07:00
f8179c5fbd [CLAUDE] Docs: S50 Harness 1·2·3 verified-runtime closeout + AS-10 autonomous-write finding (E-006)
- Verified-runtime all 3: 2 monitor sub (H1/H2 RE-REPORT) + H2 wave-mode B6 isolation
  (Run wf_b7e4d6ef-787, chunk 2415=2415, 0 leak) + H3 email send-path (handshake self-verified).
- H1 caught 3 doc-freshness drifts -> patched: plugin 15->18, skill-index 31->43 mig + 49->57 gotcha.
- gotcha #57 exact coords confirmed: LeaveTypeConfiguration.cs:19 + ShiftPatternConfiguration.cs:19.
- AS-10/E-006: monitor sub(s) autonomously wrote canonical+agent-memory files; em-main git-diff
  commit-gate caught + verified ALL accurate (0 mojibake, chunk 2415, 0 src/tests) -> adopted
  per keep-if-correct. Process gap flagged for monitor tool-grant review.
- Test 181 PASS unchanged (0 .cs). CI-skip (all .md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-08 00:25:00 +07:00
e27d877172 [CLAUDE] Infra: adopt AI_INFRA Harness 1/2/3 — monitor subs (roster 8->10) + wave-folder isolation + email channel (S49)
Harness 1 (Self-observability): NEW tooling-auditor (H1 tooling/docs-freshness 4-faceted) + harvest-curator (H2 harvest-integrity 5-axis) INFORM-only monitor subs, TACH BIET per anh-mandate -> roster 8->10. Wire session-start Phase 2.1.1 RE-REPORT + session-end L.b 6->7-step (H2 5-axis GATE + H1 chot + B5 wave-gom). H3 plugin/skill = gop-vai doc, 0 new agent.

Harness 2 (wave-folder isolation): hmw.js WAVE-MODE (subMdPath + tool-aware writeGuard) + .gitignore wave-*/ + agent-teams/ (B6 git-check-ignore verified) + NEW workflows/README convention. Harness 3 (email channel): broadcasts/ (6+6 folder + 13 .gitkeep + _index + inbox/README, committed) + send/check-email cmd (self=se) + adap-apply base-path fix outbox/all/.

HMW-mode ON: recon fan-out 4 read-only agent -> em main single-writer WRITE -> reviewer PASS all 3. Containment: git-diff 1 benign self-MEMORY + chunk-count 2414=2414 (0 RAG-write). Nac executed-file, verified-runtime PENDING CLI restart. 3 adap-reports + session log. Test 181 unchanged (no product code). CI runs (hmw.js/.gitignore/.gitkeep not path-ignored) but no bundle/migration change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 23:18:43 +07:00
cf908f5276 [CLAUDE] Infra: adopt AI_INFRA HMW-governance broadcast — ultra-on/off toggle + hmw.js checkpoint-gate + memory-safety (S49)
adap-apply 2026-06-03-Agent-ultracode-hmw-mem-governance (reviewer_gate PASS).
PROJECT-FIT=ADOPT tailored: SE 8-agent roster. nac=executed-file (verified-pending restart+spawn-test).

- T1/T2 toggle: .claude/commands/ultra-on.md + ultra-off.md; marker .claude/hmw-mode.on gitignored (T2 non-negotiable).
- T3: session-start BUOC 0.5 reads marker -> reports ON/OFF.
- S2/S3/S4: .claude/workflows/hmw.js P2 fan-out — checkpointApproved throw (mechanized), args JSON.parse-guard, role-whitelist fail-soft, VALID_ROLES=8 SE agents, sub-no-spawn-sub, return schema findings+memoryDelta 4-field (R1).
- M1-M5: B1 slice-inject / M2 return-delta-only / B3 single-writer append-only / B2 harvest-lien / M5 store_memory-strip re-verified intact (0 tools-grant).
- agents/README.md +HMW governance section (VALID_ROLES source-of-truth) + adap-report 5-field LOCK.

Test 181 unchanged (no .cs/.tsx). CI-skip (all .md/.js/.gitignore).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 13:15:03 +07:00
e2fcabea00 [CLAUDE] Docs: S48 post-deploy sync — cicd Run #369 PASS (login a11y live)
- STATUS bundle hash admin DPPTx2Kw / user CjoUEsoV (rotated) + S48 verdict
- HANDOFF next-(a) marked done · session log cicd spawn-record + verdict
- cicd-monitor MEMORY flush (Run #369 + bundle baseline)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 00:13:48 +07:00
009dd94f22 [CLAUDE] Docs: S48 adap-* verify closure post-restart + Gov-v2 error-ledger + §L.b
- store_memory strip VERIFIED-runtime (registry 0/8 subs) — adap-report updated
- frontend-designer FD2 loop VERIFIED-RAN (first spawn) — adap-report updated
- Gov-v2 delta CLOSED: NEW docs/governance/error-ledger.md (blameless RCA + Active-Guards
  index + AS-1..AS-9 deterministic-detect + 3-ledger triad) + session-end.md Phase 1.5 §L.b 6-step
- STATUS/HANDOFF S48 + session log + frontend-designer MEMORY flush (FD2 rig + Tailwind-v4 fact)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 00:05:39 +07:00
72bbfa56a5 [CLAUDE] Infra: adopt AI_INFRA adap-* channel + store_memory strip + frontend-designer (S47)
- Install 3 federated adoption slash-commands (/adap-apply|report|request) in .claude/commands/ (read AI_INFRA outbox read-only, apply own repo, write adap-report; AI_INFRA /adap-audit reads cross-repo)
- Broadcast #1 (Memory-store-memory-strip-global): strip store_memory from all 8 sub-agents -> lead = sole RAG-writer; 4 RAG-read retained; agents/README synced + G-015 note
- Broadcast #2 (Agent-frontend-designer-floor): frontend-designer 8th agent (pink) -- forked AI_INFRA canonical FD1-FD10 visual-verification floor, tailored SE stack + use-existing-DS + boundary vs implementer-frontend; memory seed; roster doc 7->8
- Broadcast #3 (Governance-gov-v2): already-applied S44 -- delta report (gap: no formal error-ledger/L.b checklist)
- 3 adap-reports (5-field LOCK) in docs/governance/adap-reports/ + adoption-ledger row
- All nac executed-file/verified-pending (restart + spawn-test). 0 agents spawned. No product code. Test gate 181 unchanged. CI-skip (all .md).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 23:34:07 +07:00
7fbe05a19c [CLAUDE] Docs: S45 session-end — test-gap + Mig 43 sync
STATUS/HANDOFF S45 (154->181 test, Mig 43) + gotcha #57 (soft-delete UNIQUE must filter [IsDeleted]=0) + session log + root CLAUDE counts + ef-core skill Mig 43 row + flush 3 agent MEMORY (test-specialist proxy after #53 truncation + cicd Run #368 + investigator P11-C recon).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 14:49:28 +07:00
ae30f8f5e2 [CLAUDE] Docs: S44 monthly drift audit + AI_INFRA bundle 06-01 adopt
Cadence audit (2026-06-01), docs-only -> CI-skip. investigator-codebase
drift scan (ground-truth from disk) -> em main patch. No code touched,
154 test unchanged.

Drift fixes (42 count corrections): 40->42 mig, 84/59/55/47->91 tables,
130/111->154 test, 52/49->56 gotcha across CLAUDE.md, docs/CLAUDE.md,
ef-core-migration + dependency-audit skills, schema-diagram, database-guide.
schema-diagram migration table extended Mig 17-42; ef-core history Mig 27-42;
detailed-section gap (Mig 27-42 modules) flagged explicit (deferred, not silent).

AI_INFRA bundle 06-01 (federated, full scope):
- A: RAG T1/T2 auto-ack
- C: hygiene 7/7 agent-mem L1 <=16KB; "25KB"->"~30KB tiered" wording x7
- D: #4 self-sustaining adoption-report step -> /session-end Phase 6.3
- E/F: report + ledger -> docs/governance/

Carry-over .mcp.json + BROADCAST-05-29 left untouched (concurrency rule).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 12:39:56 +07:00
197c72f352 [CLAUDE] Docs: S42-S43 close-out — Phase 11 P11-A+P11-B session log + HANDOFF tier + gotcha #56
- Session log S42-S43 (P11-A WorkflowApps ApproveV2 + P11-B LeaveBalance, 8 commit chain)
- HANDOFF tiering: +S43 +S42, trim S40-S38 → session logs
- gotcha #56 CWD-drift stray memory (cd trước spawn → agent ghi nhầm fe-user/.claude, 3× S42-S43)
- STATUS gotchas 55→56
- cicd-monitor MEMORY (Run #367 P11-B verdict)

User memory: +feedback_high_to_max_multiagent_quality (High lọt 2 bug, Max 0 bug; WIRE FE
đọc reference proven + FK-invariant-at-write-doors + Max re-review cross-stack).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 12:04:34 +07:00
82d7fcff4d [CLAUDE] Workflow: LeaveBalance business logic — trừ phép khi duyệt + số dư (Phase 11 P11-B)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m8s
Số dư phép theo (User × LeaveType × Year) + trừ tự động khi đơn nghỉ duyệt cuối.
Policy: cho phép vượt số dư (âm) + cảnh báo (anh main chốt), tích hợp vào trang đơn nghỉ.

Schema (Mig 42 AddLeaveBalances — pure additive, 1 bảng):
- LeaveBalance: UserId + LeaveTypeId + Year + EntitledDays + UsedDays + AdjustmentDays.
  UNIQUE (UserId,LeaveTypeId,Year), FK LeaveType Restrict, decimal(5,2).
  Remaining = Entitled + Adjustment − Used (computed, không store).

Deduction hook (ApproveLeaveRequestHandler nhánh terminal DaDuyet — exactly-once):
- Upsert LeaveBalance(RequesterUserId, LeaveTypeId, StartDate.Year), auto-create từ
  LeaveType.DaysPerYear, UsedDays += NumDays. Guard Status!=DaGuiDuyet chặn re-approve.

FK invariant guard (em main thêm sau test reveal FK risk):
- Create + UpdateDraft validate LeaveTypeId tồn tại (AnyAsync) → ConflictException.
  Đóng cửa vào — bogus type không thể tới deduction FK insert (tránh 500 kẹt đơn).

CQRS LeaveBalanceFeatures.cs: GetMy (self, lazy merge active LeaveType) + GetUser (admin)
  + AdjustLeaveBalance (admin upsert carry-over). Controller [Authorize] + admin Roles=Admin.
Embed: GetLeaveRequestByIdHandler trả balance NGƯỜI TẠO (approver xem thấy đúng).
FE: WorkflowAppDetailPage ×2 — block "Số dư phép" + cảnh báo vượt khi kind=leave (SHA256 identical).

Tests (+11, 130→154 PASS): deduction single/multi-level/accumulate/negative-allowed/
  reject-return-no-deduct + lazy-merge + adjust upsert + Create guard bogus→Conflict.
  Cũng repair 2 test S42 terminal FK-fail (template BuildLeave +seed LeaveType).

Verify: build 0 error · 154 test · FE ×2 · reviewer Max PASS (deduction exactly-once +
  FK invariant fully closed, 2 minor concurrency/comment defer).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 11:10:44 +07:00
ffb20627b7 [CLAUDE] Docs: update STATUS bundle hash + run-id reconcile (S42 P11-A fix deploy)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m52s
- Bundle hash live → admin 6D4k-aRi / user DkME-974 (Gitea #365, verified post-fix)
- Reconcile Gitea task id: #364 (e7b66cd P11-A) + #365 (75df04e picker fix);
  "Run #250" cũ là cicd-monitor memory truncated ghi sai → Max re-verify sửa
- Note fe-user re-rotate pending e47ef1d (ProposalCreatePage chip task deploy riêng)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 10:23:43 +07:00
75df04ec82 [CLAUDE] Workflow: fix workflow picker 2 bug (P11-A Max re-review) + SetWorkflow endpoint
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m5s
Double-check chất lượng P11-A ở Max (agents trước chạy High + truncate 3×) →
phát hiện 2 bug THẬT trong workflow-picker FE của WorkflowAppDetailPage (core
approve/reject/return ĐÚNG, chỉ sub-flow chọn quy trình hỏng):

Bug #1 (HIGH) — pinWorkflow PUT /{id} chỉ gửi {approvalWorkflowId} → UpdateDraft
  validator (Reason NotEmpty, NumDays>0...) fail → 400. Nút "Lưu quy trình" vỡ.
Bug #2 (HIGH) — fetch workflow expect flat array nhưng endpoint trả
  AwAdminOverviewDto {types:[...]} → picker rỗng/crash. FE copy nhầm pattern hỏng
  của ProposalCreatePage thay vì PE/Contract proven.

Fix:
- BE: thêm endpoint chuyên dụng PUT /{id}/workflow + Set{Module}WorkflowCommand/Handler
  cho 4 module — chỉ set ApprovalWorkflowId trên draft Nhap/TraLai (verify ApplicableType
  per module), KHÔNG validate field khác. Single-responsibility, bulletproof.
- FE: sửa fetch mirror PE/Contract (data.types.find(t=>t.applicableType===X)?.history
  .filter(isUserSelectable)) + pin gọi endpoint mới. fe-admin+fe-user SHA256 identical.
- Test: +3 SetWorkflow (happy no-status-change / wrong ApplicableType Conflict / submitted
  guard) → 141→144 PASS.

Verify: BE build 0 error · 144 test PASS · FE build ×2 · SHA256 identical.
Bonus phát hiện: ProposalCreatePage (S37) có bug #2 có sẵn (latent, chưa exercise UAT)
  → flag spawn task riêng, KHÔNG fix trong commit này.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 10:14:34 +07:00
e7b66cd52b [CLAUDE] Workflow: wire ApproveV2 + LevelOpinions cho 4 WorkflowApps module (Phase 11 P11-A)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m6s
Wire full approval workflow V2 cho Leave/OT/Travel/Vehicle — cookie-cutter
mirror Proposal (Mig 38). Trước đây skeleton Phase 1 (Create+List), giờ
ApproveV2 advance-level + UPSERT LevelOpinion + atomic codegen.

Schema (Mig 41 WireWorkflowAppsApprovalV2 — 84→89 tables, pure additive):
- 4 bảng {Leave,Ot,Travel,Vehicle}LevelOpinions (UNIQUE composite + Cascade
  parent + Restrict Level — mirror ProposalLevelOpinion)
- 1 bảng WorkflowAppCodeSequences (shared atomic MaDonTu, Prefix-keyed)
- 4 cột RejectedFromStatus (smart return tracking)
- enum ApprovalWorkflowApplicableType.TravelRequest = 9

Application (LeaveOt + TravelVehicle ApprovalFeatures.cs — 30 handler):
- GetById detail (Include LevelOpinions + JOIN Step/Level) · UpdateDraft
- Submit (gen MaDonTu + DaGuiDuyet + level=1, verify ApplicableType per module)
- Approve (verify actor==ApproverUserId OR Admin, UPSERT opinion latest-write-wins,
  advance level OR terminal DaDuyet, empty comment → placeholder)
- Reject (→TuChoi) · Return (→TraLai + RejectedFromStatus)

Api: 4 controller +6 route mỗi cái (GET/{id}, PUT/{id}, submit/approve/reject/return)
Infra: DbInitializer seed 4 workflow V2 mẫu (QT-NP/OT/CT/XE-V2-001) → UAT test ngay
FE: WorkflowAppDetailPage.tsx declarative 4-kind (fe-admin+fe-user SHA256 identical)
  — workflow status + opinion timeline + action buttons; gỡ banner skeleton + row nav

Tests: +11 WorkflowAppApproveV2Tests (130→141 PASS) — state machine + UPSERT
  invariant + guards + codegen + forbidden + placeholder (Leave full + Ot smoke)

Verify: build 0 error · 141 test PASS · FE build ×2 · reviewer checklist
  (ApplicableType per-module + cross-module DbSet + [Authorize] — no copy-paste bug)
Known-minor (unreachable): Reject/Return actor-check skip nếu CurrentApprovalLevelOrder
  null — nhưng DaGuiDuyet luôn có set (defer hardening).
ItTicket KHÔNG đụng (kanban, no workflow V2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 09:44:00 +07:00
282cbd0c7b [CLAUDE] Docs: S41 RAG audit response — exclude **/-anchor fix + retire stale _decision_log + AI_INFRA signal
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m7s
- rag.json exclude_paths root-anchored -> **/-anchored (defeats gotcha #10:
  node_modules/** + docs/_archive/** were not matching nested paths)
- _decision_log: retire stale "+321% / LIVE 11,922" -> real status
  (LIVE ~3080 ~= registry 3076, drift closed 2026-05-28)
- New docs/governance/RAG-AUDIT-RESPONSE-2026-05-29.md: SE-side prep done +
  corrections (store_memory at-risk = 3 disk-backed broadcasts, NOT ~27) +
  re-bootstrap ask for AI_INFRA + post-bootstrap verify checklist

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 22:18:33 +07:00
9f10764b06 [CLAUDE] Docs: S40 finish bulletin MUC 2+4 gaps (tiered agent-def + rag.json path fix + archive dirs)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m5s
MUC 2 (Tiered Memory) finish:
- investigator-codebase.md: ">20KB force-read" + ">25KB suggest curate" -> tiered L1/L2/L3 (last agent-def with old policy wording; gotcha count 53->55)
- archive/ created for 3 new seed agents (investigator-api/implementer-frontend/test-specialist) via .gitkeep

MUC 4 (RAG v1.3) finish:
- rag.json extra_corpus slug FIX: D--Dropbox-CONG-VIEC-SOLUTION -> ...-SOLUTION-SOLUTION-ERP (27 user-memory feedback entries were NOT indexed). Re-index = AI_INFRA op (flagged).
- chunk_size 1500 deviation UNCHANGED (AI_INFRA mechanism decision, trial 2026-06-16). JSON valid verified.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 18:59:02 +07:00
c8ff5e108b [CLAUDE] Docs: S40 adopt /session-start + /session-end slash commands (bulletin MUC 3)
- .claude/commands/session-start.md (3 phase READ/AUDIT/REPORT) + session-end.md (6 phase FLUSH/WRITE/VERIFY/REPORT/COMMIT/EVAL)
- Adapted: 7-agent topology (not 4 default) + charter v2 (RAG eval/re-index = AI_INFRA op) + SendMessage N/A harness caveat
- Placeholders filled: MD core + 6 skill + dotnet test SolutionErp.slnx + commit scope + proj_solution_erp + cron 2026-06-01
- 0 leftover {{placeholder}}/comment. Activate: anh main restart CLI (slash KHONG hot-reload)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 18:20:20 +07:00
6f08d1f0eb [CLAUDE] Docs: S40 adopt AI_INFRA Tiered Memory Policy v1 (bulletin MUC 2)
- README Memory discipline -> tiered L1 HOT (soft-cap ~30KB) / L2 archive on-demand / L3 RAG just-in-time (thay hard >25KB)
- 7 agent MEMORY.md header -> tiered framing
- Anti-truncation rule soft-cap ~30KB
- Adopt per AI_INFRA Cross-Project Bulletin 2026-05-29; SE 7-agent in scope

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 16:58:39 +07:00
78c9de35f8 [CLAUDE] Docs: S40 curate 4 agent MEMORY >25KB + RAG catch-up chunk S37-S40
- investigator-codebase 35.7->7.6 · cicd-monitor 35.3->8.4 · implementer-backend 30.9->7.9 · reviewer 28.4->7.5 KB
- Archived verbose FIFO -> git d2f52ba; refreshed stale counts (111->130 test, 33->40 mig, ~146->211 endpoints, 47->55 gotcha); dedup split (FE patterns -> implementer-frontend, test patterns -> test-specialist)
- Foundation preserved: gotcha patterns + 5-stage/5-category checklist + Smart Friend guard + workflow schemas + sqlcmd/controller-audit + BE Patterns 1-12-ter
- RAG: store_memory S37-S40 catch-up chunk (rerank 0.867 top hit); full re-index pending `python bootstrap.py --project solution_erp` (needs VOYAGE_API_KEY env)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:10:55 +07:00
d2f52ba586 [CLAUDE] Docs: S40 consolidate STATUS/HANDOFF 393KB→9KB + re-ground count drift + archive zero-loss
- STATUS.md 169.7KB→5.7KB, HANDOFF.md 223.6KB→3.4KB (giữ current+3 session, pointer logs)
- Full verbatim archived docs/_archive/{STATUS,HANDOFF}-preS40-fullhistory.md (zero info loss)
- Re-ground count: endpoints ~223→211, FE pages 53→65 (36+29), menu 85→~53; tables 84 confirmed correct (DbSet 77 + Identity 7)
- CLAUDE.md root patch: 33→40 mig, 60→84 bảng, 111→130 test
- S40 init audit: 7-agent live, RAG re-rank PASS 0.8789, 130 test PASS
- agent-memory S40 entries (investigator-codebase/api + test-specialist smoke audit)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 13:00:09 +07:00
fd0554a585 [CLAUDE] Agents: S39 upgrade multi-agent 4→7 + budget +50% + 5 RAG MCP (BVAAU pattern adapted)
Anh main yêu cầu tăng tốc + chất lượng SOLUTION_ERP: tham khảo BVAAU 7-agent config
+ budget token +50% + thêm 3 sub-agent. Adapted (NOT copied) — SOLUTION_ERP 2-FE-app
fit + giữ 6 skill proven battle-test 38 session.

Split 4→7 agent (anh main chốt via AskUserQuestion):
- investigator → SPLIT: investigator-codebase (cyan, internal SQL/EF/grep) +
  investigator-api (blue, external docs/CVE/lib/cross-project)
- implementer → SPLIT: implementer-backend (yellow, .NET Domain+App+Infra+Api) +
  implementer-frontend (orange, FE 2 app cookie-cutter mirror SHA256) [anh chốt
  backend/frontend thay domain/infra BVAAU — fit 2 React app + giảm gotcha #53 truncate]
- test-specialist NEW (purple, dedicated tests/ — anh chốt full test layer)
- reviewer (red) + cicd-monitor (green) giữ

Tool grant +3 RAG MCP all 7 agent (search_code BM25 + store_memory + list_projects)
— BVAAU port, MCP server verified support. Prior chỉ 2 (search_memory + cross_project).

Skill re-distribute 6 skill across 7 agent (xem README matrix).

Memory: rename investigator→investigator-codebase + implementer→implementer-backend
(giữ history) + seed 3 new MEMORY (investigator-api/implementer-frontend/test-specialist)
extract relevant patterns. Delete old investigator.md + implementer.md.

README rewrite: 7-agent architecture + decision tree split-routing + phân việc matrix
boundary + token budget +50% cost reality (~1.05M opt / ~2M heavy ceiling) +
anti-truncation rules (gotcha #53 5× mitigation: brief ≤8K + curate pre-spawn +
entry ≤1.5K + 529 fallback solo).

⚠️ Anh main RESTART Claude Code CLI để registry hot-reload 7 agent (per S27 lesson
model:inherit + new files). Verify post-restart: smoke spawn 3 new agent confirm load.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 10:42:05 +07:00
49134f4f41 [CLAUDE] Docs+Memory: S38 wrap — PHASE 10 COMPLETE 11/11 Plan G-* ALL DONE deploy prod
🎊 PHASE 10 COMPLETE end-to-end cumulative 6 session S33-S38:
- G-H1 Hồ sơ NS (S33) + G-O1 Danh bạ (S34) + G-H2 Cấu hình HRM (S34+S35)
- G-O2 Phòng họp (S36) + G-O3 Đề xuất (S37)
- G-O4 + G-O5 + G-O6 + G-P1 + G-H3 SKELETON combo (S38)

S38 final wrap (code commit e54a22d + this docs wrap):
- Run #247 sha=e54a22d 3m25s PASS (fastest S38)
- Bundle rotate × 2 (admin CGueDk22→cWAXid0q + user CEt0QRgX→CX79e2kZ)
- Mig 39+40 prod head + 6 endpoint smoke + 6 new tables verified
- HR Dashboard prod live (TotalEmployees=33 / Male=17 / Female=16)
- 0 prod regression

Cumulative Phase 10 stats:
- 7 Mig (34→40) · 30+ new tables · ~75+ new endpoints · 17 FE pages × 2 app
- Pattern 16-bis 9× cumulative · Pattern 12-bis 12× cumulative · Smart Friend 9× clean
- 6 commit cumulative · 9+ CI Run all PASS

SKELETON Phase 1 trade-off rõ ràng — workflow ApproveV2 + LeaveBalance +
CodeGen + Vehicle catalog + ItTicketComments + Auto-assign + SLA timer DEFER Phase 11.

Next S39+: Phase 11 polish features OR Phase 9 Ops UAT 2-3 user 1 tuần.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 16:28:01 +07:00
17aaba9df0 [CLAUDE] Docs+Memory: S37 wrap — Mig 37 + G-O3 Đề xuất deploy prod end-to-end Run #246 PASS
S37 final wrap (1 commit code de1c378 + this docs wrap):
- Mig 37 enum extend +5 values + Mig 38 Proposal schema (4 entity)
- BE ~700 LOC + FE 4 file × 2 app SHA256 IDENTICAL
- CI Run #246 PASS 3m53s + bundle rotate × 2 + workflow QT-DX-V2-001 prod live
- gotcha #53 5th + 529 Overload 1× — em main solo fallback proven reliable

Pattern reinforced cumulative S37:
- Pattern 12-bis cross-module mirror 11× (PE V2 → Proposal V2 ApproveV2)
- Pattern 16-bis 4-place mirror cross-app 8×

Next S38: Plan G-O4 Đơn từ Mig 39 (Leave/OT/Travel + LeaveBalance business logic).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 15:59:16 +07:00
75521b8b88 [CLAUDE] Docs+Memory: S36 wrap — Plan G-O2 Phòng họp ALL DONE deploy prod end-to-end
S36 sequence done end-to-end 6 step trong 1 session (1 commit + 1 CI Run):
1. Curate 2 MEMORY (Implementer 36.4→31.7KB + CICD 40.4→28.3KB archive q4.md)
2. Investigator pre-flight G-O2 (clean-room 3 entity + FullCalendar v6 alternative)
3. Em main solo Mig 36 schema + Apply Dev+Design DB
4. Implementer BE CQRS (584 LOC) + Application.csproj +Relational fix gotcha #53 4th
5. Implementer FE 2 app (1770 LOC SHA256 IDENTICAL × 2 app + Pattern 16-bis 7×)
6. Reviewer Smart Friend 9× cumulative CLEAN + CICD Run #359 PASS

Verify cumulative S36:
- Run #359 sha=f45090b 3m55s success
- Bundle rotate × 2 (admin Bl6e54yi→C9kzTTmq + user DHmW2tUF→CC4DQ-Tr)
- Mig 36 prod head + 4 sample room + 4 menu seeded
- 0 prod regression observed
- 130/130 test PASS baseline preserve

State chốt S36:
- 36 mig (+1) · 74 tables (+3) · ~201 endpoints (+9 Meeting)
- 45 FE pages (+2 × 2 app) · 73 menu keys (+4 Off_PhongHop)
- Reviewer 9× cumulative + Pattern 16-bis 7× + Pattern 12-bis 10× cumulative
- 3 minor defer (AttendeeInput.Notes + Room race + silent skip) non-blocking

Next S37: Plan 10.3 Pre-flight Mig 37 enum extend +5 values → G-O3 Đề xuất.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 15:14:38 +07:00
8afdc1e826 [CLAUDE] Docs+Memory: S35 wrap — FE forms + G-H2 BE CRUD + FE Admin deploy prod end-to-end
Cumulative S35 3 commit + 3 CI Run #242/#243/#244 ALL PASS:
- `c3cd343` FE inline forms 5 satellite × 2 app cookie-cutter (+1758 LOC)
- `909655c` G-H2 BE CRUD HrmConfig 16 endpoint (+576 LOC NEW)
- `021674a` G-H2 FE Admin HrmConfigsPage declarative (+1388 LOC)

## Updates this commit (docs CI skip per gotcha #41)
- docs/STATUS.md S35 wrap header (cumulative 3 chunk + Multi-agent ROI ~250K)
- docs/HANDOFF.md S35 brief + S36 backlog 6 option
- docs/gotchas.md +#53 sub-agent truncation/stall pattern S35 × 3 occurrence + Quick reference 28
- docs/changelog/sessions/2026-05-28-s35-fe-inline-forms-g-h2.md NEW session log
- 4 sub-agent MEMORY auto-updated entry (Implementer + CICD + Reviewer + Investigator S35 spawns)

## Patterns reinforced cumulative S35
- Pattern 12-ter (within-module N-satellite) 6× cumulative
- Pattern 12-bis (cross-module catalog mega) 3× cumulative
- Pattern 16-bis (4-place mirror cross-app) 6× — staticMap 4th place mandatory (gotcha #50)
- Smart Friend 9× cumulative clean (S22+S25+S29×2+S33×2+S35×3)
- NEW: Declarative KIND_CONFIG Record pattern (single-page multi-kind CRUD reuse)

## Smart Friend Implementer 3 catch S35 (anti-pattern prevention)
1. Chunk 2 MaxLength validator vs EF config mismatch → aligned EF source-of-truth
2. Chunk 2 HRM entities NO HasQueryFilter → explicit .Where(!IsDeleted) 8 site
3. Chunk 3 em main spec gap Layout staticMap miss → Implementer enforced Pattern 16-bis 4-place

## State chốt S35
- 35 mig unchanged · 71 tables · ~185 endpoints (+16 HRM Configs)
- 43 FE pages (+1 HrmConfigsPage) · 130 test PASS unchanged
- 53 gotcha (+1 #53) · 27 memory user-level · 6 skills · 4 sub-agents

## Multi-agent ROI S35 ~250K
- Implementer 3 spawn ~80K (3 cookie-cutter chunk + Smart Friend × 3 catch)
- Investigator 1 spawn ~8K (G-H2 BE CRUD pre-flight + NamGroup MISS verdict)
- Reviewer 3 spawn ~60K (Smart Friend 9× clean, 2 truncated + 1 tight brief PASS)
- CICD 4 spawn ~70K (warm-up + 3 deploy verify, 1 stalled em main fallback)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-28 10:23:55 +07:00
e506cd8135 [CLAUDE] App+Api: S34 Plan 3 Item 3 BE 5 satellite CRUD scaffold (15 endpoint)
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m36s
Phase 1.5 Item 3 BE — Implementer Case 2 cookie-cutter 5-entity scaffold
mirror parent EmployeeProfile CRUD pattern (Pattern 12-ter NEW saved).

New file: Application/Hrm/EmployeeSatelliteFeatures.cs (621 LOC):
- 5 region (#region {EntityName}) — WorkHistory/Education/FamilyRelation/Skill/Document
- Each region: Create/Update/Delete Command + Validator + Handler
- Verify parent EmployeeProfile.Exists pattern AnyAsync(!IsDeleted)
- Soft delete IsDeleted=true + DeletedAt=UtcNow + DeletedBy=currentUser
- Validator nullable enum IsInEnum().When(HasValue) pattern

Modified file: Api/Controllers/EmployeesController.cs (70 → 234 LOC, +15 endpoint):
- 5 region × 3 verb (POST/PUT/DELETE) = 15 satellite endpoint
- Path per satellite:
  - /api/employees/{id}/work-history
  - /api/employees/{id}/education
  - /api/employees/{id}/family-relations
  - /api/employees/{id}/skills
  - /api/employees/{id}/documents
- Per-action policy: Hrm_HoSo.Create/Update/Delete (override class-level Read)
- BadRequest guard: id != cmd.{EmployeeProfileId|Id} → "ID không khớp"

Document satellite metadata-only — file upload IFileStorage body wire defer S35.

Verify:
- dotnet build PASS (2 warn DocxRenderer baseline, 0 error)
- dotnet test 130/130 PASS (58 Domain + 72 Infra baseline preserve, no test add)
- Endpoints count: ~154 → 169 (+15)
- LOC delta: +785 BE (621 features + 164 controller)

Pattern 12-ter NEW (Implementer MEMORY): 5× satellite CRUD scaffold cookie-cutter
within-module (different from Pattern 12-bis cross-module mirror). Reusable
cho future N-satellite parent (vd Contract attachments, PE quotes, Budget details).

Defer S35:
- FE inline edit forms 5 satellite section (~1.5h em main solo)
- Test bundle satellite CRUD (~30 phút Implementer Case 3)
- IFileStorage Document body upload wire (multipart form-data)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 14:56:14 +07:00
61e9ce5b3b [CLAUDE] Domain+App+Api+Tests+FE-Admin+FE-User: S34 Plan 3 Phase 1.5 batch 4 item
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m48s
Phase 1.5 backlog G-H1 EmployeeProfile hardening batch (Items 6+2+1+4 of 6).

Item 6 — menuKeys FE drift sync × 2 app:
- fe-admin add: Catalogs + 4 Catalog leaves + Workflows + Budgets + Bg_List/Create/Pending (10 key)
- fe-user add: Budgets + Bg_List/Create/Pending + ApprovalWorkflowsV2 + 2 AwV2 leaf + MenuVisibility + Workflows (8 key)
- Cả 2 file giờ identical mirror BE MenuKeys.cs (28 key cumulative)

Item 2 — UpdateEmployeeProfileCommand bool→bool? safe partial update:
- 3 field IsCommunistParty/IsYouthUnion/IsTradeUnion → bool?
- Handler: HasValue check, null = giữ giá trị cũ (Reviewer minor #(b) S33 fixed)
- FE không bắt buộc gửi 3 field every PUT — tránh accidental reset

Item 1 — EmployeesController per-action policy (gotcha #44 mitigation):
- Class-level [Authorize(Policy = "Hrm_HoSo.Read")] — non-admin thiếu Read → 403
- POST [Authorize(Policy = "Hrm_HoSo.Create")]
- PUT  [Authorize(Policy = "Hrm_HoSo.Update")]
- DELETE [Authorize(Policy = "Hrm_HoSo.Delete")]

Item 4 — Test bundle Phase 1.5 (+10 [Fact], baseline 120 → 130/130 PASS):
- EmployeeCodeGeneratorTests (3 [Fact]) — atomic SERIALIZABLE NV/YYYY/NNNN
  + first call + sequential increment + year boundary preserve old year
- CreateEmployeeProfileCommandTests (4 [Fact]) — Create handler edge case
  + first profile + duplicate UserId Conflict + soft-deleted Conflict-restore
  + UserNotFound NotFoundException
- ListEmployeesQueryTests (3 [Fact]) — filter + paging logic
  + status filter + departmentId filter + search by EmployeeCode partial

Implementer Case 3 test gen caught spec mismatch (allow new after soft-delete
vs throws Conflict-restore) — chose CODE source of truth + renamed test
documenting discriminator message branch. Em main verify behavior correct
(admin UX khôi phục thay vì tạo mới — explicit flow defer Phase 1.5+).

Verify:
- dotnet build PASS (2 warn DocxRenderer baseline, 0 error)
- dotnet test 130/130 PASS (58 Domain + 72 Infra = +10)
- 4 endpoint /api/employees policy wired (gotcha #44 active mitigation)
- 4 MEMORY agent updated post-spawn (CICD Run #238 + Implementer test bundle)

Deferred Phase 1.5 next batch:
- Item 3 Satellite CRUD endpoints (WorkHistory/Education/FamilyRelation/Skill/
  Document) + FE inline edit forms — heavy ~2-3h
- Item 5 UAT smoke non-admin role verify silent 403 catch — defer post-deploy

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:57:08 +07:00
ea440da990 [CLAUDE] Domain+App+Api+Infra+FE-Admin+FE-User: S34 Plan 2 G-O1 Danh bạ nội bộ
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m46s
Phase 10.2 Văn phòng số — Internal Directory (1 endpoint reuse Users +
EmployeeProfiles + Departments, FE card grid avatar/dept/email/phone/Ext).

BE Task 1+2 (em main solo):
- Application/Office/DirectoryFeatures.cs — GetDirectoryQuery + DirectoryItemDto
  12 field LEFT JOIN Users.IsActive + Departments + EmployeeProfiles
- Api/Controllers/DirectoryController.cs — GET /api/directory?search=&departmentId=
  class-level [Authorize] (mọi authenticated NV tra cứu danh bạ nội bộ)
- MenuKeys.cs +Off+OffDanhBa const + All[] update
- DbInitializer.SeedMenuTreeAsync Off Order=29 + OffDanhBa Order=1 dưới Off

FE Task 3 (Implementer Case 2 Pattern 16-bis 4-place mirror cross-app — 5×):
- types/directory.ts SHA256 7349d9f64e78 × 2 app IDENTICAL
- pages/office/InternalDirectoryPage.tsx SHA256 2aa7e0eed2c8 × 2 app IDENTICAL
  Card grid responsive 1/2/3/4 col + filter dept dropdown + search input
  Avatar 14×14 initials gradient PALETTE 6 màu (Pattern 14 Tailwind JIT)
  EmployeeCode badge + Department emerald badge + email mailto + phone tel
  Internal phone Ext: amber badge + empty/loading state Vietnamese 100%
- App.tsx route /directory × 2 app
- lib/menuKeys.ts Off+OffDanhBa const × 2 app
- components/Layout.tsx resolvePath staticMap Off_DanhBa:/directory × 2 app
  (gotcha #50 — 5 places mirror crossapp DON'T MISS)

Verify:
- dotnet build PASS (2 warn DocxRenderer existing, 0 error)
- dotnet test 120/120 PASS (58 Domain + 62 Infra baseline preserve)
- npm build × 2 app PASS 0 TS err (fe-admin 1436KB / fe-user 1350KB)

Implementer MEMORY Pattern 16-bis reinforced 5× cumulative (S29 Plan CA HF1 +
S29 Plan B Chunk D + S33 Plan B G-H1 Task 5 + S34 Plan G-O1 Task 3).

Endpoint smoke pending CICD post-deploy Stage 4 (Run #XXX expected ~3m30s).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:39:10 +07:00
7b0781b94e [CLAUDE] Docs: S34 Plan 1 — Curate 4 sub-agent MEMORY 118KB→101KB (-15%)
Em main proxy curate sequence 1/4 post-S33 wrap. Archive verbose Recent
activity/runs entries cumulative S25-S28-S29 sang archive/2026-05-q2.md
(Reviewer) + archive/2026-05-q3.md (3 agent khác) — KHÔNG động vào
Patterns/Foundation sections.

Sizes delta:
- CICD: 32.9KB → 27.3KB (Run #215+#216 + S22 verify + S27/S28 governance archived)
- Implementer: 30.5KB → 24.6KB (S29/S28/S27 wrap + 2026-05-22 curate + setup archived)
- Reviewer: 28.5KB → 25.1KB (S26/S25/S28 + S29 Plan B pre-push archived)
- Investigator: 26KB → 21.8KB (S28/S27 retrospective + S25 + setup archived)

Foundation PRESERVED 100%:
- Smart Friend 6× cumulative guard (Reviewer)
- 10-surface-point per-NV checklist + gotcha #39-#48 detail (CICD)
- Patterns 1-15 + 12-bis + 16-bis (Implementer)
- Active workflow schemas V1+V2 + smoke verify patterns (Investigator)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 13:24:12 +07:00
edba4ae147 [CLAUDE] Docs+Memory: S33 wrap — Plan B G-H1 + Plan C B-Wrap deploy prod end-to-end
S33 cumulative wrap update STATUS + HANDOFF + migration-todos tick G-H1
7 task done + session log + CICD MEMORY post-Run #237 entry.

## Updates

- docs/STATUS.md: prepend S33 entry (Plan B + C + D drift patch + multi-agent
  ROI ~250K total + 8 patterns reinforced + new capability UAT-ready)
- docs/HANDOFF.md: prepend S33 wrap + S34 handover recommend sequence (curate
  4 MEMORY → G-O1 Danh bạ → G-H2 HrmConfig)
- docs/changelog/migration-todos.md: tick [x] G-H1 7 task + stats final S33
  + Phase 1.5 backlog
- docs/changelog/sessions/2026-05-26-2030-s33-plan-bc-deploy.md: NEW session
  log full (~250 line: outcomes + plan execution table + multi-agent ROI +
  8 patterns + defer Phase 1.5/S34+ + commits range + UAT capability)
- .claude/agent-memory/cicd-monitor/MEMORY.md: post-Run #237 entry append
  (truncated from S33 startup curate 24.2KB → 32.9KB, curate priority next
  session)

## Stats final S33

| Metric | Pre-S33 | Post-S33 | Δ |
|--------|---:|---:|---:|
| Migrations | 33 | 34 | +1 (Mig 34 AddEmployeeProfiles) |
| Tables | 60 | 67 | +7 (EmployeeProfile + 5 satellite + Sequence) |
| Endpoints | ~148 | ~153 | +5 (/api/employees REST) |
| FE pages | 38 | 40 | +2 (EmployeesListPage + EmployeeCreatePage × 2 app) |
| Menu keys | ~60 | ~62 | +2 (Hrm + HrmHoSo) |
| Tests | 111 | 120 | +9 (BW1-BW7 Plan C, BW6 split 3) |
| Gotchas | 52 | 52 | 0 new (2 existing lesson applied: #50 + #51) |
| Memory user-level | 26 | 26 | 0 new (decision: no rule warrant new entry, all patterns reinforce existing) |
| AppRoles | 14 | 14 | 0 new |
| EmployeeProfile prod | 0 | 33 | +33 (seeded via DbInitializer idempotent) |
| EmployeeCodeSequences | 0 | 1 | NV/2026 LastSeq=33 |

## Multi-agent ROI cumulative S33

🟦 Investigator 2 spawn ~20K + 🟨 Implementer 4 spawn ~110K (2/4 truncated
mid-MEMORY, functional complete) + 🟥 Reviewer 3 spawn ~60K (Smart Friend
6× clean) + 🟩 CICD 3 spawn ~60K (Run #350 + #237 PASS) + em main solo
~150K (Task 2 + Task 3b + Task 6 + 7 commit batch + push).

## CI Runs

- #350 Phase 1 (commit 48a99e1) — 3m38s PASS — Mig 34 prod + 33 seeded + 9 BW
- #237 Phase 2 (commit 79a8343) — 3m50s PASS — 5 NEW employee endpoint + Hrm
  menu seeded + bundle rotate × 2 app

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 22:25:19 +07:00
79a8343de3 [CLAUDE] Memory: S33 Plan B Phase 2 + Reviewer activity 3 sub-agent append
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m50s
3 sub-agent MEMORY auto-updated qua spawn S33 Plan B Phase 2:

🟨 Implementer (a8f4567 + a9bb9f3 + afdc812) — 3 spawn Task 3+4+5:
- Task 3 Mig 34 BE entity scaffold 17 file (truncated mid-Pattern 12-bis
  lookup, MEMORY.md NOT updated — pending em main proxy entry)
- Task 4 BE CQRS 3 file scaffold (truncated mid-MEMORY update — pending
  em main proxy entry)
- Task 5 FE 2 app 12 file scaffold (COMPLETE w/ MEMORY updated cleanly,
  Pattern 16-bis + 12-bis reinforcement noted Recent activity FIFO)

🟥 Reviewer (a5acadc + aaa1df3 + ae752c0) — 3 spawn cumulative S33:
- S33 startup drift severity assessment SEVERE patch CLAUDE.md now
- Plan C B-Wrap pre-commit Smart Friend 5× clean 9/9 PASS in 4.7s
- Plan B Phase 2 pre-commit Smart Friend 6× clean 17 file 0 critical/major
  3 minor defer Phase 1.5 (per-action policy + bool partial + IDateTimeProvider)

🟩 CICD Monitor (aa504e8 + a67df4e) — 2 spawn:
- S33 startup health-check HEALTHY 3/3 prod 200 + cert 58 days
- Plan B Phase 1 + Plan C verify Run #350 PASS 3m38s + Mig 34 prod applied
  + 33 EmployeeProfiles seeded + gotcha #51 INFRASTRUCTURE seed verify

Pattern: per repo convention (5400983 S32 wrap + b3444a3 S33 startup),
sub-agent MEMORY auto-append commit scope `[CLAUDE] Memory:` separate từ
substantive scope.

Implementer truncation pattern observation (Task 3 + Task 4):
- Heavy scaffold ~50+ tool uses → MEMORY update at end runs out of token
  budget → mid-sentence cutoff "Let me check..." / "Let me append..."
- Functional work complete despite truncation (verified via file existence
  + build + test)
- Mitigation: Implementer split heavy task into 2 phases (scaffold first
  100K tokens, MEMORY update separate 20K tokens budget reserve)
- Em main proxy MEMORY append later session — defer non-critical knowledge
  loss (Pattern 12-bis foundation already in MEMORY from S29 Plan B Chunk C)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 20:28:02 +07:00
b3444a3448 [CLAUDE] Memory: S33 startup + Plan B+C activity 3 sub-agent append
3 sub-agent MEMORY auto-updated qua spawn S33:

🟦 Investigator (a327050, afaf6d5, a103d20) — 3 spawn entries:
- S33 startup audit 4 MEMORY size + cross-agent learnings 4 pattern +
  RAG hit verify 2/3 PASS + 1 WARN boundary 0.684
- Plan B G-H1 Task 1 pre-flight NamGroup TblNhanVien* 10 bảng audit
  (NOT 8 anh main estimate) + field map 70 cols main + 5 satellite
  proposal (defer 3 HĐLĐ Plan H2)

🟥 Reviewer (a5acadc, aaa1df3) — 2 spawn entries:
- S33 startup drift severity assessment CLAUDE.md SEVERE patch now
- Plan C B-Wrap pre-commit verify 9/9 PASS in 4.7s, Smart Friend 5×
  cumulative clean (em main+Implementer quality genuine NOT lowered)

🟩 CICD Monitor (aa504e8) — 1 spawn entry:
- S33 startup health-check HEALTHY 3/3 prod endpoint 200 + Mig 33 prod
  synced + cert api.solutions.com.vn 58 days lead 2026-07-23 + discovery
  paths-ignore thiếu eval/** wastefully deploy S31 RAG telemetry JSON

Pattern: per repo convention (5400983 S32 wrap), 3 sub-agent MEMORY auto-
append commit scope `[CLAUDE] Memory:` separate từ substantive scope.

Implementer MEMORY truncated giữa update Pattern 12-bis lookup (Plan B
Task 3 scaffold) — em main append proxy entry sau (defer).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 18:17:15 +07:00
1bc6b708fc [CLAUDE] Docs: patch CLAUDE.md+docs/CLAUDE.md+implementer.md drift S19→S32
Reviewer S33 startup audit verdict SEVERE drift CLAUDE.md baseline header
(emain context first-load file misleads sub-agent spawns post-S19).

Patches (10 line cross 3 file):
- CLAUDE.md mig count 26→33 + bảng 59→60 (Mig 32+33 Plan B Contract V2 S29)
- CLAUDE.md test count 81→111 × 2 sites
- CLAUDE.md gotcha count 26→52 (cumulative S22-S32 +26 entries)
- CLAUDE.md schema-diagram table 52→60 + +§14 Contract V2 LevelOpinions
- CLAUDE.md audit next cycle 2026-05-01→2026-06-01 (cron next due 6 ngày)
- CLAUDE.md Contract V2 wire status "chưa wire" → "ĐÃ WIRE (Mig 32+33 Plan B)"
- docs/CLAUDE.md gotchas table 38→52 pitfall
- implementer.md test baseline 81→111 × 2 (verify command + report format)

Drift defer 2026-06-01 batch (Reviewer recommend):
- investigator.md + reviewer.md gotcha 44→52 cosmetic
- docs/gotchas.md #50/#51 renumber order (non-functional)

Smart Friend independence note: Reviewer NOT softened verdict — em main
patched S29 sub-agent cicd-monitor.md baseline but MISSED CLAUDE.md root
cùng pass. Pattern reinforced: khi update mig count phải bundle CLAUDE.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 18:16:41 +07:00
540098347d [CLAUDE] Memory: S32 wrap — 4 sub-agent MEMORY append S32 wrap entry (em main proxy)
4 sub-agent MEMORY append S32 wrap entry FIFO top:
- Investigator (20.6KB): S32 startup verify spawn + NamGroup audit pre-flight hit
  limit + em main solo audit fallback findings + Plan G 11 module DOCUMENTED.
  Pending S33 spawn: Plan G-H1 NamGroup TblNhanVien* audit (priority high).
- Implementer (29.2KB): S32 startup verify spawn + em main proxy curate 5
  entries S25-S29 -> q2. Patterns 1-19+12-bis+16-bis foundation preserved.
  Pending S33 spawn: Plan G-H1 6-entity scaffold + Plan B-Wrap BW1-BW7 codegen
  + Plan G-O2 BookingCalendar + Plan G-O3-O6 workflow apps mirror PE V2.
- Reviewer (26.5KB): S32 startup verify spawn (self-curated S27 retro dropped).
  Smart Friend 4x cumulative preserved. Pending S33 spawn: Plan B-Wrap test
  bundle adversarial review + Plan G-H1 Mig 34 schema pre-commit + Phase 9 UAT
  hard blocker security audit.
- CICD Monitor (26KB): S32 startup verify spawn + Run #231 PARTIAL detail
  archived q2. No new Run S32 (5 commits docs-only CI skip). 3 prod endpoint
  smoke 200 OK preserved. cert notAfter 2026-07-23 verified. Pending S33
  spawn: Phase 10.1 G-H1 first code commit Run verify + Plan B-Wrap test
  count delta + V2 contract create flow UAT smoke.

Re-ingest stats: 166 files -> 2991 chunks (+3 delta S32 wrap content). Cache
hit 11.4s vs initial 75.7s = 6.6x speedup post Plan A2.
RAG eval v1.1 verify: recall@5=1.000 (11/11) PASS, avg_rerank ~0.84 preserves
S31 baseline. Negatives q12-q14 correctly excluded (rerank 0.40-0.43 < 0.7).

Refs: docs/STATUS.md S32 wrap. docs/HANDOFF.md S32. migration-todos.md
§Phase 10 + §D-Bis + §A + §E.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:49:28 +07:00
cce096309f [CLAUDE] Docs+Memory: S32 Phase 9 stabilize batch — Plan A3 MEMORY curate 3 agents + Plan B-Wrap spec BW1-BW7 defer + Plan C1 ops status update
Phase 9 stabilize sequential batch S32:
- Plan A2 DONE: RAG re-ingest 166 files / 2988 chunks / 75.7s. Verify gotcha #52
  query rerank 0.906 (was 0.516 < 0.7 threshold). Phase 10 backlog query rerank 0.758
  semantic match good.
- Plan A3 DONE: MEMORY curate 3 agents OVER 25KB threshold. Implementer 38.4 -> 27.5KB
  (5 verbose S25-S29 entries archived q2 - Patterns 1-19 + 12-bis + 16-bis foundation
  preserved). Investigator 27.7 -> 19KB (4 verbose S25-S26-S29 entries archived q2).
  CICD Monitor 27 -> 24.2KB (Run #231 PARTIAL detail archived q2 - S29 wrap summary
  preserves key findings). Reviewer 24.39KB unchanged (self-curated S32 startup).
  Total 117.9 -> 95.7KB (-22KB ~18%).
- Plan B-Wrap spec BW1-BW7 documented detailed (migration-todos D-Bis section):
  BW1 happy path step advance + BW2 terminal gen ma HD + BW3 skipToFinal F2 admin
  opt-in + BW4 ForbiddenException + BW5 ApplicableType=Contract validation (Reviewer
  S29 MAJOR catch) + BW6 Mig 32+33 schema persistence UNIQUE composite + BW7 V1
  fallback ConflictException. Defer dedicated session ~2h chot anh main S32 (test
  infra IChangelogService + IContractCodeGenerator mocks first-time).
- Plan C1 ops status update: backup-sql.ps1 ready (register Task Scheduler manual cmd
  documented). win-acme cert api.solutions.com.vn notAfter=2026-07-23 (auto-renew
  ~2026-06-23 NOT 2026-06-18 stale STATUS.md note). SMTP + Rotate creds BLOCKED chờ
  anh main coordinate.

Refs: docs/STATUS.md S31 wrap. docs/HANDOFF.md S31. gotcha #52 qdrant-client search
removed (RAG layer stable post-S31 fix + S32 re-ingest gotchas hit). gotcha #51
INFRASTRUCTURE vs DEMO seed (Phase 10.3 enum extend caution).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 16:36:14 +07:00
b832f43d8e [CLAUDE] Docs+Memory: S32 Phase 10 backlog Plan G NamGroup port + 4 sub-agent startup entries
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>
2026-05-26 16:17:36 +07:00
f938bf57f5 [CLAUDE] Docs: patch cicd-monitor.md stale test+mig numbers (S31)
- Tests baseline: 81/81 → 111/111 PASS (58 Domain + 53 Infra)
- Migrations: 27 → 33 (latest Mig 33 AddPeLevelOpinionsForV2 S29)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 13:43:24 +07:00
b223466ded [CLAUDE] Docs: setup RAG Framework v1.3 governance + eval framework
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m52s
- docs/governance/README.md: Path B delegation stub → AI_INFRA canonical
  Phase/BC vocabulary documented (9 phase + 10 BC SOLUTION_ERP-specific)
- .claude/rag.json: add _decision_log block (10 rationale entries) +
  add .claude/agents/**/*.md to corpus_paths (fix Case D harvest gap)
- eval/evaluator.md: inline executor spec v1.0 (Spec A strict)
- eval/golden-set-solution_erp.jsonl: 14-entry golden set v1.1
  (5 gotcha + 3 pattern + 3 decision + 3 negative)
- eval/runs/2026-05-26-baseline-v1.0-failed.json: v1.0 attempt
  recall@5=0.455 FAIL — root cause diagnosis Case A/C/D
- eval/runs/2026-05-26-baseline-v1.1-pending.json: v1.1 attempt
  pending CLI restart for accurate numbers
- eval/trial-state-lock.json: 2-section split (quality_gate +
  drift_monitor) per v1.3 §6.2, 4-week milestones 2026-05-26 → 2026-06-23

CRITICAL lesson: bootstrap.py --project flag overrides collection name only.
Use --config D:\...\SOLUTION_ERP\.claude\rag.json for correct project root.
Old projects.json had root_path=AI_INFRA for solution_erp (Anti #24) — FIXED.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 13:14:23 +07:00
c506919d7d [CLAUDE] Skill: S27 audit late drift fix include batch (mig 26→31, gotcha 44→49)
3 file skill modified bởi S27 audit late (drift trigger +8 gotcha vượt §9.4
threshold) — committed log `docs/changelog/skill-audit-2026-05-late.md` đã ghi
chi tiết 5 patches, NHƯNG 3 file SKILL.md tự thân chưa được include trong
commit batch S29 wrap `e199603` (em main quên git add `.claude/skills/`).

Changes confirm S27 audit late patches:
- .claude/skills/README.md: ef-core-migration cell `26 mig → 31 mig` + Session
  marker `S19 → S23 t1 (Mig 31 F2 per-Approver-slot)` + docs/gotchas count
  `44 → 49 bẫy`
- .claude/skills/dependency-audit-erp/SKILL.md: gotcha count `41 → 49 bẫy`
- .claude/skills/ef-core-migration/SKILL.md: description `26 mig → 31 mig` +
  heading `26 → 31 migration hiện có` + Tests note `77 → 111 test pass` +
  DbSet cho 59 bảng note `26 → 31 mig`

Verify:
- git diff 3 file content already match docs/changelog/skill-audit-2026-05-late.md
  spec → S27 patches confirmed apply
- KHÔNG drift NEW post S29 — chỉ catch-up include batch missing

CI skip per paths-ignore (.claude/skills/** match docs-only pattern).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:43:51 +07:00
e199603420 [CLAUDE] Docs+Memory: Session 29 FINAL wrap — Plan CA + Plan B Contract V2 cumulative
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 3m31s
20 commits S29 push 4 CI Runs PASS (#229+#230 Plan CA, #231+#232 Plan B).
2 big plans END-TO-END deployed prod.

Changes (docs + memory + scripts — CI skip per paths-ignore):

docs/:
- STATUS.md: S29 FINAL wrap header với cumulative summary 20 commits +
  multi-agent ROI ~565K + 8 patterns NEW + state stats (33 mig, 60 tables,
  51 gotcha, 14 AppRoles, 34 active users, 4× bundle rotate)
- HANDOFF.md: S29 FINAL wrap header với end-to-end V2 capability + pending S30+
  follow-up (anh restart CLI MCP RAG hot-reload, UAT verify V2, test bundle
  Plan B, curate dedicated session)
- gotchas.md: +gotcha #51 INFRASTRUCTURE vs DEMO seed phân biệt (Plan B
  Hotfix CICD lesson) với decision tree + seed classification table
- changelog/sessions/2026-05-22-s29-plan-ca-plan-b-contract-v2-wire.md:
  Session log đầy đủ 20 commits + 4× Smart Friend pattern proven + 8
  patterns NEW + file-touched list + NEW capability end-to-end test plan

.claude/agent-memory/:
- 4 MEMORY.md flush S29 wrap entry FIFO each agent perspective:
  - Investigator (25.2 KB just over threshold) — Plan CA + Plan B pre-flight
    2 spawn + 3 patterns NEW (terrain map, V1+V2 coexist, reference templates)
  - Implementer (35.4 KB over hard threshold, defer curate S30) — 5 spawn
    cookie-cutter + E3 stopped + Pattern 12-bis NEW (cross-module entity mirror)
  - Reviewer (23.0 KB compacted) — 4 spawn 2 MAJOR catches + Cat 3 security
    cross-module validation foundation reinforced
  - CICD Monitor (24.9 KB) — 4 Runs verify + CRITICAL DemoSeed gate catch +
    Stage 4.6 sqlcmd seed verify foundation + Discovery #6 gotcha #51 cross-ref
- implementer/pattern_master_page_mirror.md (NEW Plan CA Chunk B Pattern 16-bis)

scripts/:
- plan-ca-{verify-menu,verify-perms,run-perms}.{sql,ps1} (5 verify scripts)
- plan-b-{verify-prod,run-verify}.{sql,ps1} (2 verify scripts)

Smart Friend pattern proven 4× cumulative S22 #44 + S25 #48 + S29 Reviewer
#ApplicableType + S29 CICD #DemoSeed.

Pending S30+:
- Anh restart CLI hot-reload MCP RAG cho 4 sub-agents (commit b51fc94)
- Anh UAT verify V2 contract end-to-end (Drafter → CCM approve → DaPhatHanh)
- Test bundle Plan B (regression ApproveV2Async + ApplicableType validation)
- Curate dedicated session 4 MEMORY (Implementer 35.4 KB priority)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 13:29:49 +07:00
b51fc94ca6 [CLAUDE] Skill: Add MCP RAG tools cho 4 sub-agent definitions
Add mcp__rag-unified__search_memory + mcp__rag-unified__cross_project_search
vào tools list 4 agents (Investigator + Implementer + Reviewer + CICD Monitor).

Tại sao:
- Sub-agent spawn KHÔNG inherit MCP server access từ parent session
- 4 agents previously CHỈ có Read/Grep/Glob/Bash → re-read MD files manually
- Plan B pre-flight Investigator phải Read PE Mig 22-26 thủ công thay vì 1 RAG query
- Plan CA Reviewer Cat 1 wire claim verify KHÔNG retrieve historical gotcha cross-session
- Plan CA Hotfix 1 silent sidebar drop nếu Implementer có RAG → catch Pattern 16-bis trước commit

Trade-off accepted (anh chốt full 4 agents):
- Token cost spawn cao hơn (~5-10K extra per RAG query)
- Risk noise dilute focus → mitigate by skill-specific prompt focus

Pitfall #1 reinforced (S27 multi-agent setup):
- Session đang chạy KHÔNG hot-reload registry
- Anh restart Claude Code CLI để spawn S30+ pick up MCP RAG tools
- Plan B Chunk D Implementer đang chạy dùng config CŨ (no MCP) — KHÔNG affect

Verify post-restart (Anh):
- Spawn test Investigator → call mcp__rag-unified__search_memory thử
- Pass = MCP tools loaded; Fail = YAML syntax issue (fallback wildcard mcp__rag-unified__*)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 12:32:58 +07:00