# Tooling-Auditor Agent — Persistent Memory - [Máy mồ-côi + addendum lệch vế](method_orphan_machine_audit.md) — 2 lớp drift tái phát mặt ③/④; 3 phép đo nhà-khai + control dương (mở @S185) - **S185 (2026-08-09/10) @close bookend L13 — `TOOLING: PASS_WITH_FLAGS — 6` (+2 INFORM) `[LEAD SEED ON-BEHALF]`:** ①②③-số PASS (skill 6+23+19 · roster **28 khớp 5/5** · plugin 18/15/3 **0-delta phiên 5**); ③máy+④docs DRIFT. F-2 HIGH = máy mồ-côi **thứ 3** ngay phiên sau khi `(k-ter)` dựng để diệt bệnh đó. F-3 addendum đóng 4.2 bỏ 4.4. F-6: run.md tick 0/11 ⇒ luật ONE-SHOT vừa land **mất la-bàn ngay lượt đầu**. Nguồn `runs/2026-08-09-S185-bookend-close/sub-tooling-auditor.md`. - **S181 (2026-08-07) @close — `TOOLING: PASS_WITH_FLAGS — 6 flag` `[LEAD SEED ON-BEHALF]`:** 🔴 **Cứu một con số ĐÃ ĐÓNG DẤU RC.** Return bị #53 cắt, nhưng **mẩu garble chứa finding**: *"New agents show `model: opus` but no `effort:` line"*. Lead đo lại: 28 vai · 28 `model: opus` · chỉ **26** `effort: max`, thiếu đúng 2 vai W4b. Mà bảng gốc TC-03 **vừa ký RC** ghi *"26/26 pin effort"* ⇒ **con số khẳng định phủ-đủ trong khi thủng 2**. Vá cả persona lẫn số. ⇒ **Bài: đọc mẩu garble TRƯỚC khi resume** — nó có thể là bằng chứng duy nhất chống lại một artifact đã ký. F-1/F-4 cùng một lượt sinh vai sót **2 khoá** (`effort` + `memory: project`), không phải 1. F-1 HIGH đắt nhất về cấu trúc: `STATUS:478` là ô canonical mà **5 con-trỏ B1 cùng trỏ vào** ⇒ 1 ô sai = 5 con-trỏ resolve ra số sai. 🔸 Tự bác 2 ứng-viên flag: `naming-baseline.json "vai": 29` KHÔNG stale (tập-đo của `naming-scan` **kể cả README**, khác tập roster) · dòng *"roster is 20 as of S145"* là **bản ghi đông-lạnh có neo thời-điểm**, sửa = giả mạo phép đo cũ. Tag `[s181, garble-chua-finding, cuu-so-da-ky-RC, 1-luot-sinh-vai-sot-2-khoa, o-canonical-5-con-tro]` - **S179 (2026-08-07) drift-audit THÁNG quá hạn 6 ngày — `TOOLING: PASS_WITH_FLAGS — 8` `[LEAD SEED ON-BEHALF]`:** **3 mặt PASS có số**: roster **26** khớp 4 bề-mặt (đĩa 27 file **trừ README** = 26 — bẫy glob, đừng đếm 27) · skill-map **26/26 vai** (`comm -23` rỗng), 3 vai STYLE trỏ skill tồn tại thật · plugin **18 registered / 15 enabled / 3 disabled**, khớp `README:229`. **R-1 = same-class residue, site THỨ 6** của lớp "claim chép nhiều site": `README:234` ghi `frontend-design (KHÔNG enable plugin trùng)` trong khi `~/.claude/settings.json` = `"frontend-design@claude-plugins-official": true` — lead verify đĩa **CONFIRMED**, vá vị-từ thành *"plugin trùng ĐANG enabled, cố ý KHÔNG dùng"*. Đây là lần **thứ 3** lớp này tái phát trong cùng file (S153 → S172 → nay). **F-6** bắt đúng bẫy tự-sinh: `CLAUDE.md:121` hardcode `Lần kế 2026-08-01` ⇒ *"đóng audit mà quên lật ô này thì chính lượt đóng lại đẻ neo thối mới"* — lead lật ô + đóng **cả cụm 3 dòng** HANDOFF (không chỉ 1 dòng, đúng bài R-1). **CÒN 6 chưa vá, đã vào WAL:** F-2 `permission-matrix` cây thiếu **5 root** đang sống · F-3 nó tự cấm chép số rồi chép `12 root` · F-4 dải `§16+` **4 giá-trị khác nhau/4 surface** · F-5 `PROJECT-MAP` (file #3 trong 5-file-đọc-trước) **0 hit** 4 module sống, control dương `contract`=31 · F-7 skill-mig dừng Mig 71 · F-8 schema-diagram "91 bảng" vs canonical 97. 🔴 #53 garble, resume vớt trọn. 🔸 3 item **"đã cân nhắc rồi BÁC"** đều đúng (Mig 71/72 = 0 `CreateTable` nên câu "last schema-changing Mig 70" VẪN đúng theo từ-vựng chính file). Tag `[s179, drift-audit-thang, same-class-residue-site-6, dong-audit-de-neo-thoi, roster-26-bay-glob, con-6-chua-va]` - **L2 archive `archive/2026-08.md` (compact @S185, byte-verified VERBATIM):** S168 · S172 · S153 · S150 · S151 · S152 · S159 · S162 · FIFO 2026-06/07 · S123/S125 · pointer S126/S140/S143. Nghe rut ra da hoisted len Method/Anti-pattern — doc archive khi can chi tiet phep do cu. > **Persistent diary cross-session.** Auto-injected first ~200 lines at spawn (L1 HOT). > Update BEFORE every stop. Tiered Memory v1: L1 HOT (hook hard-limit <17KB) · L2 `archive/{2026-06,2026-07,2026-08}.md` verbatim on-demand · L3 RAG `search_memory`. Keep entry ≤ 1.5K chars. > 🔸 Compact **S185 2026-08-10**: 31.696 B → **14.852 B**, 11 khoi → `archive/2026-08.md` (move-not-cut, verify `block in archive` = True TRUOC khi xoa khoi L1). > **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"). Compacted S99 2026-07-02 (19.6KB→~9KB, 12 entry 06-xx → archive NGUYÊN VĂN) · S105 2026-07-07 (19.4→~16KB, S98-S100 → `archive/2026-07.md`) · S106 2026-07-07 (19.7→14.9KB, S102-S104 @start → `archive/2026-07.md`; byte-verified md5×3 @S107) · S107 2026-07-10 @end (17.8→**16.2KB**, S101+S105 @start → archive md5×2) · S109 2026-07-10 @start (17.2→~13KB, S105-end+S106-start → archive md5×2) · S111 2026-07-12 @start+@end (18.35→16.9→~16.4KB, S107×2+S108-end [@start ×2-pass] + S109-start [@end pass-3] → archive fragment+size-verified) · S116 2026-07-13 @end (17.06→13.5→~15.4KB, S110 @start+@end → `archive/2026-07.md` verbatim sed-append +3643B-verified) · S118 2026-07-14 @start (15.7→~15.4KB, 7 pointer-entry S98→S106 gộp 1-digest — verbatim ĐÃ ở archive từ compact trước, 0 move mới) · S125 2026-07-16 @start (21.6→15.8KB, S118-end + S119 @start+META → `archive/2026-07.md` verbatim sed-move +6212B-verified). --- ## 🎯 Role baseline H1 tooling-freshness auditor **SOLUTION_ERP-self**. Read-only + **propose-only** (em main = single-writer; NGOẠI LỆ duy nhất: diary/archive của chính mình). Tools: Read/Grep/Glob/Bash + 4 RAG-read. NO `store_memory`. 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. 🔴 Final message = VERDICT trực tiếp, KHÔNG narrative memory-curation (#53 return-garble ×4). ## 🚫 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-08-10 S189** — VERIFY moi session, dung tin so cu) - **Roster:** **29 vai** — dia `ls .claude/agents/*.md` = 30 **tru `README.md`** (🔸 bay glob). ✅ **Khop 6/6 be-mat @S189**: dia · `VALID_ROLES` (hmw.js, parse neo `^\]`) 29 · `agent-memory/*/` 29 dir · `STATUS.md:480` · `agents/README.md:27` (enum 7core+22, **da BO SO** @S188) · skill-matrix `agents/README:194-231` **29 row** (`comm` 2 chieu rong — no tu S182 DA DONG). Frontmatter **29/29** ca 3 khoa `model: opus`/`effort: max`/`memory: project`. 🔸 Doc-lap that = dia + **4 nguon tay-nuoi** (1&3 dong-bien mot phan). - **Skills:** 6 project (`.claude/skills/`) + 23 standalone (`~/.claude/skills/`) + **20 command** (`.claude/commands/`; +`day.md` @S189). `hmw` = script `workflows/hmw.js`, KHONG phai slash-command. - **Plugins:** **18 registered / 15 enabled / 3 disabled** (`pr-review-toolkit` · `code-modernization` · `hookify`) user-global `~/.claude/settings.json`; marketplace **37**. **0-delta phien thu 7.** Lead model o file do = `claude-opus-5[1m]` + `effortLevel: xhigh`. ⚠️ project `.claude/settings.json` chi co hooks.Stop `wal-flush.ps1` — authority ③ VAN la user-global (dung conflate 2 file settings). - **May:** `scripts/*.ps1` = **37** (+`day-probe.ps1`; co nha khai ≥4 be-mat ⇒ KHONG mo-coi). Sub pin `model: opus` + `effort: max` (worker-tier-pin S124). - **So canonical khac (do @S189):** Migrations **72** · SQL tables **97** · Tests **680** (45D+635I) · Gotchas **88**. 🔴 **Dem Migrations: `ls *.cs` − `*.Designer.cs` − `ApplicationDbContextModelSnapshot`** — KHONG loc theo chu "Snapshot" (migration `AddPeApprovedBudgetSnapshot` co chu do trong ten ⇒ ra 71 sai). - **Docs canonical:** `CLAUDE.md` (root+docs) · `docs/STATUS.md` (so canonical B1) · `docs/HANDOFF.md` · `.claude/agents/README.md` · `docs/governance/`. ## ⚠️ Anti-patterns ❌ Tự sửa config/doc/enable-plugin (propose-only) · ❌ conflate plugin "enabled"="used" (installed≠enabled≠assigned≠used) · ❌ tick-checkbox no-evidence · ❌ đụng harvest-memory (harvest-curator) · ❌ G-015 overclaim "read-only enforced" (Bash residual = write-channel mở). ## 🧭 Method distilled (S50-S98 — chi tiết verbatim `archive/2026-06.md`) - **Ground-truth MỌI count từ disk:** `settings.json enabledPlugins` = authoritative plugin# · `skills/README.md` ≠ SKILL.md frontmatter (drift độc lập) · Migrations ở `Infrastructure/Persistence/Migrations` (KHÔNG `Infrastructure/Migrations`). - **Test count:** KHÔNG attr-count `[Fact]/[Theory]` (Theory expand runtime) — tin session-log/test-run/STATUS. - **Bundle-hash:** KHÔNG tin 1-source — triangulate (cicd-MEMORY = provenance giàu nhất Run#+sha+rotate); anh-cite chưa verify được → flag "unverified", KHÔNG copy. - **gotcha format:** entry = `### N.` KHÔNG `#N` — verify format trước khi claim missing. - **commands/*.md + ultra-on.md = trong radar:** roster-grep (S57 catch) + count-grep (S99 catch "(68)") — lớp file hay bị monthly-audit bỏ sót; index/README files cũng vậy (S50). - **Drift born-SAU-monthly-CÙNG-NGÀY** = lớp riêng (S97/S98) — per-session monitor bù lớp monthly không thấy. - **system-reminder claudeMd header = pre-session snapshot** → re-Read line thật trên disk, KHÔNG tin context-injection. Brief "chưa flush" cũng = snapshot lúc spawn → re-ground disk hiện tại (S58). - **Backlog/coords trong HANDOFF phải re-verify** trước khi tin (stale-contradiction S57-resume). - **Model spawn-test:** frontmatter no hot-reload — pin/inherit ăn SAU restart CLI; self-report nguyên văn = bằng chứng runtime (H4 S57bis · H8 S98). - **Tool-gotchas:** Bash nuốt `$` PS-inline → `powershell -NoProfile -Command` escape `\$` · PS `Get-Content -Raw`+`-TotalCount` mutually exclusive → dùng Grep tool `^model:`. - **Return-cut giữa emit** (S58) = finding chính vẫn salvageable từ partial return; emit finding chính SỚM trong report. - **May MOI sinh trong phien = ung-vien mo-coi so 1** — grep ten may o `.claude/commands/` VA `docs/`, **kem control duong** (`naming-scan` ~9 file). Chi tiet + lop anh em *addendum lech ve* → [`method_orphan_machine_audit.md`](method_orphan_machine_audit.md). - **Grep-tool brace-glob `{a,b}/**` match 0-FILE → sweep VOID tưởng clean** (S105) — re-run per-dir; phân-biệt "0-match" vs "0-file-searched". ## 📅 Recent activity (FIFO — older → `archive/2026-06.md` verbatim) - **S182 @open (lead-seed on-behalf, C2 /pause):** `PASS_WITH_FLAGS — 4` — matrix `agents/README:190-219` phủ 26/28 (thiếu 2 vai score W4b, control-dương 0-row-ma) · `STATUS:478` "roster 23" sai-SỐ-đúng-KẾT-LUẬN · `skills/README:20` residue câu đã xoá @S181 (lớp claim-chép-nhiều-site lần 4) · `permission-matrix:3` "12 root" hoá ra ĐÚNG SỐ (ring1 chốt 12) — chỗ sai là CÂY `:44-77` vẽ 8. #53 garble, resume cứu trọn. → `runs/2026-08-07-S182-bookend-open/sub-tooling-auditor.md` - **S186 (08-10) @open L14 — `PASS_WITH_FLAGS 7` `[LEAD SEED ON-BEHALF; nguồn `runs/2026-08-10-S186-bookend-open/sub-tooling-auditor-open.md`]`:** HIGH duy nhất = `agents/README:27` "Roster THẬT (28 vai)" + liệt 28 TÊN **thiếu `ring5-audit`** (đĩa 29) — **2 lỗi/1 dòng**, và vi phạm chính luật `:3` cấm chép số, trong khi `:28` ngay dưới là bài S143 dạy *đếm phần-tử*. 🔑 **`SKILL-STALE-VERDICT` = đóng góp đắt nhất:** phần lớn cờ `derived-stale` trong SKILL.md là **dương-giả** — chúng khai về **SỰ-KIỆN ĐÃ ĐÓNG trong quá khứ**, vá cho tụt flag-count = **Goodhart, rời tập-đo**. Tiêu chí phân loại tự dựng: *"dòng này khai về QUÁ KHỨ hay tự nhận là ẢNH HIỆN-TẠI?"* — chỉ nhóm 2 mới là stale. Stale THẬT đúng **2**: `skills/README:20` chép câu **đã bị bác @S181** (vị-từ sai, không phải count-token) · `permission-matrix` cây **8 root** vs `:3` khai **12**. ⚠️ **`ring1` BÁC 1 tên trong 4 root vắng:** `Puro` là **TÊN MA** (6/6 hit đều trong COMMENT trỏ NAMGROUP); tên thật là `HopDongCung`. ⇒ bài `verified-number / unverified-label`: **số đúng, NHÃN trôi**. Neo `README:2` cũng lệch, thật là `:3`. RING5-SYNC: 3 nơi khai roster + 3 bề-mặt máy **đều khớp 29**, chỉ **site thứ 4** trong chính README lệch. Plugin 18/15/3 **0-delta phiên thứ 6**; frontmatter **29/29 sạch** cả 3 trường. Tag `[s186, qua-khu-vs-anh-hien-tai, puro-ten-ma, site-thu-4]` ## S188→S189 (2026-08-10) — [S188 lead-seed; S189 tu ghi, artifact-first] - **S188 @close** — chet non sau mat-2/mat-3. F-1 HIGH: `agents/README:27` ghi roster 28 + liet thieu `ring5-audit` trong khi dia 29. Va @S188 bang **BO SO** (dung luat `:3`) + them ten vao enumeration. - **S189 @open L15 — `PASS_WITH_FLAGS — 7`** (1H/2M/3L/1I). Nguon `runs/2026-08-10-S189-bookstart-open/sub-tooling-auditor-open-S189.md` **21.170 B**, dong-1 = verdict (artifact-first theo lenh lead sau #53). - 🔴 **BAI DAT NHAT (F-5) — CONG-THUC CHEP TRONG DOC CUNG LAO-HOA, va no bay CHINH MINH.** `STATUS:471` khai `Migrations 72` kem cach do *"ls Migrations/*.cs tru Designer+**Snapshot**"*. Ap dung chu ⇒ ra **71**, vi migration `20260717032812_AddPeApprovedBudgetSnapshot.cs` co chu **"Snapshot" trong TEN CUA CHINH NO** ⇒ bo loc an nham 1 migration THAT. Em suyt bao "canonical drift 72 vs 71" = **bao oan dung o canonical DUNG**. Do lai dung: 145 `.cs` − 72 `*.Designer.cs` − 1 `ApplicationDbContextModelSnapshot` = **72** ✅ (+ `git log --diff-filter=D` = 0 file xoa, loai gia-thuyet mat-mig). ⇒ **Luat moi: cong-thuc nam canh con so = derived-artifact, KHONG duoc mien-tru chi vi trong giong lenh chay duoc. Tu dung phep do, dung chep recipe trong doc.** Ho lop `bay glob README` va `--since prune im lang`. - 🔑 **Hoi "con be-mat nao cung lop?" phai khai DO-RONG CUA LOP.** F-1 (`CLAUDE.md:77` KHKK ghi `69, 71` thieu Mig 72): lop **HEP** (chuoi `69, 71`) = **1 site duy nhat** (grep 5 file) ⇒ de tuong "va 1 cho la xong". Nhung lop **RONG** (be-mat ke migration ma bo sot Mig 72) = **2 site** — con lai `ef-core-migration/SKILL.md:99` (bang dung Mig 71, carry S179 F-7). Va 1 trong 2 = sot dung mot nua lop. - ✅ **Mat ② lan dau SACH TUYET DOI ke tu S179:** roster **29** khop **6/6** be-mat (dia · VALID_ROLES 29 · agent-memory 29 dir · `STATUS:480` · `README:27` enum 7core+22 · **skill-matrix 29 row, `comm` 2 chieu rong**). Frontmatter **29/29 × 3 khoa**. No dai nhat (matrix 26/28 tu S182) + no `effort` S181 **DEU DONG**. 🔸 Nhung **KHONG khai "6 be-mat doc-lap"** — 1&3 dong-bien mot phan; doc-lap that = dia + **4 nguon tay-nuoi** (bai S180 ring1 bac). - **Plugin 18/15/3 — 0-delta phien thu 7.** Va S179 R-1 (`frontend-design` vi-tu) KHONG tai phat. Nac `used` **khong do duoc ⇒ khong khai**. - **`day.md` + `day-probe.ps1` (may MOI, command 19→20 · ps1 36→37): KHONG mo-coi** — nha khai ≥4 be-mat song (CLAUDE.md · day.md · pause.md · tiep.md). Chu dong soi vi la may moi sinh. - 🔸 **4 item "da can nhac roi BAC" (chong Goodhart):** `permission-matrix:3` "12 root" DUNG (ring1 S182 chot; sai la CAY) · `STATUS:7` "Tests 668" = ban-ghi-dong-lanh co neo phien · `ef-core SKILL:102` "last schema-changing Mig 70" VAN dung (Mig 71&72 `CreateTable`=0) · `STATUS:10` "roster 28" ha xuong **LOW** vi `:8` tu khai dong CURRENT lag + co neo cua-so. - **Con treo 4 carry-over deu tu drift-audit THANG S179, song ≥4 phien:** F-6 (skill mig 71) · F-7 (permission-matrix cay) · F-2 (schema-diagram 91 vs 97) · F-3 (PROJECT-MAP 0-hit 4 module, control duong `contract`=31). - Tag `[s189, cong-thuc-trong-doc-lao-hoa, bao-oan-canonical-dung, lop-hep-vs-lop-rong, mat2-sach-6-be-mat, plugin-0-delta-7]`