Files
solution-erp/.claude/workflows/runs/2026-08-09-S185-bookend-close/sub-ring2-audit.md
2026-08-10 01:52:51 +07:00

219 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 = 5940 = **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** (623600), 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 -->