# sub-ring1-audit — S150 · KIỂM vòng-1 (tooling/harvest)

> Vai: `ring1-audit` (C4/C4b) · read-only + propose-only · em-main = single-writer.
> Nấc: `/session-end` §L.b(g-bis) — AUTO sau đo, KHÔNG consent-gate. **Audit-round THẬT đầu tiên** (S145 chỉ spawn-probe 0-ghi).
> 🔴 GHI-ĐĨA-TRONG-LÚC-LÀM (anti-#53, wave này 4/4 con-đo đã garble return) — verdict append DẦN, return cuối = 1 dòng.

---

## §0 — PIN + FAIL-SAFE (nghĩa-vụ (i)) — ✅ PIN ĐỦ, KHÔNG NO-OP

| Input | Path | byte | mtime | Kết |
|---|---|---|---|---|
| H1 `tooling-auditor` | `runs/2026-07-25-S150-closeout-bookend/sub-tooling-S150.md` | 18.762 | **2026-07-25 11:30:58** | ✅ tươi (phiên này) |
| H2 `harvest-curator` | `…/sub-harvest-S150.md` | 17.323 | **2026-07-25 11:32:26** | ✅ tươi (phiên này) |

- **C4b tuần-tự CHỨNG ĐƯỢC:** mtime H1 (11:30:58) < mtime H2 (11:32:26) < lượt tao chạy (11:44:52, `date`) ⇒ tao chấm bản ĐÃ CHỐT, không chấm bản đang-viết. ✓
- Fail-safe KHÔNG kích: cả 2 con-đo CÓ chạy phiên này ⇒ có artifact authoritative để chấm.
- 🔴 Ghi rõ nấc: H1 báo `PASS_WITH_FLAGS` (4 FLAG + 2 INFORM) · H2 báo `GATE-PASS-5` (5 FLAG + 2 INFORM). Cả 2 đều có mặt CLEAN ⇒ **thách-CLEAN BẮT BUỘC kích** (§3).

---

## §1 — VERDICT PER-CLAIM (nghĩa-vụ (ii))

> Luật: mỗi claim 1 dòng `ĐẠT|TRƯỢT` + neo bằng-chứng tao **TỰ chạy lại**, KHÔNG chép số của con-đo.
> 🔴 KHÔNG verdict-tổng gộp che claim TRƯỢT lẻ (meta-count blind-spot S119).

### 1.A — H1 `tooling-auditor` · 19 claim → **ĐẠT 16 / TRƯỢT 3**

| # | Claim H1 | Verdict | Bằng-chứng TAO tự chạy |
|---|---|---|---|
| H1-1 | Roster đĩa = **20** persona | **ĐẠT** | `find .claude/agents -maxdepth 1 -name '*.md' -not -name 'README.md' \| wc -l` = 20 · `git ls-files` = 20 (**2 lệnh KHÁC** lệnh `ls\|wc -l` của H1) |
| H1-2 | 4-nguồn khớp: đĩa · `STATUS:452` · `hmw.js` VALID_ROLES · README 0-số | **ĐẠT** (+mạnh hơn H1) | H1 **đếm** 20=20; tao **so TẬP**: `diff <(disk) <(hmw.js VALID_ROLES)` = **RỖNG** ⇒ không chỉ bằng số mà **trùng tên tuyệt-đối 20/20**. `sed -n '452p' docs/STATUS.md` = `Sub-agents \| **20**` ✓ · `agents/README.md:3` = "KHÔNG chép số vào file này" ✓ |
| H1-3 | 20/20 vai có `model: opus` + `effort: max` | **ĐẠT** | `grep -l 'model: opus'` = 20 · `grep -l 'effort: max'` = 20 · vòng lặp per-file tìm vai thiếu → **0 vai thiếu** |
| H1-4 | Rename sạch: 5 bề-mặt hiện-hành **0 hit** tên cũ | **ĐẠT** | *(thách-CLEAN §3.1)* `grep -oE 'lead-view-auditor\|lead-omission-auditor\|h24-audit\|tooling-harvest-audit\|sleep-audit'` **đếm occurrence** (khác `grep -r` của H1) → `agents/*.md` 0 · `hmw.js` 0 · `commands/*.md` 0 · `CLAUDE.md` 0 · `docs/CLAUDE.md` 0 |
| H1-5 | **FLAG-1 (HIGH)** nội-dung: exclusion-list `sleep-recovery-memory-l2.md` stale, sót 6 vai, mâu-thuẫn nội-bộ | **ĐẠT** (+ dự-đoán H1 ĐÃ THÀNH SỰ THẬT) | Chạy đúng lệnh doc `:37` → **16 dòng** (H1 đo 15). Doc `:40` khai "Hiện-hành = 10 tên" ⇒ **16 vs 10 = sót đúng 6** (`harness-audit/eval/refine` + `ring1/ring2/ring4`). 🔴 H1 dự-đoán *"ring4 sẽ tự rơi vào `all` ngay khi nó chạy lần đầu"* — dir `ring4-audit` sinh **11:43:58** (sau H1 13 phút) ⇒ 15→16, **dự-đoán đúng trong CÙNG phiên** |
| H1-6 | FLAG-1 neo **`:39`** = dòng "Hiện-hành = …" | 🔴 **TRƯỢT** | `grep -n "Hiện-hành = "` → **`:40`**. `sed -n '39p' \| cat -A` → **`$`** = dòng **TRỐNG**. Neo lệch 1 dòng; ai lần theo `:39` rơi vào dòng rỗng. (Đúng class `absence_looks_like_clean`: neo rỗng đọc thành có.) |
| H1-7 | FLAG-1 neo `:37` (lệnh) · `:42` ("4 monitor") · `:43` (vá S122) | **ĐẠT** | `grep -n` xác-nhận cả 3 đúng số dòng |
| H1-8 | **FLAG-2 (HIGH)**: `docs/STATUS.md` **0 hit** "Opus 5" | **ĐẠT** | **Lệnh thứ-3** khác cả 2 lệnh H1: `grep -oiE 'opus[^a-z0-9]{0,3}5' docs/STATUS.md \| wc -l` = **0**. + chống-"trích-rỗng-đọc-thành-sạch": sweep RỘNG `grep -oiE 'opus[^ ]{0,12}'` → 20 biến-thể, có `opus-4-8`×8, `Opus`×34, **0 biến-thể nào là opus-5** |
| H1-9 | FLAG-2: flip-chain ô `:452` dừng ở flip-8 (S107) · dòng lead vẫn "Fable 5 (1M) Max" | **ĐẠT** | `sed -n '452p' \| grep -oE 'flip-[0-9]+'` → `flip-8 flip-7 flip-8` (**không có flip-9/10**) · `grep -oE 'em main [^·\|]{0,40}'` → `em main Fable 5 (1M) Max` |
| H1-10 | FLAG-2 lập-luận: *"**không còn chỗ nào trong repo** giữ lịch-sử flip lead"* | 🔴 **TRƯỢT** (over-claim) | `grep -oE 'flip-[0-9]+' docs/STATUS.md \| sort -u` → **có `flip-9`**, tại `STATUS.md:8`: *"Lead **Opus 4.8 owner-choice = flip-9**, KHÔNG outage"* — nằm trong dòng **mega-diary FROZEN** (`:8` tự dán nhãn *"đừng đọc dòng này làm hiện-hành"*). ⇒ 🔴 **HỆ-QUẢ NẶNG HƠN H1 tưởng:** canonical `:452` **stale từ flip-9 (S119, 2026-07-15 — 10 ngày)**, không phải chỉ từ flip Opus-5 @S149/S150. **Đề-xuất vá của H1 (thêm 1 mắt-xích S149/S150) SẼ SÓT flip-9** ⇒ phải nối **2** mắt-xích: `flip-9 Opus 4.8 @S119` **+** `flip-10 Opus 5 MAX @S149/S150` |
| H1-11 | FLAG-2: 5 bề-mặt sống đã mang giá-trị mới | **ĐẠT** (5/5) | `settings.json` → `"model": "claude-opus-5[1m]"` · `session-start.md:41` → "Opus 5 MAX ở MỌI vị trí" · `hmw.js:62` → `TIER2_EXPECTED_FULL_ID = 'claude-opus-5'` · `spawn-model-audit.ps1:100` → `'claude-opus-5'` (+`:101` LEGACY) · adap-report tồn-tại 9.085B / **66 dòng** (H1 khai 66 ✓) |
| H1-12 | **FLAG-3 (MED)**: `spawn-model-audit.ps1:9` `.DESCRIPTION` khai `'claude-opus-4-8'` trong khi `hmw.js:62` = `'claude-opus-5'` | **ĐẠT** | `sed -n '9p'` = `PA-2a … TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'.` ⟂ `sed -n '62p' hmw.js` = `'claude-opus-5'` |
| H1-13 | **FLAG-4 (LOW)**: `:156` trích-dẫn CHẾT (3 vế) | **ĐẠT** (3/3 vế) | (a) `sed -n '36p' hmw.js` nay = dòng VALID_ROLES trio `harness-*` ✓ (b) `grep -c 'demote-pin' hmw.js` = **0** ✓ (c) literal `claude-opus-4-8` vẫn còn tại **`:53` `:58` `:60`** đúng y H1 khai ⇒ kết-luận LOGIC vẫn đứng, chỉ bằng-chứng mục ⇒ LOW **đúng nấc** |
| H1-14 | Mặt ① PASS: skill 6 project / 23 standalone · git-diff skills RỖNG · 19 command · 7 `M` 0 `A`/`D` | **ĐẠT** | `ls -1d .claude/skills/*/` = 6 · `ls -1 ~/.claude/skills/` = 23 · `git diff --stat aaf95ef..HEAD -- .claude/skills/` = **0 dòng** · `ls -1 .claude/commands/*.md` = 19 · `git diff --name-status \| uniq -c` = **7 M**, 0 A, 0 D ✓ |
| H1-15 | Mặt ③ plugin: **18** registered / **15** enabled / **3** disabled (đúng 3 tên) + `effortLevel: xhigh` | **ĐẠT** | Python `json.load` (khác cách H1): `enabledPlugins` dict **len 18** · value `True` = **15** · `False` = **3** = `pr-review-toolkit@` · `code-modernization@` · `hookify@claude-plugins-official` — **đúng 3 tên H1 khai** · `effortLevel` = `xhigh` ✓ |
| H1-16 | Mặt ③ dòng **"marketplace 37"**, nguồn khai = `~/.claude/settings.json` | 🔴 **TRƯỢT** (sai NGUỒN, số không tái-dựng được) | H1 mở §3: *"Nguồn: `~/.claude/settings.json` … đọc bằng JSON-parse"* rồi liệt `marketplace 37` trong CÙNG bảng. Tao: `grep -ic 'marketplace' ~/.claude/settings.json` = **0** · top-level keys = `[permissions, model, statusLine, enabledPlugins, effortLevel, autoUpdatesChannel, tui, skipDangerousModePermissionPrompt, skipWorkflowUsageWarning, theme]` — **KHÔNG có key marketplace nào**. Nguồn THẬT = `~/.claude/plugins/known_marketplaces.json` (**1** marketplace `claude-plugins-official`) + `marketplaces/**/marketplace.json` (**256** plugin available). ⇒ **37 không tái-dựng được từ nguồn H1 khai, cũng không khớp 1 hay 256**. Xem BROKE-1 §2 |
| H1-17 | New-alloc **4/4** script wired, 0 mồ-côi | **ĐẠT** | 4/4 file tồn-tại trong `scripts/`; call-site: `session-scaffold`→`session-start.md` · `session-counter-tick`→`session-start.md` · `h24-signal-write`→**2** (`session-start.md`+`session-end.md`) · `closeout-sentinel`→`session-end.md`. Khớp bảng H1 kể cả chi-tiết "2 call-site" ✓ |
| H1-18 | 23 `A` + 1 `M` adap-report / **100** tổng · dedup-key **0 trùng** | **ĐẠT** | *(tái-dựng §4.2)* `ls \| wc -l` = **100** · `git diff --name-status aaf95ef..a9efa34` = **23 A + 1 M** · dedup bằng **awk assoc-array** (khác `sort\|uniq -d` + `sed\|awk` của H1) → **0 khoá trùng** |
| H1-19 | Commit range = **22** | **ĐẠT** (tại pin) | `git rev-list --count aaf95ef..a9efa34` = **22** ✓ — xem giải time-drift §1.C |

**Ghi thêm (không tính claim):** INFORM `ring4-audit` chưa có thư-mục ký-ức — ĐÚNG lúc H1 đo, **nay ĐÃ XỬ** (`ring4-audit/MEMORY.md` 1.047B, sinh **11:43:58**).

### 1.B — H2 `harvest-curator` · 15 claim → **ĐẠT 15 / TRƯỢT 0**

| # | Claim H2 | Verdict | Bằng-chứng TAO tự chạy |
|---|---|---|---|
| H2-1 | Close-gate **5/5** có bản-ghi-kết-quả, byte `5.637 / 579 / 541 / 3.533 / 1.071` | **ĐẠT** (5/5 **khớp tuyệt-đối**) | *(tái-dựng §4.3)* `wc -c` từng file → **5637 · 579 · 541 · 3533 · 1071** — khớp **đến từng byte** cả 5 |
| H2-2 | 2 file nhỏ nhất **KHÔNG phải stub**, pointer VERIFY tồn-tại | **ĐẠT** | *(thách-CLEAN §3.2)* Đọc FULL `invest-synthesis.md` (579B): có nội-dung thật — 8 lane, `wf_c6a08b12-f36`, ghi rõ L7 MẤT, trỏ `Kết quả tiêu thụ tại: ../2026-07-24-S149-hoi-tu-bookend/spec-hoi-tu-bookend-24-07-2026.md`. Target tồn-tại **13.332B** ✓ (H2 khai 13.332 ✓). Đối-chứng: folder có **7** `sub-invest-*` (1,2,3,4,5,6,8 — **thiếu 7**) ⇒ khớp lời khai "L7 MẤT" |
| H2-3 | **52** run-folder · **49** có `run.md` · 3 dir không có (đúng 3 tên) | **ĐẠT** | `ls -1d \| wc -l` = 52 · `find -name run.md \| wc -l` = 49 · vòng lặp liệt dir thiếu → đúng **`S117-pe-approve-minmax-range` · `S117-pe-luyke-finalize` · `S144-bootstrap`** |
| H2-4 | Orphan = **1** = `S150-closeout-bookend` (by-design, wave đang chạy) | **ĐẠT** *(kèm lưu-ý trình-bày)* | S150 CÓ `run.md` (3.111B) nhưng CHƯA có synthesis ⇒ orphan theo tiêu-chí **bản-ghi-kết-quả**, còn "49 có run.md / 3 không" theo tiêu-chí **run.md**. ⚠️ 2 tiêu-chí khác nhau nằm trong **cùng 1 gạch đầu dòng** §1 ⇒ đọc nhanh dễ tưởng số vênh. Nội-dung ĐÚNG, chỉ **rủi-ro trình-bày** (class `review_presentation` S81) |
| H2-5 | **19** role-dir `agent-memory` | **ĐẠT** (tại pin) | Nay `find -mindepth 1 -maxdepth 1 -type d \| wc -l` = **20** — chênh **do dir `ring4-audit` sinh 11:43:58**, SAU H2 đo (11:32). Time-drift, **không phải sai** |
| H2-6 | **F1 (HIGH)** `agent-memory/ring1-audit/` TỒN-TẠI mà RỖNG; git-MÙ (m#13) | **ĐẠT** (tại pin) — **ĐÃ XỬ** | `stat` dir = **11:43:50**, chứa `MEMORY.md` **969B** ⇒ lúc H2 đo (11:32) **rỗng thật**; lead seed on-behalf sau đó. 🔴 Tự-chứng bằng chính tao: **tao vào KHÔNG mù** — đọc được seed (nêu đích-danh F1 là nguồn seed, GAP-3 lần 5, S145 chỉ spawn-probe). ⇒ F1 đúng **và** đã có tác-dụng thật trong cùng phiên |
| H2-7 | **F2 (MED)** `ring4-audit` KHÔNG có thư-mục | **ĐẠT** (tại pin) — **ĐÃ XỬ** | dir sinh **11:43:58** + `MEMORY.md` 1.047B. Lúc H2 đo: chưa có ✓ |
| H2-8 | **F3 (MED)** `investigator-codebase` 10 invocation → **0** delta sổ; commit cuối `5f6c3be` **07-23** | **ĐẠT** | `git log -1 --format='%h %ad'` trên `investigator-codebase/MEMORY.md` → **`5f6c3be 2026-07-23`** — khớp chính-xác, **0 commit sau đó** ✓ |
| H2-9 | **F4 (MED)** `reviewer` 1 invocation THẬT (`sub-reviewer-hoi-tu.md` 15.733B) → 0 entry; touch `9abc2e1` chỉ rename-ref | **ĐẠT** | `wc`/`ls` file = **15733B** (khớp byte) · `git log -1` sổ reviewer → **`9abc2e1 2026-07-24 wal: flush`** (không phải commit nội-dung) ✓ |
| H2-10 | **F5 (MED)** `ring2-audit/MEMORY.md` **2 cite-dead** do rename-sweep; số liệu KHỚP đĩa ⇒ **không bịa** | **ĐẠT** (mọi vế) | `grep -o 'sub-ring2-audit-S14[0-9]*\.md'` → đúng **2** cite. `ls` 2 path đó → **No such file** (chết thật). File THẬT = `sub-h24-audit-S146.md` **6169B** + `sub-h24-audit-S149.md` **25724B** ⇒ khớp "6.169B" và "25,7KB" sổ khai ⇒ **nội-dung truy được, chỉ path chết** — H2 phân-loại đúng nấc (FLAG chứ không phải bịa) |
| H2-11 | C11(b) chỉ quét vai `INFORM-only` = **10** vai; `investigator-codebase` + `reviewer` **0 hit** ⇒ ngoài lưới by-design | **ĐẠT** | *(falsify HELD-3 — lỗi của TAO)* `grep -l 'INFORM-only' .claude/agents/*.md \| wc -l` cho tao **11** ≠ 10 → điều tra: hit thứ 11 = **`README.md`**, đúng **bẫy glob** mà chính `agents/README.md:5` cảnh-báo (*"glob thô bắt LUÔN README ⇒ thừa 1"*). Trừ README = **10** ⇒ **H2 đúng, tao suýt sai**. `grep -c` trên 2 file kia = **0/0** ✓ |
| H2-12 | Corruption **PASS**: U+FFFD 0 · 0-byte 0 | **ĐẠT** | `grep -rlP "\x{FFFD}" .claude/agent-memory/` = **0 file** · `find -name '*.md' -size 0` = **0** ✓ |
| H2-13 | Completeness **PASS**: `ring2-audit` 2 entry đủ field, verdict `7 ĐẠT / 0 TRƯỢT / 2 KHÔNG-CHẤM-ĐƯỢC` | **ĐẠT** *(kèm ghi-chú)* | Sổ có **3** heading · `Tag`×2 · `verdict`×3 · chuỗi **`7 ĐẠT`** hiện-diện ✓. Ghi-chú: field ở **dạng văn xuôi**, không phải nhãn `**task:**`-kiểu ⇒ `grep -cE '^\s*[-*]?\s*\*\*(task\|verdict\|…)'` = **0** ⇒ **detector dựa NHÃN sẽ đọc sổ này thành "thiếu field"**. H2 chấm bằng đọc (đúng), nhưng nấc máy sẽ lệch — đáng biết trước khi ai wire detector completeness |
| H2-14 | **0** delta mồ-côi (8 file / +62 −10 map hết về run/task) | **ĐẠT** | `git diff --stat aaf95ef..a9efa34 -- .claude/agent-memory/` khớp danh-sách 8 file H2 liệt; mỗi delta có run/stage tương-ứng như bảng §3 của H2 |
| H2-15 | Spawn-record 6 dòng; dòng #5 `ring1-audit` = **planned**, *"chặn bởi F1: sổ vai RỖNG, sẽ vào mù"* | **ĐẠT** (tại pin) — **nay nâng được** | Đúng lúc H2 đo. Nay: seed đã land 11:43:50 **trước** khi tao spawn ⇒ đúng khuyến-nghị H2 (*"seed TRƯỚC spawn mới có tác dụng — memory nạp lúc spawn"*). Em-main có thể nâng #5 → `executed` sau khi re-Read file này + verify byte>0 (B3) |

### 1.C — 2 CHỖ VÊNH SỐ giữa tao và con-đo: phán-quyết **time-drift** vs **real-error**

| Vênh | Con-đo khai | Tao đo | Phán-quyết |
|---|---|---|---|
| **V1 — commit range** | H1 **và** H2 đều khai **22** commit `aaf95ef..HEAD` | `git rev-list --count aaf95ef..HEAD` = **29** | 🟢 **TIME-DRIFT, KHÔNG phải sai.** HEAD đã dời `a9efa34` → **`045d37a`**; `git log a9efa34..HEAD` = **7 commit `wal: flush`** (T1124→T1145) sinh trong lúc wave chạy. Tái-đo **tại pin của chúng**: `git rev-list --count aaf95ef..a9efa34` = **22** ✓ ⇒ cả H1 và H2 **đúng**. 🔴 Bài rút: con-đo pin `..HEAD` (moving target) thay vì SHA cứng ⇒ mọi kiểm-lại sau đó lệch. Đề-xuất: ghi `aaf95ef..a9efa34` (SHA↔SHA) trong header sub-file — H1/H2 **đã** ghi SHA đích ở dòng phạm-vi nên tao truy được; giữ thói quen đó. |
| **V2 — exclusion-list / role-dir** | H1: lệnh doc ra **15** · H2: **19** role-dir · H2-F2: ring4 **không có dir** | **16** · **20** · ring4 **CÓ dir** | 🟢 **TIME-DRIFT, và là DẤU HIỆU TỐT.** `ring1-audit/` seed **11:43:50** · `ring4-audit/` dựng **11:43:58** — cả hai **sau** H1 (11:30:58) và H2 (11:32:26), tức lead **đã hành-động theo F1/F2 ngay trong phiên**. Số của con-đo đúng tại thời-điểm đo; số của tao đúng bây giờ. 🔴 Đồng thời **xác-nhận FLAG-1 của H1 mạnh thêm**: dự-đoán "ring4 sẽ rơi vào `all`" thành sự-thật sau 13 phút. |

**Ghi luật cho lần sau (đề-xuất, em-main quyết):** vòng-KIỂM chạy SAU vòng-ĐO ⇒ **mọi số đếm-đĩa đều có thể dời**. Verdict phải hỏi *"sai, hay là đã-được-xử?"* trước khi chấm TRƯỢT — nếu không, vai KIỂM sẽ **phạt con-đo vì đúng**.

---

## §2 — FALSIFY-LOG (nghĩa-vụ (iii)) — 7 phép · **5 HELD / 2 BROKE**

> Luật: ghi **phép thử cụ-thể**, không chỉ kết-luận. Mục-tiêu = **phá** claim; phá không được mới là HELD.

**HELD-1 — "Roster 20" (H1)** · Phép: nghi H1 đếm bằng `ls *.md | wc -l` rồi trừ tay README ⇒ thử phá bằng **nguồn độc-lập** `git ls-files` (index git, không phải filesystem glob) + `find` (không qua shell glob). Nếu có file `.md` untracked hoặc ẩn thì 2 số sẽ vênh. → cả hai = **20**. Phá thêm: `diff` **tập tên** đĩa vs `hmw.js` → RỖNG. ⇒ **HELD** (mạnh hơn claim gốc: không chỉ đúng số mà đúng tên).

**HELD-2 — "5 bề-mặt hiện-hành 0 hit tên cũ" (H1, mặt CLEAN)** · Phép: H1 dùng `grep -r` (đếm **file**); dương-tính giả xảy ra nếu 1 file có nhiều hit mà `-l` che. Tao đổi sang `grep -oE … | wc -l` (đếm **occurrence**) trên từng lớp — occurrence luôn ≥ file-count, nên nếu H1 sót thì tao phải thấy. → 0/0/0/0/0. ⇒ **HELD**.

**HELD-3 — "C11(b) chỉ phủ 10 vai INFORM-only" (H2)** · Phép: chạy `grep -l 'INFORM-only' .claude/agents/*.md | wc -l` → ra **11**, tưởng BROKE. Truy tiếp bằng `basename` từng hit → hit thứ 11 = **`README.md`**. ⇒ claim H2 **HELD**; cái sai là **phép thử của tao** (dính đúng bẫy glob mà `agents/README.md:5` đã ghi thành cảnh-báo). 🔴 Ghi lại vì đây là bằng-chứng bẫy đó **vẫn cắn người thứ N** — kể cả vai KIỂM.

**HELD-4 — "close-gate 5/5 byte" (H2)** · Phép: nghi con số byte được chép từ `ls` một lần rồi tái-dùng ⇒ đo lại bằng `wc -c` (đọc nội dung, không đọc metadata). Lệch 1 byte cũng lộ. → 5/5 khớp **tuyệt-đối**. ⇒ **HELD**.

**HELD-5 — "invest-synthesis 579B là ĐỦ, không phải stub" (H2)** · Phép: 579B thừa sức chỉ chứa 1 câu rỗng ⇒ mở **đọc FULL**, đòi 3 thứ: (a) nội-dung riêng-biệt (b) pointer (c) pointer **trỏ tới file có thật**. → có đủ: 8 lane + `wf_c6a08b12-f36` + khai "L7 MẤT"; pointer → `spec-hoi-tu-bookend-24-07-2026.md` **tồn-tại 13.332B**; đối-chứng folder có đúng 7 `sub-invest-*` thiếu số 7 ⇒ lời khai khớp hiện-vật. ⇒ **HELD**.

🔴 **BROKE-1 — "marketplace 37, nguồn `~/.claude/settings.json`" (H1, nằm TRONG mặt ③ PASS)** · Phép: H1 mở §3 tuyên nguồn = `settings.json` "đọc bằng JSON-parse". Thử phá rẻ nhất: `grep -ic 'marketplace' ~/.claude/settings.json` → **0**. Xác nhận bằng liệt top-level keys → **không có key marketplace nào**. Truy nguồn thật: `~/.claude/plugins/known_marketplaces.json` = **1** marketplace; `marketplaces/**/marketplace.json` = **256** plugin. **Không chỗ nào ra 37.** ⇒ **BROKE**: con số 37 **không tái-dựng được từ nguồn được khai**, và 3 dòng còn lại của bảng (18/15/3) thì tái-dựng được ⇒ đây là **1 dòng lạc nguồn nằm lẫn trong 3 dòng đúng** — đúng lý-do phải soi CLEAN. *(Ghi công-bằng: 37 có thể đúng ở một nguồn khác tao chưa tìm ra — cái BROKE chắc-chắn là **quy-nguồn**, không phải "37 sai".)*

🔴 **BROKE-2 — "không còn chỗ nào trong repo giữ lịch-sử flip lead" (H1, lập-luận nâng FLAG-2 lên HIGH)** · Phép: nếu đúng thì `grep -oE 'flip-[0-9]+' docs/STATUS.md` chỉ được ra ≤ flip-8. → ra **flip-5…flip-9**. Đọc `flip-9` tại `:8`: *"Lead Opus 4.8 owner-choice = flip-9"*. ⇒ **BROKE** ở dạng over-claim. **Nhưng phá xong lại làm FLAG-2 NẶNG hơn**: flip-9 chỉ sống trong dòng **FROZEN tự dán nhãn "đừng đọc làm hiện-hành"**, còn canonical `:452` **đã đứng im từ flip-8** ⇒ canonical stale **10 ngày / 2 flip**, không phải 1. Vá theo đúng chữ đề-xuất H1 sẽ **để lại flip-9 mất tích**.

---

## §3 — THÁCH-CLEAN BẮT BUỘC (nghĩa-vụ (iv), vế 2)

> Kích vì: H1 báo 2 mặt **PASS** (① commands · ③ plugin) và H2 báo **GATE-PASS-5** với Corruption/Completeness PASS. 🔴 CLEAN không được tin trần.

### 3.1 — Mở 1 bề-mặt H1 gọi "SẠCH": rename-sweep + skill-0-drift
- **Rename 0-hit:** re-grep bằng **lệnh khác** (occurrence-count thay file-count) trên đúng 5 lớp H1 khai ⇒ **THẬT SẠCH 0/0/0/0/0**. Không phải "sạch vì grep hỏng": cùng regex đó bắt được **296 hit** ở lớp `runs/**` + `sessions/**` (H1 khai GIỮ) ⇒ regex **có răng**, 0-hit là 0-hit thật.
- **Skill 0-drift:** H1 kết-luận từ `git diff --stat … -- .claude/skills/` RỖNG. Rỗng-diff có thể do sai path-spec ⇒ thử phá bằng cách đếm thực-thể: `ls -1d .claude/skills/*/` = **6**, khớp `STATUS:451` "Skills | 6" ✓ và `~/.claude/skills/` = **23** ✓. ⇒ CLEAN **thật**.
- 🔴 **Payoff của thách-CLEAN:** BROKE-1 (marketplace) nằm **bên trong mặt ③ H1 chấm PASS**. Nếu tin CLEAN trần thì lọt. *(Đúng anti-pattern #3 của vai này: CLEAN sai nguy hơn FLAG sai.)*

### 3.2 — Mở 1 sub H2 gọi "ĐỦ/harvested": `invest-synthesis.md` 579B
- Đọc **full**, không dừng ở `-size +0c`. Kết: **nội-dung thật**, dạng-1 nén hợp khuôn, pointer **verify được** (target 13.332B tồn-tại), và đối-chứng hiện-vật (7 `sub-invest-*`, thiếu lane 7) **khớp** lời khai "L7 MẤT". ⇒ H2 **không đếm-tên-cho-đủ**; nó đã đọc thật.
- Kiểm chéo thêm vế "harvested": H2 **không** tự nhận vai nào đã harvest mà chưa APPEND — ngược lại nó **tự tố** 2 ca 0-delta (F3 `investigator-codebase`, F4 `reviewer`) và tao **xác-nhận cả 2 bằng `git log -1` trên chính sổ của chúng**. ⇒ coverage-đếm-tên **không xảy ra**.

**Kết thách-CLEAN: H2 CLEAN chịu được soi (2/2 lens sạch). H1 CLEAN **thủng 1 chỗ** (BROKE-1, mặt ③).**

---

## §4 — TỰ TÁI-DỰNG SỐ LOAD-BEARING (nghĩa-vụ (iv), vế 1) — 6 số, **5 khớp / 1 lệch**

| # | Số load-bearing | Con-đo khai | Tao tái-dựng (lệnh KHÁC) | Kết |
|---|---|---|---|---|
| 4.1 | **Roster** | H1: 20 | `find … -not -name README.md \| wc -l` = 20 · `git ls-files \| wc -l` = 20 · `diff` tập-tên vs `hmw.js` = RỖNG | ✅ **KHỚP** |
| 4.2 | **adap-report** | H1: 100 tổng · 23 `A` + 1 `M` · dedup 0 trùng | `ls \| wc -l` = 100 · `git diff --name-status aaf95ef..a9efa34` = 23 A + 1 M · dedup bằng **awk assoc-array** = 0 khoá trùng | ✅ **KHỚP** |
| 4.3 | **close-gate byte** | H2: 5637/579/541/3533/1071 | `wc -c` từng file = **5637 · 579 · 541 · 3533 · 1071** | ✅ **KHỚP đến byte** |
| 4.4 | **plugin** | H1: 18/15/3 | `json.load` → dict len 18 · True 15 · False 3 (+đúng 3 tên) | ✅ **KHỚP** |
| 4.5 | **commit range** | H1+H2: 22 | `git rev-list --count aaf95ef..a9efa34` = 22 (`..HEAD` nay 29 = 7 wal sau pin) | ✅ **KHỚP tại pin** |
| 4.6 | **marketplace** | H1: 37, nguồn `settings.json` | `grep -ic 'marketplace' settings.json` = **0** · keys: không có · nguồn thật: 1 marketplace / 256 plugin | 🔴 **LỆCH** (BROKE-1) |

🔴 **Số CÓ-THỂ-SAI, không phải hằng-số hiển-nhiên:** 4.1 phụ-thuộc README có bị tính hay không (bẫy đã cắn tao ở HELD-3) · 4.2 phụ-thuộc chọn đúng SHA-đích (nếu dùng `..HEAD` sẽ ra khác) · 4.3 lệch 1 byte là lộ · 4.6 **đã lệch thật**.

---

## §5 — CHỐT

| Nghĩa-vụ | Kết |
|---|---|
| (i) PIN + fail-safe | ✅ PIN đủ (H1 11:30:58 · H2 11:32:26 < tao 11:44) — C4b tuần-tự chứng được, KHÔNG NO-OP |
| (ii) Verdict per-claim | **34 claim: ĐẠT 31 / TRƯỢT 3** — H1 16/19 (TRƯỢT: neo `:39` · over-claim flip · marketplace-nguồn) · H2 **15/15** |
| (iii) Falsify-log | **7 phép — 5 HELD / 2 BROKE** (BROKE-1 marketplace-nguồn · BROKE-2 over-claim "không còn chỗ nào") |
| (iv) Tái-dựng + thách-CLEAN | Tái-dựng **6 số: 5 khớp / 1 lệch** · thách-CLEAN: **H2 chịu được 2/2 lens · H1 thủng 1 (mặt ③ PASS)** |

**VERDICT VÒNG-1: `KIEM-PASS-WITH-3-TRUOT`** — cả 2 con-đo **đo thật, không bịa**: mọi số load-bearing tái-dựng được trừ 1; H2 **15/15 sạch** và còn tự-tố bất-lợi cho mình (F3/F4) đúng sự-thật; H1 bắt 4 flag **đều đúng nội-dung**, kể cả dự-đoán ring4 **thành sự-thật trong cùng phiên**. 3 TRƯỢT đều là **lỗi neo/quy-nguồn/over-claim**, không lỗi kết-luận ⇒ không hạ verdict của H1/H2, nhưng **phải sửa trước khi ai trích lại**.

### 5 đề-xuất (propose-only — em-main VERIFY rồi quyết; tao KHÔNG sửa file nào ngoài sub-file này + diary của tao)

1. 🔴 **FLAG-2 phải nối 2 mắt-xích, không phải 1** — `STATUS:452` thêm **`flip-9 Opus 4.8 @S119`** *và* `flip-10 Opus 5 MAX @S149/S150`, + sửa cụm "em main Fable 5 (1M) Max". Vá theo đúng chữ H1 sẽ để sót flip-9. *(từ BROKE-2)*
2. 🔴 **`sub-tooling-S150.md` §3: sửa quy-nguồn dòng marketplace** — hoặc bỏ dòng đó khỏi bảng "Nguồn: settings.json", hoặc ghi đúng `~/.claude/plugins/known_marketplaces.json` + nêu cách đếm ra 37. *(từ BROKE-1)*
3. **`sub-tooling-S150.md` §1.4: neo `:39` → `:40`** (dòng "Hiện-hành"). *(từ H1-6)*
4. **Vá FLAG-1 bằng BỎ hardcode, đúng như H1 đề-xuất phương-án (b)** — dự-đoán ring4 vừa thành sự-thật sau 13 phút là bằng-chứng phương-án (a) "thêm 6 tên" sẽ stale lại ngay vòng roster kế.
5. **Cảnh-báo cho ai wire detector Completeness:** sổ `ring2-audit` đủ field ở **dạng văn xuôi**; matcher dựa nhãn `**task:**` sẽ báo thiếu → dương-tính-giả. *(từ H2-13)*

> 🔴 Caveat vai (khai thẳng, không giấu): frontmatter tao khai read-only nhưng **runtime whitelist không có răng** (`[carry:tools-whitelist-no-teeth]` S143 — Bash vẫn là kênh-ghi-mở). Backstop THẬT = lead soát `git status` sau lượt + commit-gate. Trong lượt này tao chỉ ghi **2 file**: sub-file này + `agent-memory/ring1-audit/MEMORY.md`.
