# sub-tooling-auditor — @open S169 (phiên-LOGIC L10 window-1)

- **Vai:** tooling-auditor (H1) — audit 4-mặt freshness tooling/docs. Read-only + propose-only.
- **Ngày:** 2026-08-01 · repo `D:/Dropbox/CONG_VIEC/SOLUTION/SOLUTION_ERP` · branch main
- **Nhiệm vụ đặc-biệt phiên này:** monthly drift-audit 2026-08-01 DUE (lần trước S96 @2026-07-01) + 4 điểm treo từ NEXT-em @S168.
- **Ghi liên tục** (chống #53). Mỗi mục có bằng-chứng path:line / count / lệnh.

---

## 0. Ground-truth inventory (đo đĩa TRƯỚC, không tin trí nhớ)

| Bề mặt | Lệnh đo | Kết quả |
|---|---|---|
| agents/*.md | `ls .claude/agents/*.md \| wc -l` | **24 file** — trừ `README.md` ⇒ **23 persona** ✅ khớp brief |
| skills project | `ls .claude/skills/` | 6 dir + README.md ⇒ **6 skill** ✅ |
| commands | `ls .claude/commands/*.md \| wc -l` | **19** (S150 đo 7 M / S153-era 18) — DELTA +1 vs baseline L1 (18) → soi mục ① |

| user-global skills | `ls ~/.claude/skills/` | **23** (algorithmic-art…xlsx) — IDENTICAL S153/S162 baseline |
| plugin | `~/.claude/settings.json:17-36` | **18 registered / 15 enabled / 3 disabled** (`pr-review-toolkit`:20 · `code-modernization`:22 · `hookify`:27) — **0-delta** |
| marketplace | `ls ~/.claude/plugins/marketplaces/claude-plugins-official/plugins` | **37** — 0-delta vs S153 |
| lead model | `~/.claude/settings.json:11` | `claude-opus-5[1m]` + `:37 effortLevel xhigh` — 0-delta |
| agent-memory dir | `ls -d .claude/agent-memory/*/` | **23** = roster 23 ✅ |

---

## ② ROSTER — PASS (khớp 5 bề-mặt)

| Bề mặt | Số | Nguồn |
|---|---|---|
| đĩa `.claude/agents/*.md` | 24 file − `README.md` = **23** | `ls \| wc -l` |
| `hmw.js VALID_ROLES` | **23** phần-tử (đếm PHẦN-TỬ, anchor `^]` — bẫy S153 `]` trong comment) | `hmw.js:22-43` |
| `agents/README.md:242` | **23 tên** liệt kê (grep -o tên trong backtick, sort -u) | `README.md:242` |
| `agents/README.md:242` số khai | "13 monitor + 10 worker = roster 23" | idem |
| `.claude/agent-memory/*/` | **23 dir** | `ls -d` |
| `docs/STATUS.md:6` | "roster 23" | STATUS:6 |

**Tập TÊN đĩa vs VALID_ROLES: IDENTICAL** (23/23, không thừa/thiếu).

✅ **ĐIỂM TREO #2 CỦA BRIEF = ĐÃ VÁ.** `agents/README.md:242` trước đây liệt 20 tên / khai "10 monitor"; nay liệt **đủ 23 tên** (thêm `ctx-curator`+`ctx-verifier`+`ctx-audit` với ghi-chú `+S153 OWNER-VETO hub-form 3-vai 0df10df4`) và khai **"13 monitor … 13 + 10 worker = roster 23"**. Kiểm chéo phân-loại: 13 monitor = tooling/harvest + 2 H24 + 3 harness + 3 ring + 3 ctx ✅; 10 worker = inv×2 + impl×2 + test + reviewer + cicd + fe-designer + database + office ✅. **KHÔNG có drift.**

---

## ④.a CLAUDE.md — danh-sách mig (ĐIỂM TREO #4) = PASS

- `CLAUDE.md:62` CÓ **Mig 70** `AddContractCatalogEntries` + **Mig 71** `AddKhkkApprovalGroupCatalogAndFinalizeRuntime` (S164/S165), giữ 69/68/67 lineage.
- `CLAUDE.md:69` (row PurchaseEvaluation) có Mig 68 · `:70` (row ContractSigningPlans) có Mig 69 + **71**.
- B1 tôn-trọng: `:62` mở đầu bằng "Số migration · bảng hiện tại → docs/STATUS.md (canonical — KHÔNG copy số)". Số `96→97` / `89→96` trong ngoặc = **delta-mô-tả của chính mig đó** (lineage frozen), KHÔNG phải chép canonical ⇒ hợp lệ.

---

## ③ PLUGIN — PASS (4 nấc KHÔNG conflate)

- **installed/registered:** 18 khoá trong `~/.claude/settings.json:17-36`; marketplace catalog **37** plugin sẵn có (`~/.claude/plugins/marketplaces/claude-plugins-official/plugins`) ⇒ 19 plugin marketplace **CHƯA registered**.
- **enabled:** **15** (`true`) · **disabled:** **3** (`pr-review-toolkit@:20` · `code-modernization@:22` · `hookify@:27` = `false`).
- **assigned:** skill-matrix `agents/README.md` — không có plugin nào MỚI ⇒ 0 việc phân-bổ mới (xem NEW-ALLOC dưới).
- **used:** KHÔNG đo được từ cwd (không có telemetry per-plugin trong repo) ⇒ **KHÔNG khai**. Nấc `enabled` ⟂ `used` là 2 tập-đo riêng (bài S153).
- **Delta vs S162/S153:** 0. Cùng 18/15/3, cùng 3 tên disabled, marketplace vẫn 37.

---

## ①-bis COMMAND-tier — delta +1 GIẢI-THÍCH (không phải drift mới)

- Đĩa: **19** file `.claude/commands/*.md`. L1-baseline của tôi ghi **18** (S111-era).
- Đo lịch-sử: `git ls-tree -r --name-only <rev trước 2026-07-13> .claude/commands/ | wc -l` = **18**; `git ls-tree … 11db5ef (S153)` = **19** ⇒ +1 xảy ra trong khoảng S111→S153, **KHÔNG phải phiên này**. Last-touch nội-dung: `11db5ef` (2026-07-26, S153 RENAME hub-form). ⇒ **baseline L1 của tôi stale, không phải đĩa drift.** (Ghi nhận để sửa diary @close.)
- 19 = adap×3 · check-email · fable-clone · fable-real · pause · send-email · session-end · session-start · sleep-recovery-memory-l2 · snapshot · tiep · ultra-off · ultra-on · user-mark×4.

---

## ③-bis Nhóm-7 PERSONA SWEEP — số cứng trên 23 file `.claude/agents/*.md` (ĐIỂM TREO #3)

Lệnh: `grep -n "roster ?[0-9]+|[0-9]+ vai|[0-9]+ sub|[0-9]+ monitor|[0-9]+ persona|[0-9]+ agent" .claude/agents/*.md` (loại README).

**Kết quả phân-loại (KHÔNG vá-cho-vừa-detector — bài Goodhart S152):**

| # | Site | Nội dung | Phán |
|---|---|---|---|
| A | `office-document.md:47` | "KHÔNG: deploy (cicd-monitor) · session-lifecycle audit (**2 monitor**) · schema/UX decision" | 🔴 **DRIFT THẬT — MED.** Đây là **định-tuyến SỐNG** (routing boundary), không phải lineage. "2 monitor" đúng ở S107 (roster 12), nay **13 monitor**. Người đọc theo dòng này sẽ route sai. Đề-xuất: bỏ số → "(nhóm monitor — H1/H2)" |
| B | `office-document.md:37` | "8 màu standard đã hết — precedent database-agent/**2 monitor**" | 🟡 **LOW.** Câu kể **precedent lịch-sử** lúc quyết OMIT color (S107) ⇒ frozen-record, sửa = giả-mạo lý-do quyết-định. GIỮ. (Chỉ nêu để không bị đếm sót ở lượt sau.) |
| C | `database-agent.md:36` | "8 màu … đã dùng hết bởi **8 product/quality sub**" | 🟡 **LOW — cần đo.** Xem đo `color:` bên dưới |
| D | `lead-stale-auditor.md:48` | ví-dụ class `view-stale-role-desc`: "`agents/README` ghi **12** sub khi roster = **14**" | ⚪ **DƯƠNG-GIẢ, GIỮ.** Đây là **cột VÍ-DỤ minh-hoạ** của bảng định-nghĩa class (use ⟂ mention — citation-trap). Sửa số = làm hỏng ví-dụ. KHÔNG đề-xuất vá |
| E | `harness-eval.md:39`, `harness-audit.md:35`, `ring*/ctx*` "≥2 số", "3 chiều", "5 khoản", "4 khoản", "13 monitor" | ⚪ **KHÔNG phải count-roster** — là hằng-số spec nội-tại (số khoản kiểm). GIỮ |

**Đo bổ-sung cho C:** `grep -c "^color:" .claude/agents/*.md` ⇒ **10 file** khai color (không phải 8), và **màu BỊ TRÙNG**: `orange` = `implementer-frontend:11` + `lead-gap-auditor:10` · `yellow` = `implementer-backend:14` + `lead-stale-auditor:10`. ⇒ tiền-đề "8 màu đã dùng hết ⇒ phải OMIT" **đã bị chính thực-tế bác** (2 vai monitor sau này cứ dùng lại màu trùng). LOW — nêu, không ép vá.

### 🔴 2 số cứng STALE THẬT tìm thêm trong sweep (ngoài nhóm trên)

| # | Site | Nội dung | Canonical | Phán |
|---|---|---|---|---|
| **F** | `.claude/agents/investigator-codebase.md:81` | "**40 migration hiện tại** (Mig 34-40 Phase 10 G-* port)" — nằm trong checklist **việc-phải-làm** khi audit | **Mig 71** | 🔴 **HIGH.** Lệch **31 migration**. Đây là dòng LỆNH-SỐNG (checklist verify), không phải lineage. Vai đọc dòng này sẽ audit sai phạm-vi. Đề-xuất: bỏ số → "Mig 3-file rule verify cho MỌI mig mới; số canonical → `docs/STATUS.md`" |
| **G** | `.claude/agents/investigator-codebase.md:56` | "cross-ref `docs/gotchas.md` **55** hiện tại" — trong lệnh append MEMORY | **86** | 🔴 **MED.** Lệch 31. Cùng file, cùng class (số neo cứng trong lệnh sống). Đề-xuất: bỏ số |

⚠️ **Phạm-vi tập-đo (khai rõ, bài S152 anti-#2):** 2 site trên = kết quả của **2 mẫu grep** (`roster/vai/sub/monitor/persona/agent` + `skill/Mig/bảng/test/policy/menu/gotcha/plugin/command`) chạy trên **23 file persona**, KHÔNG phải sweep-toàn-số. Số cứng dạng khác (LOC, %, ms, byte-cap) CHƯA soi ở lượt này.

**Tiến-độ nhóm-7 sweep:** brief nói 21/23 persona chưa soi. Lượt này đã soi **23/23 bằng 2 mẫu grep count-class** ⇒ đóng được trục "count-roster + count-domain"; còn hở trục số khác (nêu trên).

---

## ① SKILL — PASS_WITH_FLAGS

**Project skill (6/6 present):** contract-workflow · form-engine · permission-matrix · dependency-audit-erp · ef-core-migration · iis-deploy-runbook. 0 thêm/mất.

**ĐIỂM TREO #5 — CẢ 2 skill được chỉ đích danh đều KHÔNG stale:**
- `ef-core-migration/SKILL.md` — bảng history CÓ **row Mig 70** (`:92` `AddContractCatalogEntries`, "96→97 bảng") + **row Mig 71** (`:93` `AddKhkkApprovalGroupCatalogAndFinalizeRuntime`, "97 giữ"). mtime `Aug 1 19:36` (vá @S168). Frontmatter `:3` giữ B1 ("số migration hiện tại → CHỈ đọc từ 2 nguồn SỐNG"). ✅ **KHÔNG stale.** (Các chuỗi "89 giữ" ở row 84-90 = delta-của-chính-mig-đó, frozen lineage — KHÔNG phải neo canonical.)
- `permission-matrix/SKILL.md` — `:17` + `:94` **cố ý KHÔNG chép số** (B1), policy khai là DERIVED `|MenuKeys.All| × |Actions|`; đã có `KeHoachKyKet` (`:60`) + `HopDongCung` ngoài-`All` (`:80`) + gotcha #85 (`:81`). mtime `Jul 31 09:42`. ✅ **KHÔNG stale** (menu 113 / policy 452 không cần neo vì file không neo số).

**Skill khác:** 0 thêm/mất; `~/.claude/skills/` 23 standalone IDENTICAL.

### 🔴 FLAG skill-layer

| # | Site | Nội dung | Canonical | Phán |
|---|---|---|---|---|
| **H** | `.claude/skills/README.md:20` | row `ef-core-migration`: "✅ **Updated S164** (rows Mig 68 + **Mig 69 … 89→96** added; **Total re-ground 96**…)" | SKILL.md nay tới **Mig 71**, bảng **97** | 🔴 **MED — TÁI-PHÁT lớp cũ.** Đúng dòng này từng stale @S105 (Mig-61). Index README tụt sau SKILL.md **2 mig + 1 bảng**. Đề-xuất: đổi thành "Updated S168 (rows tới Mig 71; Total → `docs/STATUS.md`)" — **bỏ số Total** để chặn tái-phát lần 5 |
| **I** | `.claude/skills/README.md:90` | "`docs/gotchas.md` … (số hiện tại → `docs/STATUS.md`; **latest #79** backfill soi NHẦM bảng…)" | `grep -c "^### [0-9]+\." docs/gotchas.md` = **86**, entry cuối = **### 86.** | 🟡 **LOW-MED.** Vế "số hiện tại → STATUS" ĐÚNG B1, nhưng chữ **"latest #79"** là claim nội-dung SAI (lệch 7 gotcha). Đề-xuất: bỏ chữ "latest", giữ #79/#78/#77 như ví-dụ ("vd #79 …") |

---

## ④ DOCS — DRIFT-FOUND

### 🔴 ĐIỂM TREO #1 — MONTHLY DRIFT-AUDIT **2026-08-01 = HÔM NAY, CHƯA CHẠY**

Bằng-chứng 3 nguồn nhất-quán:
- `CLAUDE.md:121` — "Lần kế: **2026-08-01** (S96 đã chạy 07-01)"
- `docs/STATUS.md:815` — "✅ 2026-07-01 DONE (S96 `881783c`) … next **2026-08-01**"
- `docs/STATUS.md:401` — "monthly pointer→2026-08-01"
- Spec: `docs/rules.md §9.4:544-546` (cadence, em-main chạy THỦ-CÔNG session đầu-tháng — cron là ghost-wire gỡ S100) + `§6.4:284/:298` (doc-audit checklist chạy CÙNG).

🔴 **Và đã tích-tụ ≥4 khoản CỐ Ý DEFER SANG ĐÚNG HÔM NAY** (nợ hẹn tới hạn, không phải phát-hiện mới):
1. `STATUS.md:797` — "re-tier S95 **defer monthly 2026-08-01**"
2. `STATUS.md:428` — "**NEXT em:** monthly re-tier mega-line pending (giờ 5-blurb S97-S93)"
3. `STATUS.md:446` / `:456` — cùng khoản re-tier mega-line (4-blurb / ef-core+3 vocab-fork)
4. `STATUS.md:552` — measured-block "row khác giữ snapshot S107 — **full re-sync để monthly 2026-08-01**"

⇒ **ĐỀ-XUẤT LEAD (không tự làm):** phiên này là session đầu-tháng ⇒ nên chạy combined audit §6.4+§9.4 và ĐÓNG 4 khoản defer trên; nếu owner không muốn chạy hôm nay thì **phải re-stamp next-date**, đừng để pointer treo quá hạn im-lặng (class `gap-carry-dropped`).

### Docs khác

- `CLAUDE.md:62/:69/:70` mig 70+71 ✅ (điểm treo #4 CLOSED).
- `docs/CLAUDE.md:77` "6 skill: 3 domain + 3 ops" ✅ khớp đĩa.
- `docs/governance/README.md:5` — header status ĐÃ lật nhãn @S168 (H24-DEEP FLAG-11) ⇒ **nợ S153 F-7 CLOSED-verified** (mtime `Aug 1 16:03`, commit `a2b37dc`).

### 🔴 DRIFT MỚI đo được ở lớp canonical-row `docs/STATUS.md` (đây là thứ monthly-audit sinh ra để bắt)

| # | Site | Doc nói | Đĩa nói (lệnh) | Phán |
|---|---|---|---|---|
| **J** | `docs/STATUS.md:474` row `User memory` | **31** (note cuối = "+S84") | **59** — `ls .claude/auto-memory/*.md \| grep -v MEMORY.md \| wc -l` = 59 **VÀ** `grep -c "^- \[" .claude/auto-memory/MEMORY.md` = 59 (2 bề-mặt độc-lập KHỚP; 52 `feedback_*` + 7 `project_*`) | 🔴 **MED-HIGH.** Row đứng yên từ **S84**, nay S169 ⇒ lệch **28**. Class `view-stale-count`. Đề-xuất: re-ground 31→59 |
| **K** | `docs/STATUS.md:468` `API endpoints` **~253** · `:469` `FE pages` **68** | note cuối cả 2 row = "+S54"/"unchanged S54" | endpoint: `grep -rho "\[Http(Get\|Post\|Put\|Delete\|Patch)" src/Backend/SolutionErp.Api/Controllers/ \| wc -l` = **283** · page: `find fe-*/src/pages -name "*Page.tsx"` = **42 + 34 = 76** | 🟠 **MED — nhưng khai CAVEAT:** STATUS **KHÔNG khai quy-tắc đếm** cho 2 row này ⇒ tôi KHÔNG thể chứng minh 283/76 cùng-định-nghĩa với 253/68. Cái chứng-minh được: **2 row frozen từ S54** trong khi đã land Mig 48→71 (**23 mig**, +module KHKK 7 bảng + Lines-editor + Supplier expand). Số không-đổi qua ngần ấy là **bất-khả** ⇒ stale by construction. Đề-xuất: monthly re-ground + **ghi kèm lệnh đếm** để lần sau đo lại được |
| **L** | `docs/governance/README.md:81-87` "Cross-Project Adoption Ledger" | dòng cuối = bundle **2026-06-02** | `ls docs/governance/adap-reports/ \| wc -l` = **102 file**, mới nhất `2026-07-28-Governance-day-wake-probe-first-resume.md` | 🟠 **MED.** Ledger dừng ở 06-02 trong khi kênh adap đã chạy tới **07-28** (đợt-9/10/11…). Bảng tự xưng là "Ledger" ⇒ người đọc tin nó đủ. Đề-xuất: hoặc bổ-sung dòng tổng, hoặc **đổi thành con-trỏ** "chi-tiết → `adap-reports/` (N file, canonical)" theo B1 |
| **M** | `docs/governance/README.md:51` + `:77` | ":51 corpus **~2,409 chunks**" · ":77 ⚠️ `eval/trial-state-lock.json` baseline still cites old number → **AI_INFRA to reconcile**" | STATUS row `RAG chunks` (`:477`) nay là nhãn 2-trục "service UP / SE index STALE" — KHÔNG còn con số | 🟡 **LOW.** (a) `:51` neo số corpus trong khi canonical đã bỏ số ⇒ B1-lệch. (b) `:77` là **carry mở từ 2026-05-29**, treo ~2 tháng, không có ngày hẹn ⇒ ứng-viên `gap-carry-dropped` — nêu để lead định-đoạt (đóng / hẹn ngày / xoá) |

### Docs — các mặt KHÔNG drift (đo rồi, khai để khỏi soi lại)

- `docs/STATUS.md` canonical-rows **TƯƠI KHỚP máy**: Migrations `:465` **71** ✅ · SQL tables `:466` **97** ✅ · Policies `:470` **452** ✅ · Menu keys `:471` **113** ✅ · Tests `:472` **644 PASS (45D+599I)** ✅ · Gotchas `:473` **86** ✅ (`grep -c "^### [0-9]+\." docs/gotchas.md` = 86, entry cuối `### 86.`) · Skills `:475` **6** ✅ · Sub-agents `:476` **23** ✅.
- `docs/HANDOFF.md:5` "Last updated 2026-08-01 tối (S163→S168 — phiên-LOGIC L9)" ✅ tươi, commit `ff7f655`.
- `agents/README.md:214` khai plugin "**18** registered (15 enabled / 3 disabled) + ~23 standalone skill" ✅ **KHỚP CHÍNH XÁC** đĩa hôm nay ⇒ nấc `assigned` không drift.
- `agents/README.md:225-226` — nợ **S153 F-6** (tiêu-đề "KHÔNG **enable**" trong khi 3 site `enabled:true`) ✅ **ĐÃ VÁ**: nay tách đúng nấc `enabled` ⟂ `used` + trỏ `settings.json:17-35`. **KHÔNG conflate.**

---

## 🔌 NEW-ALLOCATION AUDIT (skill/plugin mới chưa phân-bổ)

- **Skill mới:** 0 (project 6/6 cũ · user-global 23 IDENTICAL).
- **Plugin mới:** 0 registered mới; **19 plugin marketplace vẫn CHƯA registered** (37 catalog − 18 khai) — tồn từ trước, **KHÔNG phải delta phiên này**, và theo H3.3 "gộp-vai KHÔNG phình roster" thì không-nạp là CHỦ-ĐÍCH.
- ⇒ **0 việc phân-bổ mới cho em main / 23 sub.** Không đề-xuất gán gì.

---

## 🔁 DIFF vs S168 (bookend gần nhất)

| Mặt | S168 | S169 @open | Delta |
|---|---|---|---|
| ① skill | 6 project / 23 user-global | 6 / 23 | **0** — nhưng `ef-core-migration/SKILL.md` mtime `Aug 1 19:36` (+row Mig 70/71 @S168) = **nội-dung TƯƠI** |
| ② roster | 23 | 23 (đĩa = VALID_ROLES = agent-memory = STATUS) | **0** · last-touch `a2b37dc` (S168) |
| ③ plugin | 18/15/3 · mkt 37 | 18/15/3 · mkt 37 | **0** (cả tên 3 disabled) |
| ④ docs | STATUS/HANDOFF/CLAUDE/gov-README vá @S168 | idem | **0 drift MỚI do S168 gây ra** |
| command | 19 | 19 | **0** (đứng yên từ S153) |
| detector | TOTAL 50 + INFORM 10 | TOTAL **48** + INFORM **14** | 🔸 **đổi 2 chiều** — tôi grep `TOTAL`/`INFORM` trên `docs/governance/*.md` + `docs/STATUS.md` + 23 persona + `session-start.md`: **0 site khai con-số TOTAL như trạng-thái HIỆN-TẠI** (mọi hit đều là lineage "44→46", "50→45", hoặc luật "NOT folded into TOTAL"). ⇒ **KHÔNG có doc-drift** từ thay-đổi này. Khai để lead khỏi lo |

🔴 **Nhận-định về HÌNH-DẠNG diff:** **0/10 finding là do S168 sinh ra.** Cả 10 đều là **stale TÍCH-TỤ** (site cũ nhất: `investigator-codebase.md:81` neo "40 migration" từ Phase-10-era; `STATUS:474` từ S84; `gov/README` ledger từ 06-02). Đây chính là chữ-ký của **monthly-audit quá hạn** — đúng thứ điểm treo #1 dự-báo.

---

## 📋 BẢNG CHỐT — 10 FINDING (propose-only, em main quyết + ghi)

| # | Mức | Mặt | Site | Đề-xuất |
|---|---|---|---|---|
| **F-1** | 🔴 **HIGH** | ④ docs/process | `CLAUDE.md:121` + `STATUS.md:815`/`:401` | **Monthly drift-audit 2026-08-01 DUE HÔM NAY, chưa chạy** + **4 khoản defer đúng vào hôm nay** (`STATUS:797/:428/:446/:456/:552`). Chạy §6.4+§9.4 HOẶC re-stamp next-date — đừng để treo im-lặng |
| **F-2** | 🔴 **HIGH** | ② vai | `.claude/agents/investigator-codebase.md:81` | "40 migration hiện tại" → thật **71**. Dòng LỆNH-SỐNG. Bỏ số, trỏ `docs/STATUS.md` |
| **F-3** | 🔴 MED | ② vai | `.claude/agents/investigator-codebase.md:56` | "gotchas.md **55** hiện tại" → thật **86**. Bỏ số |
| **F-4** | 🔴 MED | ② vai | `.claude/agents/office-document.md:47` | routing "session-lifecycle audit (**2 monitor**)" → nay **13 monitor**. Bỏ số → "(nhóm monitor H1/H2)" |
| **F-5** | 🔴 MED | ① skill | `.claude/skills/README.md:20` | "Updated S164 … Mig 69 … **Total re-ground 96**" → SKILL.md nay Mig **71**/bảng **97**. **TÁI-PHÁT lần ~4** ⇒ vá bằng **BỎ số Total** |
| **F-6** | 🟡 LOW-MED | ① skill | `.claude/skills/README.md:90` | "**latest #79**" → latest thật **#86**. Đổi "latest" → "vd" |
| **F-7** | 🔴 MED-HIGH | ④ docs | `docs/STATUS.md:474` | `User memory` **31** → đĩa **59** (2 bề-mặt khớp). Re-ground |
| **F-8** | 🟠 MED | ④ docs | `docs/STATUS.md:468`/`:469` | `API endpoints ~253` · `FE pages 68` **frozen từ S54** qua 23 mig. Re-ground + **ghi kèm lệnh đếm** (caveat: quy-tắc đếm chưa khai ⇒ 283/76 của tôi là gợi-ý, không phải phán-quyết) |
| **F-9** | 🟠 MED | ④ docs | `docs/governance/README.md:81-87` | Adoption-Ledger dừng **2026-06-02** / `adap-reports/` = **102 file** tới **07-28**. Đổi thành con-trỏ (B1) |
| **F-10** | 🟡 LOW | ④ docs | `docs/governance/README.md:51` + `:77` | (a) neo "~2.409 chunks" khi canonical đã bỏ số · (b) carry "AI_INFRA to reconcile" mở từ **2026-05-29**, ~2 tháng, không hẹn ngày |

### ⚪ ĐÃ SOI — CỐ Ý KHÔNG ĐỀ-XUẤT VÁ (chống Goodhart: giữ chứng-nhân, không vá-cho-vừa-detector)

- `lead-stale-auditor.md:33`/`:45`/`:48` — "12 sub khi roster = 14", "60 menu / canonical 54": **cột VÍ-DỤ** của bảng định-nghĩa class (`use ⟂ mention`, citation-trap). Sửa = hỏng ví-dụ.
- `office-document.md:37` — "precedent database-agent/2 monitor": **frozen-record lý-do quyết OMIT color @S107**. Sửa = giả-mạo lý-do quyết-định.
- `database-agent.md:36` — "8 màu … dùng hết bởi 8 product/quality sub": nay **10 file** khai `color:` và **màu TRÙNG** (`orange` = `implementer-frontend:11` + `lead-gap-auditor:10` · `yellow` = `implementer-backend:14` + `lead-stale-auditor:10`) ⇒ tiền-đề đã bị thực-tế bác, nhưng đây là **rationale lịch-sử**, không phải lệnh sống. Nêu, không ép.
- `CLAUDE.md:62` các chuỗi "96→97"/"89→96", `ef-core SKILL.md:84-90` "(89 giữ)": **delta-của-chính-mig-đó** = lineage frozen, KHÔNG phải neo canonical.

---

## 🔒 KHAI G-015 + PHẠM-VI (đọc trước khi tin bảng trên)

- **Propose-only.** Tôi KHÔNG sửa file nào ngoài artifact này. `store_memory` strip nhưng **`Bash` vẫn còn = write-channel mở** ⇒ **KHÔNG tuyên "read-only enforced"**; containment thật = em main single-writer + git-diff commit-gate.
- **Phạm-vi tập-đo (anti-#2):** persona sweep = **2 mẫu grep count-class** trên **23/23 file** (`roster|vai|sub|monitor|persona|agent` + `skill|Mig|bảng|test|policy|menu|gotcha|plugin|command`). **CHƯA soi**: số dạng LOC/%/ms/byte-cap, và toàn-bộ `.claude/commands/*.md` (19 file) + `scripts/*.ps1` — 2 bề-mặt này NGOÀI lượt này.
- **Nấc plugin khai đúng 4 bậc:** installed 18 (mkt 37) → enabled 15 → assigned (bảng `agents/README:216-228`) → **`used` KHÔNG đo được** từ repo ⇒ không khai.
- **Không lấn:** 0 chạm harvest-memory/spawn-record (H2 `harvest-curator`) · 0 chạm deploy/CVE (`cicd-monitor`) · 0 fan-out repo khác.
- **Carry đã biết, không báo lại:** `hmw.js:153 WIDTH_CAP = 20` < roster 23 (slot 40) — **0 delta mới** phiên này (`memory-budget.json:33` `_roster_note_S153` vẫn mô-tả đúng: cap 20 ⇒ LOUD-skip 3 lane cuối).

**VERDICT = PASS_WITH_FLAGS** — 4 mặt đều CÓ và nhất-quán ở lớp canonical (roster 23 khớp 5 bề-mặt · plugin 0-delta · skill 6/6 + 2 skill bị nghi đều SẠCH · CLAUDE.md mig đủ 70+71), nhưng **10 finding stale tích-tụ** + **monthly-audit quá hạn ngay hôm nay**. Không có FAIL-class (không mất skill/vai/plugin, không sai nấc plugin).

END tooling-auditor-open-S169 — VERDICT=PASS_WITH_FLAGS — 10 finding
