# sub-tooling-auditor — CLOSEOUT S153 (phiên-logic 6, vòng V1, §L.b(g))

> H1 4-mặt freshness CHỐT cuối phiên. Read-only + propose-only. Ghi-trong-lúc-làm (chống #53).
> Bắt đầu: 2026-07-26. Repo D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP.

## Ground state (đo trước tiên)
- HEAD `b8142ea` (wal: flush 20260726T1529). Working tree DIRTY (đúng kỳ vọng: phiên chưa closeout-commit).
- `git status --porcelain`: 13 M + 3 untracked agent ctx-* + template + run-folder + 2 instrument txt.
- **② ĐĨA agents = 23** (`ls .claude/agents/*.md | grep -v README | wc -l` = 23) — gồm ctx-audit / ctx-curator / ctx-verifier (untracked, mới).

(findings ghi dần bên dưới)

## ② VAI-TRÒ — PASS (5 bề mặt khớp 23)
| bề mặt | số | bằng-chứng |
|---|---|---|
| đĩa `.claude/agents/*.md` trừ README | **23** | `ls \| grep -v README \| wc -l` = 23 (+ctx-audit/ctx-curator/ctx-verifier untracked) |
| `hmw.js` VALID_ROLES **đếm PHẦN-TỬ** | **23** | node parse strip-comment → 23 tên; 21..23 = ctx-audit/ctx-curator/ctx-verifier (`:41-42`) |
| `docs/STATUS.md:454` §Sub-agents | **23** | row `\| Sub-agents \| **23** \| +S153 bộ-ba vòng Ctx` |
| `.claude/agents/README.md` | B1-pointer **0 số** (ĐÚNG luật) | `:5` + `:27` liệt-kê NHÓM có 3 tên ctx mới; `:198-200` 3 row skill-matrix |
| `.claude/agent-memory/*/` (diary dir) | **23** | `ls -d */ \| wc -l` = 23, khớp tên 1:1 |
- 🔴 **BẪY `]` đã né:** `hmw.js:39` chứa `owner-decision [2] TÁCH)` trong COMMENT → regex naive `\[([^\]]*)\]` cắt tại đây ⇒ đọc ra **20**, mất 3 phần-tử cuối (đúng bẫy lead đã dính). Cách đo an-toàn = match tới `\n]` ở đầu dòng + strip `//` comment TRƯỚC khi bắt `'...'`.
- 3 vai mới frontmatter: `model: opus` ✓ · `effort: max` ✓ · `memory: project` ✓ · maxTurns 16/12/12 · `tools:` 8 read-only KHÔNG Write/Edit (khai ý-định, KHÔNG cơ-chế — cả 3 tự khai `tools-whitelist-no-teeth`, ĐÚNG G-015) · block `## 🚫 Anti-patterns (NEVER)` có đủ: ctx-audit `:106` 7 mục · ctx-curator `:50` 6 mục · ctx-verifier `:46` 6 mục.
- Tên vs hub-form: **KHÔNG ĐO ĐƯỢC trực-tiếp** (repo hub ngoài cwd, không đọc được từ đây). Đo được: 3 file tự khai hub-form = curator/verifier/audit, và STATUS:454 khai "đo đĩa 3 nhà". Nội-bộ NHẤT-QUÁN 3 nguồn; xác-nhận-hub = ngoài tầm tao.

## ④ tên cũ `ctx-pause-check`/`ctx-reload` — PASS (0 drift)
7 hit, **0 prescriptive-drift**: `ctx-curator.md:14` + `ctx-verifier.md:14` (2 lineage-note cố ý) · `STATUS.md:454` (lineage trong row roster) · `WAL.md:11` (sổ ghi hành-động rename = record) · `runs/.../run.md:6` (frozen) · 3 diary seed `agent-memory/ctx-{audit,curator,verifier}/MEMORY.md:3` (lineage-note, nêu cả nghịch-lý VIPIX). Luật S143 prescriptive⟂frozen: KHÔNG có site nào MÔ-TẢ-HÀNH-VI-SỐNG bằng tên cũ ⇒ 0 vá.

## ③ PLUGIN — 0 delta số, F-6 VẪN MỞ
- `~/.claude/settings.json`: **18 registered / 15 enabled / 3 disabled** (pr-review-toolkit · code-modernization · hookify) — IDENTICAL baseline. `model: claude-opus-5[1m]` · `effortLevel: xhigh`. Marketplace `~/.claude/plugins/marketplaces/claude-plugins-official/plugins` = **37 dir** (0 delta vs S143 37).
- **F-6 CHƯA VÁ (carry):** `git diff -U0 .claude/agents/README.md` = ĐÚNG 3 hunk `@@ -5 @@`, `@@ -27 @@`, `@@ -197,0 +198,3 @@` ⇒ khối `:225` "🔴 KHÔNG enable" KHÔNG hề đụng. Đối chiếu đĩa: `csharp-lsp@` **ENABLED** · `commit-commands@` **ENABLED** · `code-review@` **ENABLED** · `feature-dev@` **ENABLED** (4 = số ring1 nâng) trong khi README `:227-230` khai không-enable/defer. Lane lead → carry phiên sau.

## ① SKILL — PASS (0 đổi trong phiên)
- `git status/diff .claude/skills/` = **RỖNG** ⇒ 6 skill project 0-đổi. Standalone `~/.claude/skills/` = **23**. Command-file `.claude/commands/*.md` = **19**, in-session **0 file MỚI** (chỉ 4 M: pause/tiep/session-start/session-end).
- **Có skill nào cần biết `mind-check`/lớp mềm? KHÔNG** — grep `mind-check|_mind|lớp mềm|soft-memory` trong `.claude/skills/` = **0 hit**, và ĐÓ LÀ ĐÚNG phân-tầng: consumer của lớp mềm đã đủ + đúng tầng = 4 command (wire dưới) + 3 persona ctx + `templates/session-mind-template.md` + máy `scripts/session_ctx.py`. Skill = tầng domain/ops (contract/form/permission/dep-audit/ef-core/iis) — kéo session-lifecycle vào skill = sai tầng. ⇒ **0 alloc-action.**
- Skill drift cũ: ef-core `SKILL.md:89` row **Mig 67** CÒN (nợ S151 giữ đóng). 0 count-claim roster trong skills/README.

## Wire-verify (đổi trong phiên — ĐO từng site, không tin liệt-kê)
| item | site | trạng-thái |
|---|---|---|
| hmw.js VALID_ROLES +3 | `:41-42` | ✓ (diff `@@ -40,0 +41,2 @@`) |
| writeGuard điểm-1 comment | `:229-230` | ✓ 3 tên ctx |
| writeGuard điểm-2 template-literal | `:236` | ✓ 3 tên ctx trong danh-sách read-only-sub |
| pause §1 carve-out | `pause.md:15` | ✓ `ctx-curator` carve-out DUY NHẤT |
| pause §2.6(C-bis) + 2-bis | `pause.md:45` / `:48` | ✓ máy-TRƯỚC-vai |
| tiep §2.6 / §3-ter | `tiep.md:165` / `:183` | ✓ + trỏ khoá `tiep_reload` KHÔNG chép danh-sách (B1 ✓) |
| session-start 0.8(a-bis) · roster · Phase 3.5 | `:94`/`:103` · `:166` · `:356`/`:362` | ✓ đủ 3 |
| session-end §L.b(l) · §6.3-bis | `:162` · `:376` | ✓ |
| `.gitignore` +pycache | `:138 __pycache__/` | ✓ |
| template mới | `templates/session-mind-template.md` 8.819B | ✓ **KHÔNG orphan** (`pause.md:50` + `session-start.md:360` + adap-report:18); `:11` trỏ khoá `mind_ctx_kb` không chép số (B1 ✓) |
| budget ghost-wire ĐÓNG | `memory-budget.json` | ✓ 2-CHIỀU: `_session_ctx_kb_honest_caveat` **ABSENT** · `_session_ctx_kb_reader` PRESENT · reader THẬT `scripts/session_ctx.py:528` `_check_context_cap` (phụ-8) `:537`; `mind_ctx_kb`=32 đọc LIVE `:611/:651/:653` + fail-loud `_require_budget_kb` khi thiếu khoá ⇒ 0 hardcode |

## FINDING (đánh số cho lead)
**F-1 (③ plugin · MED · MỞ — carry):** `agents/README.md:225` khối "🔴 KHÔNG enable" CHƯA vá (diff README = đúng 3 hunk :5/:27/:198-200, khối này 0 đụng). Đối chiếu `~/.claude/settings.json`: **mâu-thuẫn ĐÚNG NẤC enable = 2 site** — `:229` `csharp-lsp` (đĩa **enabled**) · `:230` `commit-commands` (đĩa **enabled**). 🔴 **Tách nấc, chỉnh ring1 "4":** `code-review@` + `feature-dev@` cũng **enabled** nhưng câu README `:228` nói "KHÔNG **dùng** plugin code-reviewer" = nấc **used**, không phải nấc **enabled** ⇒ 2 site này là *nấc khác*, KHÔNG phải mâu-thuẫn trực-tiếp (AP-4 của tao: cấm conflate installed→enabled→assigned→used). Số đúng: **2 hard + 2 nấc-khác**. Lane lead.
**F-2 (④ docs · MED · MỞ — carry):** `docs/governance/README.md:5` "✅ Active trial week 1-4 (2026-05-26 → 2026-06-23)" — cửa-sổ đóng **33 ngày** trước hôm nay (07-26) mà vẫn khai Active · `:35` "`phase-9-uat` — UAT + production hardening **(current)**" trong khi CLAUDE.md khai Phase 10 COMPLETE + Phase 11 A→F done (enum cũng thiếu phase-10/11). File `git log -1` = `72bbfa5` **2026-06-02**, 0 thay-đổi working-tree ⇒ **CHƯA vá**.
**F-3 (④ docs · LOW · MỚI):** `docs/governance/ctx-soft-memory-se-draft.md` (9.053B, §6 RESOLVED @S153) = **0 con-trỏ từ live-doc**: STATUS 0 · HANDOFF 0 · adap-report ctx 0 · commands 0 · governance/README 0 (README đó là index RAG-governance, không phải index doc chung — không tính là chỗ phải có). Neo hiện có toàn **frozen/ngoài**: `_context-s-6.md` · run-folder · outbox email. **Tiền-lệ cùng repo:** em ruột `session-model-se-draft.md` có STATUS ×1 + HANDOFF ×2. Đề: 1 con-trỏ @closeout (lane lead).
**F-4 (④ docs · LOW · MỚI, phạm-vi khai rõ):** `broadcasts/_index.md` thiếu row **INBOUND** cho cả 2 thư phiên này — `2026-07-25-Governance-pause-tiep-upgrade-vong-ctx` (thư `0df10df4`) **0 hit** · `2026-07-25-Governance-model-default-opus-5-max` **0 hit**; 2 row OUTBOUND S153 thì ĐÃ có (`:111` `d432f5eab5cd` · `:112` `aedd7fb67405`). 🔴 Phạm-vi tập-đo: _index **CÓ** lane inbound (`:55-59` dạng `ai_infra → se | processed | … | ✓`) nhưng **6/8 thư inbox mới nhất 0-row** (thiếu từ 07-19, 07-20 ×2, 07-21, 07-25 ×2) ⇒ **class-gap có TRƯỚC phiên này**, phiên này chỉ nối tiếp. Lead cần chốt: lane inbound của _index còn hiệu-lực hay đã bỏ (nếu bỏ thì hàng `:55-59` phải khai).
**F-5 (④ config · LOW · MỚI, additive-only):** `memory-budget.json` `hmw_width._why_20_not_16` lý-do còn viết hiện-tại-thức *"roster nay 20 (VALID_ROLES dem tay = 20; .claude/agents/*.md 21 file - README = 20)"* — nay 23 (24 file). Mirror `hmw.js:153 const WIDTH_CAP = 20` **KHỚP** cap ⇒ detector C9 IM đúng, KHÔNG drift mirror. `STATUS:454` ĐÃ khai hệ-quả (roster 23 > cap 20 ⇒ LOUD-skip 3 lane, O-7 câu (40) treo). Vì đây là **khối lý-do đã ratify 2026-07-24** (record) ⇒ đề **THÊM 1 câu** "roster @S153 = 23 > cap", **KHÔNG sửa chữ cũ**, và **KHÔNG đổi số cap** (quyền anh).
**F-6 (④ docs · WATCH · closeout đang chạy, chưa gọi drift):** session-log `docs/changelog/sessions/2026-07-26-1600-S153-ctx-adopt-3vai-rename.md` (8.935B, mtime 15:40) hiện **0 con-trỏ** (grep toàn `docs/` + `.claude/` = 0 hit); `docs/STATUS.md` chỉ có **1** mention "S153" (đúng row roster `:454`), `HANDOFF.md` **0** mention (còn stamp S152 `:5`). Cần đóng @closeout: row S153 + `→ log …` pointer + HANDOFF stamp. 🔴 Ranh: **`STATUS:6` header còn S152 = lead-view (turf H24), tao KHÔNG double-touch** — chỉ khai pointer-orphan của session-log thuộc mặt ④ của tao.

## NEW-ALLOC — PASS (0 action)
- README skill-matrix (`## 🛠️ Skill assignment`, `:174`): **23/23 vai có row** (đo bằng cách quét từng tên VALID_ROLES trong vùng `:178-200`) — 3 row ctx `:198` ctx-audit · `:199` ctx-curator · `:200` ctx-verifier, cả 3 ghi **`ref-only … KHÔNG dùng domain skill`** ⇒ alloc ĐÚNG bản-chất monitor read-only, 0 thiếu row.
- 0 skill mới / 0 plugin mới trong phiên (skills diff rỗng · settings 18/15/3 identical · marketplace 37 = 0 delta vs S143) ⇒ **0 alloc-action**. Carry S143 `security-guidance` (mang hook Stop + edit-time warning ⇒ đụng `settings.json` hooks) VẪN owner-quyết — phiên này **không đo lại**, khai rõ.

<!-- END sub-tooling-auditor-close-S153 · TOTAL=6 finding -->
