19 KiB
Tooling-Auditor Agent — Persistent Memory
-
Máy mồ-côi + addendum lệch vế — 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ồnruns/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 showmodel: opusbut noeffort:line". Lead đo lại: 28 vai · 28model: opus· chỉ 26effort: 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:478là ô 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": 29KHÔNG stale (tập-đo củanaming-scankể 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 -23rỗng), 3 vai STYLE trỏ skill tồn tại thật · plugin 18 registered / 15 enabled / 3 disabled, khớpREADME:229. R-1 = same-class residue, site THỨ 6 của lớp "claim chép nhiều site":README:234ghifrontend-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:121hardcodeLầ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-2permission-matrixcây thiếu 5 root đang sống · F-3 nó tự cấm chép số rồi chép12 root· F-4 dải§16+4 giá-trị khác nhau/4 surface · F-5PROJECT-MAP(file #3 trong 5-file-đọc-trước) 0 hit 4 module sống, control dươngcontract=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 = 0CreateTablenê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}.mdverbatim on-demand · L3 RAGsearch_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, verifyblock 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.mdverbatim 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.mdverbatim 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 truREADME.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-matrixagents/README:194-23129 row (comm2 chieu rong — no tu S182 DA DONG). Frontmatter 29/29 ca 3 khoamodel: 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= scriptworkflows/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.jsonchi co hooks.Stopwal-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 pinmodel: 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" (migrationAddPeApprovedBudgetSnapshotco 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ÔNGInfrastructure/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 -Commandescape\$· PSGet-Content -Raw+-TotalCountmutually 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/VAdocs/, kem control duong (naming-scan~9 file). Chi tiet + lop anh em addendum lech ve →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— matrixagents/README:190-219phủ 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:20residue 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-77vẽ 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ồnruns/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ếuring5-audit(đĩa 29) — 2 lỗi/1 dòng, và vi phạm chính luật:3cấm chép số, trong khi:28ngay 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-staletrong 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:20chép câu đã bị bác @S181 (vị-từ sai, không phải count-token) ·permission-matrixcây 8 root vs:3khai 12. ⚠️ring1BÁC 1 tên trong 4 root vắng:Purolà TÊN MA (6/6 hit đều trong COMMENT trỏ NAMGROUP); tên thật làHopDongCung. ⇒ bàiverified-number / unverified-label: số đúng, NHÃN trôi. NeoREADME:2cũ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:27ghi roster 28 + liet thieuring5-audittrong 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). Nguonruns/2026-08-10-S189-bookstart-open/sub-tooling-auditor-open-S189.md21.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:471khaiMigrations 72kem cach do "ls Migrations/.cs tru Designer+Snapshot"*. Ap dung chu ⇒ ra 71, vi migration20260717032812_AddPeApprovedBudgetSnapshot.csco 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− 1ApplicationDbContextModelSnapshot= 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 lopbay glob READMEva--since prune im lang. - 🔑 Hoi "con be-mat nao cung lop?" phai khai DO-RONG CUA LOP. F-1 (
CLAUDE.md:77KHKK ghi69, 71thieu Mig 72): lop HEP (chuoi69, 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 laief-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:27enum 7core+22 · skill-matrix 29 row,comm2 chieu rong). Frontmatter 29/29 × 3 khoa. No dai nhat (matrix 26/28 tu S182) + noeffortS181 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-designvi-tu) KHONG tai phat. Nacusedkhong 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&72CreateTable=0) ·STATUS:10"roster 28" ha xuong LOW vi:8tu 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]
S191 (2026-08-13) @close L15 — TOOLING: PASS_WITH_FLAGS — 8 (2H/3M/2L/1I)
- F-1 HIGH — o canonical STALE, lop S181 tai phat:
STATUS:470ghiMigrations 72nhung dia = 73 (20260812141501_AddContractEndedByLevelFinalize, land window L15 nay). Do dung cong-thuc S189: 147.cs− 73 Designer − 1 ModelSnapshot = 73. 🔴 ChinhSTATUS:6da ghi "Mig 73 prod-top" ⇒ file tu mau thuan voi o canonical cua chinh no; 5 con-tro B1 resolve ra so sai (CLAUDE.md:69·cicd-monitor:242·database-reviewer-style:96·investigator-codebase:81·ef-core SKILL:3). - 🔑 F-2 — BAI DAT NHAT: tien-de cua LEAD sai, va sai theo huong lam nhe van de. Lead giao "
.nvmrcKHONG ton tai". Do dia: CO —fe-admin/.nvmrc+fe-user/.nvmrc=20, tracked tu commit scaffold. Neu em nhan tien-de thi thuoc se la "tao lai .nvmrc" ⇒ VO ICH, vi cai hong khong phai FILE ma la CO-CHE:deploy.yml0 hitsetup-node/node-version(goi thangC:\Program Files\nodejs\npm.cmd) ⇒ khong tang nao doc .nvmrc;engines ">=20"= min khong upper; 0.npmrc/engine-strict/packageManager⇒ khong chan. ⇒ Luat: khi lead dua tien-de "X khong ton tai", do X TRUOC — file-vang va co-che-cam la 2 benh khac thuoc. Ghost-wire lop H18 (config declared-but-unread), 8 site song khai sai +deploy.yml:5chinh file CI khai "Runner has Node 20" (that: v24.15.0/npm 11.12.1). - F-3 INFORM: va #92 moi bit NUA lo.
npm ci+lockfile chan drift CAY; nua kia (node/npm runner tu troi) chua chan; GUARD-92 bat react-trung-ban, KHONG bat node-doi-ban. Cung mot truc "build-env nhiem" da no P0 2 lan. - 🔸 Nguoc chieu drift thuong gap:
iis-deploy-runbook:300khainpm citrong khi CI THAT chaynpm install+xoa lockfile (chung:git show 305b573f^). Doc dung, MAY troi — runbook la canh-bao-som cua #92 ma khong ai doc cheo. - 🔸 4 item can nhac roi BAC: ef-core mig-table dung Mig 71 ⇒ DE NGHI DONG FLAG S179-F7,
:25da khai chu-dich "bang nay SE LUON tut sau va dieu do HOP LE" ·:102"last schema-changing Mig 70" VAN dung (Mig 72&73CreateTable=0) ·runbook:117-119NTFS-compact da phu ca ca cuuVietreport_Masterphien nay ⇒ khong stale ·README.md:9"Node 20+" dung. - Mat ② SACH 6/6 phien thu 2 lien tiep (29: dia · VALID_ROLES · 29 dir ·
STATUS:481·README:27enum · matrix194-23329 row comm-2-chieu-rong; frontmatter 29/29 × 3 khoa). Plugin 18/15/3 — 0-delta phien thu 8. Gotchas continuity 1→92, 0 gap 0 dup,STATUS:478=92 khop. - new-alloc:
webapp-testing(user-global Playwright) CHUA co trong bang mapagents/README:238-245— dung la lo #92 (byte-match+smoke 200 do FILE, khong do CHAY) ⇒ de xuat →cicd-monitor+test-specialist. - Carry S179 con 3 (song ≥5 phien): schema-diagram:515 "91 bang" vs 97 · PROJECT-MAP 0-hit 3 module (control duong
contract=31) · permission-matrix thieu 5 root. - Tag
[s191, tien-de-lead-sai-lam-nhe-benh, file-vang-vs-co-che-cam, ghost-wire-node-pin, o-canonical-tu-mau-thuan, doc-dung-may-troi, plugin-0-delta-8]