- Session log MOI 2026-06-11-S59-wipe-tree-pmh-uat-batch.md (wipe testing data + tree 4 tang + 71 ma PMH + 6 vong UAT realtime, bundle FINAL B1DtNT9C/D6uF3Mln Run #282). - STATUS/HANDOFF flush S59 (header + table + In Progress + Recently Done + bundle line). - gotchas.md +2: #61 sqlcmd -f 65001 (console mojibake vs data-hong-that) + #62 rename natural-key DB-truoc-code-sau (seed per-code idempotent). CLAUDE.md root cite 62. - Agent-memory 5 file: cicd x9 run entries + UTC-annotate #275 + bundle status-line final, inv-codebase recon S59 + curate S51->archive, H1 x2 + H2 x2 closeout entries. - H2 GATE PASS 5/5 (0 miss, 0 on-behalf can append) + H1 ALL-4-FRESH (cross-count verified: gotcha 62 x3 nguon, bundle 4-source). RAG: 2 chunk S59 stored, rerank 0.875. - Chore monthly 07-01: curate cicd L1 ~56KB + inv 32.9KB + STATUS/HANDOFF re-tier (uu tien).
16 KiB
Tooling-Auditor Agent — Persistent Memory
Persistent diary cross-session. Auto-injected first ~200 lines at spawn (L1 HOT). Update BEFORE every stop. Tiered Memory v1: L1 HOT soft-cap ~30KB · L2
archive/on-demand · L3 RAGsearch_memoryjust-in-time. Keep entry ≤ 1.5K chars. NEW agent 2026-06-07 (adopt AI_INFRA Harness 1 — H1 tooling-freshness; TÁCH khỏi harvest-curator H2 per anh-mandate "H1/H2 hay quên+nhầm → riêng-biệt").
🎯 Role baseline
H1 tooling-freshness auditor SOLUTION_ERP-self. Read-only + propose-only (em main = single-writer). Tools: Read/Grep/Glob/Bash + 4 RAG-read. NO store_memory, NO Write/Edit. Audit 4-mặt mỗi session: skill · sub-role · plugin · docs — đầy-đủ + kịp-thời. @session-start báo state + diff-vs-last; @session-end chốt + new-alloc audit.
🚫 Split boundary
- ✅ MINE: tooling/docs freshness (4-mặt) + roster-drift + skill/plugin new-alloc — SOLUTION_ERP-self
- ❌ NOT: harvest-memory/5-trục → harvest-curator (H2) · corpus/RAG/deploy → cicd-monitor · code/SQL audit → investigator-codebase · write/decide → em main
📋 Baseline state (re-ground 2026-06-10 S57-start — VERIFY mỗi session, đừng tin số cũ)
- Roster: 11 sub (9 product/quality: investigator-codebase/api · implementer-backend/frontend · test-specialist · reviewer · cicd-monitor · frontend-designer · database-agent read-advisory S52 + 2 monitor INFORM-only: tooling-auditor · harvest-curator).
- Skills: 6 project (
.claude/skills/) + ~23 standalone (~/.claude/skills/, vd sql-database-assistant). - Plugins: 18 registered (15 enabled / 3 disabled: pr-review-toolkit · code-modernization · hookify) user-global (
~/.claude/settings.json) — nấc installed/enabled, phần lớn CHƯA assigned-to-roster. - Docs canonical:
CLAUDE.md(root+docs) ·docs/STATUS.md·docs/HANDOFF.md·.claude/agents/README.md·docs/governance/.
⚠️ Anti-patterns
❌ Tự sửa config/doc/enable-plugin (propose-only) · ❌ conflate plugin "enabled"="used" · ❌ tick-checkbox no-evidence · ❌ đụng harvest-memory (đó là harvest-curator) · ❌ G-015 overclaim "read-only enforced" (Bash residual = write-channel mở).
📅 Recent activity (FIFO — older → archive/git)
- 2026-06-07 (CREATED): Seeded H1 tooling-auditor (adopt AI_INFRA Harness 1, anh giao). Tailored SE: 4 RAG-read (KHÔNG copy AI_INFRA 2-RAG) ·
model:inherit(KHÔNG effort:max) · omit color (8 màu chuẩn cyan/blue/yellow/orange/purple/red/green/pink đã hết). Wired @session-start RE-REPORT (Phase 2.1.1) + @session-end H1 chốt. Nấc: executed-file, verified-runtime PENDING CLI restart + first spawn smoke. Tag [created, harness-1, h1]. - 2026-06-07 (S50 FIRST REAL RUN — verified-runtime ✅): Spawned @session-start (RE-REPORT) + @session-end (CHỐT). Load OK → verified-runtime CONFIRMED (closes 'PENDING' above). 4-mặt audit caught 3 freshness drifts → em main patched all: (1)
agents/README.md:157plugin 15→18 (+csharp-lsp/typescript-lsp/session-report); (2).claude/skills/README.md:20ef-core 31→43 mig,:90gotcha 49→57 (⭐ MISSED by S44 monthly audit — index file not on its checklist → per-session monitor adds value over monthly cron); (3) verified-runtime markers STATUS/HANDOFF flipped. Method-learning: ground-truth EVERY count from disk —settings.json enabledPluginsline-count = authoritative plugin#;skills/README.md≠SKILL.mdfrontmatter (drift independently). Residual flagged (em main): STATUS RAG-chunk 2406↔2415 contradiction → reconcile to 2415; ASCII diagram 7→10 lanes (cosmetic). Tag [first-run, verified-runtime, freshness-catch]. - 2026-06-08 (S51
/session-endCHỐT 4-mặt — RAG down, 0 file written): skill 6+23 unchanged · roster 10 intact (database-agent=PROPOSAL not-adopted) · plugin 18 registered (15 enabled / 3 disabled pr-review-toolkit·code-modernization·hookify — "enabled" overstates by 3, nâc-conflation) · docs STATUS/HANDOFF/gotchas S51 ✅ consistent. NEW-ALLOC: AI_INFRA2026-06-08-Agent-database-codebase-agentsbroadcast → database-agent STRONG-FIT recommend /adap-apply (DB11 RowVersion fixes S43 lost-update gap; templates exist; 5 caveats: needs color#9, EF-pin-guard, DB7-boundary-vs-implementer-backend, executed-file-nâc, model:inherit) · codebase-agent SKIP (investigator covers grep/audit + csharp-lsp Windows no-op). Doc-drift coords (em main fixed root only; deferred rest→monthly): ✅fixed CLAUDE.md root :53/:66/:81/:87/:131; ⏳defer docs/CLAUDE.md:65/70 + skills/README:20 (ef-core 43→45) + agents/README:157 (nâc-reword) + schema-diagram §16+ Mig32-45 (14-mig debt). Method: installed≠enabled≠assigned≠used; ground-truth from disk. Tag [s51, chot-4-mat, new-alloc-database-agent, doc-drift-coords]. - 2026-06-10 (S57-start RE-REPORT): Audit @start với S57 in-flight dirty (9 file, session trước ngắt no-closeout). ①SKILL 6+23 unchanged; ef-core :3/:19=48mig FRESH; STALE ef-core:72 92→93 · :280 91/42→93/48 · :289 27-42→27-48 + dep-audit:153 57→58 + skills/README:90 57→58 → em main patched ALL cùng session-start (P2). ②ROSTER CLEAN 11=11=11 (disk/README/STATUS); minor README:201 "8 folder"→11 + hmw.js VALID_ROLES(8) thiếu database-agent (S56 dùng 3× fail-soft) → em main patched (P3, VALID_ROLES=9). ③PLUGIN CLEAN 18/15/3 identical S53, 0 new-alloc. ④DOCS MAJOR: S57 invisible (grep
S57|perm-broaden=0 match; STATUS:38 "In Progress: none" vs tree dirty 9 file) → closeout cần STATUS+HANDOFF+log+permission-matrix-skill-conditional+investigator-MEMORY-commit (P1 pending resume). gotcha #58 VERIFIEDgotchas.md:1063. Method-learning: gotcha entry format = "### N." KHÔNG "#N" — grep literal "#58"=0 match suýt false-alarm; verify format trước khi claim missing. Baseline block re-grounded (roster 11 · plugin 18(15/3) · +database-agent). Tag [s57-start, 4-mat, s57-gap, patched-p2-p3]. - 2026-06-10 (S57-RESUME @start RE-REPORT): Re-audit 4-mặt với 16-file dirty (S57-interrupted). ①SKILL PASS 6+23; 3 skill-doc dirty verified ĐÚNG (ef-core:72/:280/:289 · dep-audit:153 · skills/README:90); permission-matrix = conditional closeout (S57 đổi seed model). ②ROSTER DRIFT-residual: dirty README:192(9)+:201(11)+hmw.js(9) đúng+nhất quán, NHƯNG catch MỚI
ultra-on.md:23-24VALID_ROLES "8 sub" thiếu database-agent (floor-doc README:197 trỏ tới!) +session-start.md:37/:44-54"10-agent"+list 9 tên thiếu frontend-designer+database-agent +:40 gotcha (55)→58 — commands/*.md TRƯỚC GIỜ NGOÀI radar grep roster → thêm vào checklist mặt-② vĩnh viễn. Em main PATCHED cả 2 ngay trong session (ultra-on→9-sub + session-start→11-agent list đủ + 58). ③PLUGIN PASS 18/15/3 identical, marketplace 35, 0 new. ④DOCS: root+docs CLAUDE.md SẠCH (fix từ S56a62e797, KHÔNG phải monthly-pending) → HANDOFF:24 backlog-item = stale-contradiction tự mâu thuẫn HANDOFF:17 — backlog coords PHẢI re-verify trước khi tin (3/5 coords HANDOFF:121 cũng đã obsolete). S57 invisible STATUS/HANDOFF = P1 closeout debt. Verdict 8 file .claude: 5 tooling COMMIT-AS-IS; 3 MEMORY → H2 verified OK. Tag [s57-resume, 4-mat, ultra-on-catch, stale-backlog-coords]. - 2026-06-10 (spawn-test H4.8 — Harness-4 two-tier): Mình bị DEMOTE pin
model: claude-opus-4-8(checklist-class, mirror AI_INFRA demote con tương đương). Spawn-test echo model NGAY sau edit → self-reportclaude-fable-5[1m]= SE env (CCD harness) KHÔNG fresh-read frontmatter → pin ăn SAU restart CLI. Post-restart mình chạy Opus 4.8 (Max giữ nguyên env-wide) — nếu thấy verdict-quality tự giảm rõ → báo em main adap-request promote lại. Tag [h4-demote, spawn-test, pending-restart]. - 2026-06-11 (S57bis @start RE-REPORT + spawn-test post-restart ✅): Self-report nguyên văn
claude-opus-4-8[1m]("Opus 4.8 (1M context)") → demote-pin ĂN runtime (đóng 'pending-restart' entry trên) +[1m]1M-resolve SE tự verify (hết lệ thuộc claim AI_INFRA s20). 4-mặt ALL-PASS 0 drift mới — 29 file dirty = Harness-4 closeout hợp lệ: ①3 skill-doc diff = freshness-fix đúng (48 mig/93 bảng/58 gotcha) ②roster 11=11=11, frontmatter grep = 7 pin + 4 inherit, 0[1m]frontmatter ③plugin 18/15/3 identical, 0 new-alloc ④STATUS diff hợp lệ + 3 untracked governance đúng nấc → đề xuất promote PENDING-RESTART→runtime-verified (em main đã thực hiện cùng session). Carry-flag: docs/CLAUDE.md gotcha "(55)"→58 (defer monthly 07-01) · schema-diagram §16+ 14-mig ERD debt. Demote-watch data-point #1: verdict-quality trên Opus 4.8 tự đánh giá CHƯA suy giảm. Tag [s57bis, spawn-test-verified, 4-mat-pass, demote-watch-1]. - 2026-06-11 (post-S57bis @start RE-REPORT — count-drift S57bis CHƯA flush docs): Working tree 2 dirty (cicd MEMORY +Run#381 · gotchas.md +#59) — S57bis code đã COMMIT (dd117b7+17b23a4 push). 4-mặt: ①SKILL 6+23 unchanged; ef-core SKILL STALE 4 cite "48"→49 (:3 desc · :19 H2 "48 migration hiện có" · :72 "§16+ Mig 27-48"→27-49 · :280 "48 migration") + :280/:289 "93 bảng" giữ (Mig 49 AddColumn-only no new table — KHÔNG đổi); skills/README:20 "48 migration"→49 + :90 "58 bẫy/#58"→59; dep-audit:153 "58 bẫy"→59. ②ROSTER CLEAN 11=11=11 (disk/README/STATUS); model-tier frontmatter grep = 4 inherit (database-agent·harvest-curator·investigator-codebase·reviewer) + 7 pin claude-opus-4-8 ✅ khớp two-tier H4 chính xác. ③PLUGIN CLEAN 18/15/3 identical (3 OFF: pr-review-toolkit·code-modernization·hookify), 0 new-alloc. ④DOCS MAJOR data-row drift: STATUS row :24 sub-agent ĐÃ cập runtime-VERIFIED 06-11 NHƯNG data-rows CHƯA: :14 Mig "48"→49 · :20 Tests "228"→240 · :21 Gotchas "58"→59 · :27 bundle (S57bis FE-touched nhưng session-log KHÔNG ghi hash mới → CP4CB1ym/BmZ3VHnm anh-cite KHÔNG verify được, grep 0 match) · STATUS:38 In-Progress "(none S56)" stale (S57+S57bis shipped). HANDOFF:5 Last-updated 06-09 S56 + thiếu HẲN S57/S57bis section. Root CLAUDE.md:53 "48 mig"→49 · :66/:87 "228"→240 · :133 "58 bẫy"→59. Method-learning: test attr-count disk=225 (
[Fact]/[Theory]) NHƯNG authoritative=240 (S57bis log :14 "228→240"; Theory expand runtime → KHÔNG dùng attr-count làm count, tin session-log/test-run) · bundle-hash anh-cite phải verify từ session-log/cicd-MEMORY trước khi tin (S57bis log không ghi → flag "unverified" KHÔNG copy). Top-5 patch propose → em main APPEND. Tag [post-s57bis, 4-mat, count-drift-flush-pending, bundle-hash-unverified]. - 2026-06-11 (S58
/session-endCHỐT 4-mặt — PARTIAL, return-cut giữa chừng, on-behalf em main ghi hộ): Return bị cut sau finding chính (verdict 4-mặt đầy đủ KHÔNG kịp emit). FINDING ĐÃ GIAO: docs KHÔNG stale như brief giả định — STATUS lines 27/52/53 ĐÃ flush tớiea793a4+3ebaf84/Run #386 + bundleDMm9rtNA/BUkOMn_Y(em main flush song song lúc H1 chạy) → bài học brief: "chưa flush" là snapshot lúc spawn, auditor phải re-ground từ disk hiện tại (đã làm đúng). Em main tự chốt phần còn lại từ data sáng: ①SKILL — sáng patched đủ (ef-core ×5 + README + dep-audit), chiều không thêm skill; ②ROSTER 11 + two-tier frontmatter không đổi; ③PLUGIN 18/15/3 không đổi, 0 new-alloc (UI/UX guide AI_INFRA = reference doc, KHÔNG phải plugin/skill — đã cite trong frontend-designer MEMORY S58 entry); ④DOCS — session-end flush hoàn tất (STATUS/HANDOFF/session-log/error-ledger E-008+AS-12). SURPRISE: return-cut class này (chết giữa emit sau khi finding chính đã ra) = nhẹ hơn die-0-byte, finding salvageable từ partial return. Tag[s58, session-end-chot, return-cut-partial, on-behalf]. - 2026-06-11 (S59 @start RE-REPORT — ALL-4-FRESH, 0 drift, tree clean): Bootstrap sau S58 đóng-sạch (HEAD
1577927, tree clean). 4-mặt TẤT CẢ FRESH, 0 drift mới — session đầu tiên 0-patch kể từ S57bis. ①SKILL 6 project + 23 standalone unchanged (list standalone identical S58); 0 skill mới/đổi/mất. ②ROSTER CLEAN 11=11=11 — disk 11 .md (README.md=doc KHÔNG đếm) = README:3/:13 "11 sub" = STATUS:24 "11"; frontmatter grep = 4 inherit (database-agent·harvest-curator·investigator-codebase·reviewer) + 7 pin claude-opus-4-8 ✅ khớp two-tier H4 (README:3 list khớp chính xác). ③PLUGIN CLEAN 18/15/3 identical S58 (settings.json:17-35 verbatim; 3 OFF: pr-review-toolkit:20·code-modernization:22·hookify:27), README:166 "18(15/3)" khớp, 0 new-alloc. ④DOCS ALL-COUNT-FRESH ground-truthed từ disk: Mig 49=49 (diskPersistence/Migrations/*.csđếm 49, cao nhất20260611044424_AddWorkItemToPurchaseEvaluation) · menu keys 57=57 (MenuKeys.csconst đếm 57) · gotcha 60=60 (max### 60.) · test 240 (S57bis+S58 log authoritative, KHÔNG attr-count) · tables 93 (cicd Run #379). CLAUDE.md root :53/:66/:133 + STATUS :14/:15/:20/:21 + README roster ALL khớp disk. Minor narrative-lag (KHÔNG phải drift, KHÔNG patch): STATUS:6 header "Run #382/#383/#384" thiếu #386 NHƯNG body+bundle:27 đã đúng #386 → cosmetic, defer. Carry-flag bất biến: docs/CLAUDE.md gotcha "(55)" (monthly 07-01) · schema-diagram §16+ Mig 32-49 ERD debt (~17 mig). Method: Bash-tool nuốt$-var của inline PS → phảipowershell -NoProfile -Command "& {...}"với escape\$; Migrations KHÔNG ởInfrastructure/MigrationsmàInfrastructure/Persistence/Migrations— verify path trước khi đếm. 0 delta đề xuất (clean baseline). Tag[s59-start, 4-mat-all-fresh, 0-drift, clean-tree]. - 2026-06-11 (S59
/session-endCHỐT 4-mặt — ALL-FRESH, 0 drift, em main docs-flush verified): 6 commit code S59 (56882ac→9c330d2, Gitea Run #273→#278 — KHÁC đếm Run#38x S58, run_number reset) đã COMMIT+prod-verify; em main vừa flush docs (CHƯA commit, tree 5 MEMORY.md M + 4 docs M + 1 untracked session-log). 4-mặt ALL-FRESH, 0 drift: ①SKILL 6 project + 23 standalone unchanged (0 mới/đổi/mất);SearchableSelect.tsx×2 app = code FE (UI primitivecomponents/ui/), KHÔNG phải skill/plugin → confirm 0 new-alloc. ②ROSTER CLEAN 11=11=11 (disk/README:3/STATUS:24); two-tier frontmatter UNCHANGED (4 inherit+7 pin). ③PLUGIN CLEAN 18/15/3 identical (3 OFF pr-review-toolkit·code-modernization·hookify), 0 new-alloc. ④DOCS cross-count CONSISTENT, em main flush ĐÚNG: gotcha 62=62 (max### 62.= count 62 contiguous, #61/#62=S59 verifiedgotchas.md:1099/:1111) = STATUS:21 "62" = CLAUDE.md root:133 "62 bẫy"; bundleBSh2fG2X/D22KfpPcTRIANGULATED 4-source (STATUS:27 + HANDOFF:5 + session-log:4 + cicd-MEMORY:71 full Run#278 provenance — anti-pattern#3 stable-after-success verified) ✅; session-log2026-06-11-S59-wipe-tree-pmh-uat-batch.mdEXISTS; HANDOFF:9 S59 section + HANDOFF:5 header 06-11 present; STATUS:16 master-row 71 WorkItems + STATUS:34/:48 In-Progress(none)/Recently-Done S59 present; specmaster-import-data.generated.md74 W-rows. Cross-doc 0 LỆCH/SÓT. Carry-flag bất biến: docs/CLAUDE.md gotcha "(55)" (monthly 07-01) · schema-diagram §16+ Mig 32-49 ERD debt. Method-learning: (a) bundle-hash KHÔNG tin 1-source — S59 triangulate 4 nguồn (đối lại S57bis bài học "session-log không ghi → unverified"); cicd-MEMORY:71 là nguồn provenance giàu nhất (Run#+sha+rotate-from+health). (b) Tool-gotcha PS:Get-Content -Raw+-TotalCountMUTUALLY EXCLUSIVE → frontmatter-read fail; dùng Grep tool^model:thay loop. (c) Run-number S59 reset #273-278 ≠ S58 #38x (run_number API đổi đếm cùng pipeline — KHÔNG nhầm regression). 0 delta đề xuất. Tag[s59-end, 4-mat-all-fresh, 0-drift, bundle-triangulated-4src, searchableselect-not-skill].