# sub-ring2-audit — KIỂM vòng-ĐO soi-lead (H24) @bookend-close S185 — **ĐANG LÀM**

> Vai: `ring2-audit` (C4/C4b vai-KIỂM vòng H24). **Tao KIỂM 2 con-đo, KHÔNG soi lead trực-tiếp.**
> propose-only · INFORM-only · single-writer = lead. Không Write/Edit ngoài tệp này.
> 🔴 GHI LIÊN TỤC (anti-#53): mỗi verdict chốt xong append ngay, mỗi mục kết bằng `---`.

## §0 — PIN + fail-safe (nghĩa-vụ (i))

Input pin **đích danh** (fail-closed — thiếu là NO-OP, cấm ĐẠT-ảo):

| vật | đường dẫn | bytes | mtime |
|---|---|---|---|
| con-đo 1 | `runs/2026-08-09-S185-bookend-close/sub-lead-stale-deep.md` | **15.975** | 2026-08-10 **01:34:11** |
| con-đo 2 | `runs/2026-08-09-S185-bookend-close/sub-lead-gap-deep.md` | **19.903** | 2026-08-10 **01:39:01** |
| tally máy | `.claude/governance/.session-counter.json` | — | (đã ghi @S185, `signal_session=S185`) |

- ✅ **H24 CÓ chạy phiên này** — 2 artifact tươi, cùng run-folder, cùng nhãn S185 ⇒ **KHÔNG NO-OP**.
- ✅ **C4b tuần-tự:** giờ tao khởi động **01:41** > mtime cả hai (01:34 / 01:39) ⇒ tao chạy **SAU** cặp, không song song.
- 🔸 **ERRATA-0 (lệch pin, không phải lỗi con-đo):** lệnh giao ghi `sub-lead-gap-deep.md` = **19.589 B**; đĩa lúc tao pin = **19.903 B** (+314 B) và `git status` còn đánh dấu ` M`. Giải thích khớp: con-đo gap append tiếp **sau** khi coordinator soạn lệnh (mtime 01:39:01 ≈ giờ giao việc). ⇒ Tao chấm trên **bản đĩa 19.903 B** (bản ĐẦY ĐỦ, END-line có mặt), KHÔNG chấm bản-cắt. Đây đúng lớp rủi-ro **pin-bản-cắt 4-A** tao tự nêu @S152 — lần này kiểm được vì file có dòng `## TOTAL: 6 FLAG` + `## XONG` đóng đuôi.

**Tập chấm: 16 FLAG** = 10 (`lead-stale-deep`) + 6 (`lead-gap-deep`).

---

## §1 — TỰ TÁI-DỰNG số CÓ-THỂ-SAI (nghĩa-vụ (iv)) — làm TRƯỚC khi chấm, để không bị lời-khai dẫn

### R-1 · 🔴 TIME-DRIFT: bản counter lúc CON-ĐO đo ≠ bản trên đĩa lúc TAO chấm — suýt đẻ 2 cáo-buộc oan

Đĩa **BÂY GIỜ** (`.session-counter.json`, đã bị `h24-signal-write` ghi @S185):
`counter=59` · `light_at=59` · `deep_at=**59**` · `signal_session=S185` · `signal_reset_done=true`.
Nếu tao chấm bằng bản này thì **stale-F5** (*"19/15"*) và **§0 của gap** (*"deep_at=40"*) đều thành **bịa số**.

Kéo bản **đúng-thời-điểm** bằng `git show HEAD:.claude/governance/.session-counter.json`:

| khoá | bản HEAD (lúc cặp đo) | con-đo khai | khớp? |
|---|---|---|---|
| `counter` | **59** | 59 (cả 2 vai) | ✅ |
| `last_audit.deep_at_counter` | **40** | 40 | ✅ ⇒ OVERDUE deep = 59−40 = **19/15** ĐÚNG |
| `last_audit.light_at_counter` | **56** | 56 (gap §0) | ✅ ⇒ light 3/6 chưa tới hạn ĐÚNG |
| `signal_session` | **S182** | S182 (gap §0) | ✅ |
| `signal_reset_done` | **false** | false (gap §0) | ✅ |
| `signal_last_kind` | **light** | light (gap §0) | ✅ |

⇒ **6/6 tiền-đề của gap §0 byte-exact**, và stale-F5 `19/15` **tái-lập được**. Bài lặp lần 3 (S162 · S166 · nay): **cây bẩn giữa phiên ⇒ phải kéo bản HEAD mới phán được vai-đo.**

### R-2 · Đếm lại `class_repeat.counts` — 12/12 khoá, HAI bản (trước ⟂ sau khi máy ghi)

| class | PRE (git HEAD) | con-đo đề-xuất | POST (đĩa) | phán |
|---|---|---|---|---|
| `gap-carry-dropped` | 13 | 14 | **14** | ✅ máy áp đúng |
| `gap-decision-sunk` | 7 | 8 | **8** | ✅ |
| `gap-owner-specifics` | 6 | 7 | **7** | ✅ |
| `gap-underfill` | 0 | 1 | **1** | ✅ |
| `gap-carry-aged` | 1 | **giữ 1** (cấm ghi 0) | **1** | ✅ + vào `signal_coca` |
| `gap-incident-unrecorded` | 0 | 0 | **0** | ✅ honest-zero |
| `view-stale-count` | 11 | (fire 4 FLAG) | **12** | ✅ +1 (đếm VÒNG, không đếm flag) |
| `view-stale-status` | 8 | (fire 3) | **9** | ✅ +1 |
| `view-stale-header` | 6 | (fire 2) | **7** | ✅ +1 |
| `view-residual-asym` | 11 | (fire 1) | **12** | ✅ +1 |
| `view-stale-role-desc` | **2** | 0 (không fire) | **0** | ✅ RESET đúng consecutive-semantics |
| `view-claim-broader-than-sample` | 0 | 0 | **0** | ✅ |

- ✅ **Câu hỏi lead giao — `gap-carry-dropped` có đúng 14 không: CÓ.** 13 → +1 = 14, và **14 = 4,7× ngưỡng `jump_on_class_repeat`=3** đúng như gap tính.
- ✅ `signal_decided` = **8 phần-tử** = đúng 8 class fire (4 view + 4 gap), khớp tuyệt đối tổng FLAG hai vai. `signal_coca` = `["gap-carry-aged"]` ⇒ ô KHÔNG-ĐO-ĐƯỢC được máy ghi thành **carve-out có tên**, không bị nuốt thành 0. Đây là **hình dạng ĐÚNG** của honest-zero: vai từ chối bịa 0 → máy có chỗ chứa lời từ chối.

### R-3 · 🔴 Chạy `dotnet test SolutionErp.slnx` TƯƠI — tự đo lại số của stale-F3

```
Domain : Failed 0, Passed  45, Skipped 0
Infra  : Failed 0, Passed 623, Skipped 0   =>  TỔNG 668 / 0
```
- canonical `STATUS.md:474` = **645** (`45 Domain + 600 Infra`) ⇒ **thiếu 23**, và **toàn bộ 23 nằm ở Infra** (623 − 600 = 23; Domain 45 = 45 khớp).
- `STATUS.md:8` = **644** ⇒ lệch **24**.
- WAL:22 `dotnet test … (=668/0)` = **ĐÚNG TUYỆT ĐỐI**, tao đo lại ra đúng con số đó.
⇒ **stale-F3 không những đúng, mà con số nó dẫn (668) là con số tao tự đo được.**

### R-4 · Tự dựng lại tập carry 12/23 của gap-F1 (phép nặng nhất của vai gap)

🔸 **Tao tự khai: thước của TAO hỏng lượt đầu.** Regex `\[carry:([a-z0-9-]+)\]` chạy trên `HANDOFF:232` ra **6 slug** — suýt kết luận gap *"bịa 23"*. Đọc dòng 232 verbatim mới thấy: 6 hit đó là khối `🆕 MỚI` + `✅ ĐÓNG`; **23 slug re-stamp nằm ở dạng backtick trần** sau cụm tự-khai `GIỮ re-stamp 23 slug`. Đổi extractor → chạy lại:

| phép | gap khai | tao đo | khớp |
|---|---|---|---|
| slug khối `Carry @S152` (`:232`) | 23 | **23** (unique 23) | ✅ |
| khối hiện tại `:13` + `:14` | 23 + 2 = 25 | **23 + 2 = 25** | ✅ |
| CÒN | 11/23 | **11** | ✅ |
| VẮNG | 12/23 | **12** | ✅ |
| **danh-sách 12 slug** | 12 tên | **12 tên** | ✅ **SET GIỐNG HỆT, 0 lệch phần-tử** (`only-in-gap`=∅ · `only-in-mine`=∅) |

⇒ **gap-F1 tái-lập 100% ở mức TỪNG PHẦN-TỬ**, không chỉ mức con-số.

**Bài (lặp lần 4 của lớp "bộ lọc chuỗi nuốt nhầm đối tượng"):** cùng lớp với CAVEAT của chính vai stale lượt này (`grep -v Snapshot` nuốt `AddPeApprovedBudgetSnapshot`). Tao dính đúng lớp đó trong cùng một lượt đi soi nó ⇒ **nghi THƯỚC của mình trước khi buộc tội vai-đo.**

### R-5 · Số underfill của gap-F6 — đọc thẳng từ máy in trong chính phiên

`script-arm-output.md` `:397/:399/:400/:401` — tao mở đúng dòng:
`hotload measured = 736281 B` ✅ · `measured_headroom = 134573 tok` ✅ · `target (owner) = 210000 tok` ✅
· `:401` máy tự in **`headroom binds (target exceeds room)`** ⇒ **chính máy phát biểu điều-kiện `target > headroom`** mà carry `underfill-mau-so` treo. Bước ROT: `session-start`=1 · `session-end`=2 · **`tiep.md`=0** ✅ khớp tuyệt đối.

---

## §2 — VERDICT PER-FLAG (nghĩa-vụ (ii)) — 16/16, mở source đối chiếu từng cái

### A. `lead-stale-deep` — 10 FLAG

| # | class | phán | neo bằng-chứng tao TỰ mở |
|---|---|---|---|
| F-1 | `view-stale-status` | **ĐẠT** | `STATUS:8` = `🔥 CURRENT (S161→S168 … L9` ✅verbatim; `:488`=L12 · `:500`=L11 · `:508`=L10 ✅cả 3; `WAL:2`=`S185/L13`. 🔴 Vế phụ *"đứng yên qua 3 closeout"* tao **kiểm riêng**: `3a6eb92`·`57e672f`·`d291879` — **3/3 đều chạm `docs/STATUS.md`** ⇒ không phải "tụt một nhịp" |
| F-2 | `view-stale-header` | **ĐẠT** | `STATUS:6` = *"mốc SỐNG hiện tại = S179, phiên-LOGIC L11, window 7"* ✅verbatim vs `WAL:2` S185/L13 |
| F-3 | `view-stale-count` | **ĐẠT** ⭐ | `STATUS:474` = `645 PASS \| 45 Domain + 600 Infra` ✅verbatim · `:8`=644. **Tao CHẠY LẠI suite: 668/0** (R-3) ⇒ canonical thiếu **23**, trọn 23 ở Infra |
| F-4 | `view-stale-header` | **ĐẠT** | `HANDOFF:5` nhãn `2026-08-07 (S180→S181 … L12 windows 1-2)` ✅ vs ruột CÙNG segment `:6` *"ĐÓNG 4/4 **@S185**"* ✅ |
| F-5 | `view-stale-count` | **ĐẠT** | `HANDOFF:11` + `:24` đều `OVERDUE:deep` **15/15** ✅verbatim; sự thật **19/15** — chứng bằng bản **HEAD** `deep_at=40` (R-1), KHÔNG bằng bản đĩa đã bị máy ghi |
| F-6 | `view-stale-count` | **ĐẠT** | `HANDOFF:12` = *"20 carry còn mở"* ✅ vs tao đếm `:13`=**23** + `:14`=**2** = **25**. Vế *"lane-4 đã nêu"* ✅ có thật tại `:16(i)` verbatim |
| F-7 | `view-stale-status` | **ĐẠT** | sổ `:50` `YC-017` cột trạng-thái = **mở** ✅ vs `WAL:15` `[x] YC-017 **ĐÓNG @S185**` ✅ — hai sổ SỐNG nói ngược |
| F-8 | `view-stale-status` | **ĐẠT** | sổ `:44` `YC-011` = **mở**, con-trỏ `WAL next:` ✅; vế (2) `HANDOFF:7` *"DUYỆT + ĐÃ GỬI @S181"* ✅ |
| F-9 | `view-residual-asym` | **ĐẠT** ⭐ | Tách CỘT mới thấy chuẩn: `YC-013` col-4 = `**mở** *(code+deploy XONG — còn acceptance-mắt-anh + bookend @close rồi lật đóng; TASK → WAL)*` ⟂ `YC-016` col-4 = `**mở**` **trần**. Cùng bảng, cùng cột, cùng trạng-thái — một bên có lý-do, một bên không ⇒ đúng nghĩa `residual-asym` |
| F-10 | `view-stale-count` | **ĐẠT** | `lead-stale-auditor.md:47` = ``CLAUDE.md ghi "~60 menu key" khi canonical `STATUS.md:19` = 54`` ✅verbatim. Đối chứng: canonical THẬT `STATUS:473` = **113**; `STATUS:19` = *"④ Vòng kiểm chặn lead 3 lần…"* = **0 liên quan** ⇒ sai đủ **3 tầng** |

### B. `lead-gap-deep` — 6 FLAG

| # | class | phán | neo bằng-chứng tao TỰ mở |
|---|---|---|---|
| G-1 | `gap-carry-dropped` | **ĐẠT** ⭐ | Tái-dựng **từng phần-tử** (R-4): 23 slug → 11 còn / **12 vắng**, set **giống hệt** 12 tên gap liệt. `:232` tự khai *"GIỮ re-stamp **23 slug**"* ⇒ mẫu-số là **tự-khai của chính sổ**, không phải gap tự đặt |
| G-2 | `gap-carry-dropped` | **ĐẠT** | `YC-002` `:35` = **mở**, nhắc **4**, con-trỏ ``WAL chain W5 + W4b`` ✅verbatim; `grep 'W5\|W4b' WAL` = **0** · `grep 'push 42\|42 commit'` = **0**; **control-dương `VK-5` = 1 hit** ⇒ grep sống, con-trỏ CHẾT thật |
| G-3 | `gap-decision-sunk` | **ĐẠT** | Nguồn `checklist-final.md:52` ✅verbatim gồm cả cụm *"câu RƠI khỏi surface từ 07-25"*; đo 6 sổ bền = **0/0/0/0/0/0**. **Control-dương dấu tiếng Việt**: `ngưỡng`/`dừng` = 9/6 · 5/2 · 1/1 · 0/3 ⇒ grep có dấu SỐNG, 0-hit là thật |
| G-4 | `gap-decision-sunk` | **ĐẠT** | 4 slug owner-quyết (`carry-age-vacuous`·`hook-vs-budget-cap`·`pull-warn-threshold`·`underfill-mau-so`) — **cả 4 nằm trong tập 12 VẮNG tao tự dựng** ở R-4 ⇒ vế *"mất CẢ HAI đường sống"* có chân |
| G-5 | `gap-owner-specifics` | **ĐẠT** | `find broadcasts -iname '*2026-08-08*'` = **0** ✅; inbox mới nhất theo tên = **2026-08-04** ✅ (3 tệp `upgrade-pack-phased`) ⇒ nguồn SPECIFICS của `YC-018` không tra được, đúng |
| G-6 | `gap-underfill` | **ĐẠT** | R-5: 3/3 số byte-exact + máy tự in `headroom binds (target exceeds room)` + `tiep.md` = **0** bước ROT trong khi phiên vào bằng `/tiep` ×3 |

> 🔴 **16/16 ĐẠT nghĩa là mọi FLAG đều TRÚNG VẬT THẬT — KHÔNG nghĩa 2 vai đã bắt HẾT.** Đây là độ **CHÍNH XÁC**, không phải độ **PHỦ**. Chính vai stale khai coverage **THỦNG** (`STATUS` chỉ đọc ~3 vùng/875 dòng · `HANDOFF` 40/598 · **CHƯA chạm** gotchas · migration-todos · ACTIVE-MARKS · 27/28 persona) ⇒ **10 là SÀN**, tao **GIỮ NGUYÊN NẤC ĐÓ, cấm làm tròn thành TỔNG**.

---

## §3 — FALSIFY-LOG (nghĩa-vụ (iii)) — 6 phép: **4 HELD / 2 BROKE**

**F-1 · HELD — bẻ stale-F3 (canonical-poison 645 vs 668).** Phép bác mạnh nhất có thể: **không đọc lời ai, tự chạy `dotnet test SolutionErp.slnx`**. Nếu ra 645 thì FLAG sập. Kết quả `45 + 623 = **668/0**` ⇒ **không bác được**, và mạnh hơn khai báo: delta 23 **nằm trọn ở Infra** (623−600), Domain khớp tuyệt đối. Số 668 ở `WAL:22` là số THẬT.

**F-2 · HELD — bẻ gap-F1 (12/23 carry vắng).** Dựng lại độc lập bằng python. 🔸 **Lượt đầu THƯỚC CỦA TAO SAI** (regex `[carry:…]` ra 6) — suýt phán gap bịa. Đọc `:232` verbatim mới thấy 23 slug ở dạng backtick trần. Sửa extractor ⇒ **11 còn / 12 vắng, set trùng khít từng tên**. Không bác được.

**F-3 · BROKE (nhắm vào CÁO-BUỘC CỦA CHÍNH TAO) — "hai vai bịa số counter".** Đĩa lúc tao chấm ghi `deep_at=59` ⇒ theo bản này thì `19/15` và `deep_at=40` **đều sai** ⇒ đủ để quật cả stale-F5 lẫn §0 của gap. Kéo `git show HEAD:` ⇒ **`deep_at=40`, `counter=59`, `signal_session=S182`, `reset=false`, `kind=light`** — **6/6 khớp lời khai**. ⇒ **Nghi-vấn của tao SẬP.** Thủ phạm là `h24-signal-write` ghi **SAU** khi cặp đo. Bài lặp lần 3 (S162·S166·S185): **cây bẩn giữa phiên ⇒ chấm vai-đo phải kéo bản đúng-thời-điểm.**

**F-4 · BROKE (nhắm vào GAP, và cứu STALE khỏi tiếng "sót") — turf §7(1).** Coordinator gợi ý tìm SÓT-chéo, tao **suýt viết FLAG SÓT**. Mở đĩa: `HANDOFF:260` gạch `~~⚑ tools-whitelist no-teeth~~ ✅ ANH CHỐT (a) GIỮ NGUYÊN @S148` **nhưng NGAY SAU đó, cùng dòng, cùng cụm**: *"**CÒN MỞ 1 vế:** chờ hub xác nhận cơ-chế này có cố-ý không (đã báo §3(b))"* + slug dán trực tiếp vào vế ấy; `:259` nói rõ carry **THU HẸP** còn **DUY-NHẤT** vế chờ hub, *"KHÔNG còn vế chờ anh"*. ⇒ Carry **sống là ĐÚNG LUẬT**, không phải dư-lượng. **gap §7(1) = dương-giả**, và **stale IM LÀ ĐÚNG** — không phải bỏ sót. (Trớ trêu: đây đúng bẫy proximity mà chính gap cảnh báo ở §1 và đã tự loại 5 ca — lần này nó dính ở khối §7.)

**F-5 · HELD — thách-CLEAN VC-4** (chi tiết §5).

**F-6 · HELD — vế phụ của stale-F1** (*"3 closeout chạm STATUS mà không advance"*): `git show --name-only` cả 3 commit ⇒ **3/3 đều chạm** `docs/STATUS.md`. Không bác được.

---

## §4 — ENUM NIÊM-PHONG (nghĩa-vụ: 2 vai KHÔNG tự chế class)

Đọc LIVE `memory-budget.json` → `lead_self_audit.flag_classes` = **12 phần-tử** (6 `view-*` + 6 `gap-*`), có khoá `_sealed_P3B_S181` ghi *"Từ nay LỚP LỖI MỚI KHÔNG được thêm vào đây… đo lại bằng độ dài flag_classes"*.

- **16/16 FLAG dùng class ∈ enum. 0 tự chế.** stale dùng 4 tên (`view-stale-status`·`-header`·`-count`·`view-residual-asym`); gap dùng 4 tên (`gap-carry-dropped`·`-decision-sunk`·`-owner-specifics`·`-underfill`). Tất cả có mặt trong 12.
- **Hai chiều:** `set(class_repeat.counts)` = **12** ≡ `set(flag_classes)` = **12**, 0 khoá thừa/thiếu.
- Cả 2 vai **tự khai `0 escalate`** và **đọc đúng độ dài 12** (stale `:7` · gap `:20`) ⇒ tuân thủ đúng cách seal yêu cầu (đo độ dài, không chép tên).
- 🔴 Đúng luật `h24_cadence`: `light_every=6` · `deep_every=15` · `jump_on_class_repeat=3` — đọc từ **single-source**, cả hai vai không chép số.

---

## §5 — THÁCH-CLEAN (bắt buộc): mở **VC-4** — cái CLEAN dễ dối nhất

Chọn VC-4 vì nó tự nhận *"vá đúng chỗ hỏng, **0 dư-lượng một-phía**"* — tức nó tự chứng-nhận mình **không** thuộc class `view-residual-asym`. CLEAN kiểu này là loại nguy nhất.

Phép bác: tìm **bất kỳ site nào còn chép tay danh-sách class**.
```
grep -rln 'view-stale-count' .claude/commands/ .claude/agents/
  -> session-end.md · lead-stale-auditor.md · ring2-audit.md   (3 file "khả nghi")
```
Soi từng cái:
- `session-start.md:165` (stale) **và** `:166` (gap) — **CẢ HAI** ghi *"Class nhánh … **KHÔNG liệt-kê ở đây** — đếm từ khoá `lead_self_audit.flag_classes`"* ⇒ **đối xứng thật**, đúng lời VC-4.
- `session-end.md:69` — `view-stale-count` xuất hiện làm **ví-dụ trong một ghi-chú**, không phải bản sao enum ⇒ không phải dư-lượng.
- `lead-stale-auditor.md` **CÓ** bảng liệt 4 class (`:47-50`) < 6 của enum — **nhưng `:41` ngay trên bảng đã rào**: *"ĐỌC KHOÁ, **đừng đếm theo bảng dưới** — bảng dưới là bản-đồ ngữ-nghĩa, không phải nguồn đếm"* ⇒ bảng thiếu là **có khai**, không phải bẫy đếm.
- `lead-gap-auditor.md:31` cùng con-trỏ ⇒ hai vai đối xứng.

⇒ **VC-4 = CLEAN THẬT, tao thử bác và KHÔNG bác được.** (Đây chính là nhánh vá cho ca `:25` persona ring2 tao tự FLAG @S181-S182 — nay khép kín cả hai phía.)

---

## §6 — TURF §7 của gap (3 ca nhường `lead-stale-auditor`) — stale có bắt không?

| ca gap nhường | stale có bắt? | phán của tao |
|---|---|---|
| (2) `HANDOFF:12` header "20 carry" vs thân 23 | ✅ **CÓ** — chính là **F-6** | giao-nhận **KHỚP**, 0 rơi khe |
| (3) `STATUS:8` khối CURRENT còn `(S161→S168)` | ✅ **CÓ** — chính là **F-1** | giao-nhận **KHỚP** |
| (1) `[carry:tools-whitelist-no-teeth]` "sống sau khi owner đã phán" | ❌ không bắt | 🔴 **KHÔNG PHẢI SÓT — ca này là DƯƠNG-GIẢ của gap** (F-4): carry đã **thu hẹp có khai** còn 1 vế *chờ hub*, nên nó **phải** còn sống. **stale im là ĐÚNG.** |

⇒ **Khe giữa 2 vai lượt này KÍN**: 2/2 ca thật được vai nhận turf bắt trúng; ca thứ 3 lẽ ra **không nên được phát ra**. Khác hẳn seam-thủng S149 (honest-zero đẩy-turf rồi không ai ôm).

---

## §7 — ERRATA + FLAG-SÓT (ngoài tập 16, INFORM cho lead)

**TRƯỢT-1 (ngoài tập FLAG) — gap §7(1) dương-giả.** Xem F-4. Không tính vào TOTAL 6 của gap (gap đã tự loại §7 khỏi TOTAL — **đúng luật**), nhưng nếu lead cầm §7 đi vá thì sẽ **gỡ một carry đang có vế mở** ⇒ đúng lớp *"vá bằng cách xoá chứng-nhân"*. **Đề nghị lead KHÔNG thi hành §7(1).**

**SÓT-1 — `lead-stale-auditor.md:33` mang **cùng con số chết** với F-10.** stale chỉ FLAG `:47`. Nhưng `:33` (bảng *"Máy làm được / Máy MÙ"*) ghi ``"doc ghi 60 menu nhưng canonical 54"`` — **cùng cặp số đã chết** (canonical thật **113**; tiền-đề *"CLAUDE.md ~60 menu key"* đo @S173 = **0 hit**). Nấc thấp hơn `:47` (không mang con-trỏ dòng, và nằm trong ngoặc kép như *mẫu câu của máy* ⇒ ranh use⟂mention). 🔴 **Hại thật nằm ở chỗ khác:** nếu lead thi hành resolve của F-10 **đúng chữ** (chỉ sửa `:47`), thì **`:33` sống tiếp cách đó 14 dòng** ⇒ **chính bản vá đẻ ra `view-residual-asym` mới**, và F-10 sẽ tái phát **lần 4**. ⇒ **vá thì vá CẢ HAI site trong cùng lượt.** (Trùng hình dạng ca tao bắt @S181: bản vá tự đẻ residual-asym.)

**ERRATA-1 — stale-F2 vế *"3 window"*:** `STATUS:6` ghi `window 7` (thuộc L11) vs `WAL:2` `window-4` (thuộc L13). Hai bộ đếm **khác gốc**, trừ nhau không có nghĩa. Vế *"6 nhãn phiên + 2 phiên-LOGIC"* thì **đúng**. ⇒ **giữ FLAG, bỏ vế window.**

**ERRATA-2 — gap §4 đếm inbox:** gap ghi `ls broadcasts/inbox/**` = **70 tệp**; tao `find broadcasts/inbox -type f` = **76**. Hai tập-đo khác nhau (glob vs đệ-quy). **Không đụng kết luận** (0 tệp `2026-08-08`, mới nhất `2026-08-04` — cả hai khớp). Ghi để số không đi tiếp thành canonical.

**ERRATA-3 — pin lệch 19.589 → 19.903 B:** xem §0. Tao chấm bản đầy đủ.

**INFORM — `signal_last_kind` = `"light"` sau một vòng DEEP.** Máy đã set `light_at=deep_at=59` (ĐÚNG, deep bao hàm light) và `signal_session=S185`, nhưng `signal_last_kind` vẫn `"light"`. Không thuộc lỗi 2 vai H24 (đây là **lượt ghi của máy/lead**) ⇒ **escalate lead**, không tính vào verdict.

---

## §8 — TỔNG

**`RING2: 16 ĐẠT / 0 TRƯỢT trên 16 FLAG` (+1 TRƯỢT ngoài tập FLAG · 1 SÓT · 3 ERRATA · 1 INFORM).**
- falsify **6 phép: 4 HELD / 2 BROKE** — 🔴 **cả 2 BROKE đều bắn vào phía "dễ ăn" nhất nếu tao lười**: một vào **cáo-buộc của chính tao** (F-3), một vào **giả-thuyết coordinator gợi ý sẵn** (F-4 — được mớm "sót thì FLAG SÓT-chéo", đo ra thì ngược).
- tái-dựng **5 họ số: 5/5 KHỚP** (counter 6 khoá · `class_repeat` 12 khoá ×2 bản · `dotnet test` 668 · tập carry 23/11/12 từng phần-tử · headroom 3 số).
- enum: **16/16 trong 12 class niêm phong, 0 tự chế**; `counts` ≡ `flag_classes` **12/12 hai chiều**.
- thách-CLEAN: mở **VC-4** → **CLEAN thật**, không bác được.

🔴 **Câu dặn cho lead:** *16/16 ĐẠT = mọi FLAG **trúng vật thật**. Cái tao **KHÔNG** chứng được là **đã bắt hết** — coverage vai stale tự khai THỦNG (`STATUS` ~3 vùng/875 dòng · `HANDOFF` 40/598 · 27/28 persona chưa chạm). **10 là SÀN. Cấm đọc thành TỔNG.***

END — `RING2: 16Đ/0T per-FLAG · falsify 4H/2B · tái-dựng 5/5 khớp · enum 16/16 sealed` <!-- TOTAL=16 -->

