# ring2-audit @open S180 — VERDICT: `RING2: 21Đ/0T`

> Recover từ **#53** (return đầu = "Confirmed — empty segments are skipped… Let me reproduce the detector's actual scoring."). Resume-in-session.
> PIN: `sub-lead-stale-auditor-open-S180.md` (mtime 12:57) + `sub-lead-gap-auditor-open-S180.md` (12:49) — cả 2 tươi, output ring2 sinh SAU ⇒ **tuần-tự C4b**.
> Enum: **21/21 class ∈ `lead_self_audit.flag_classes`, 0 tự chế**; `set(class_repeat.counts) ≡ set(flag_classes)` **12/12 hai chiều**.

## `lead-stale-auditor` — 15Đ/0T · `lead-gap-auditor` — 6Đ/0T
Tất cả verbatim-verified. Vài phép đáng ghi:
- **FLAG-3** datum (b) XÁC NHẬN: `STATUS:8` trỏ `:479` nhưng **`:479` = row "RAG chunks"**, row bundle ở `:481` ⇒ mỏ-neo tự-vô-hiệu **đúng như mô tả**.
- **FLAG-7** số học khớp tuyệt đối: `measured{}` 18 khoá / **17 non-underscore**, roster 26 ⇒ **17 + 9 = 26**; probe `reviewer-style` trong `measured{}` = `[]`.
- **FLAG-12** `grep -rn "2026-09-01"` = **ĐÚNG 3 site** (`CLAUDE.md:121` · `HANDOFF:152` · `HANDOFF:275`), `STATUS:833` = 0 hit.
- **FLAG-15** 🔸 mỉa mai đo được: `STATUS:19` — dòng mà persona neo nhầm — **đang nói về chính vòng-kiểm của ring2**.
- **FLAG-6 (gap)** `pull_warn_days` hit duy nhất nằm TRONG trường tự-sự `_session_ctx_kb_reader` (khoá `_`-prefix) ⇒ **không phải khoá sống** — xác nhận vế "khai tường minh nhưng chưa có nhà".

## FALSIFY — 3 HELD / 3 BROKE (**2/3 BROKE nhắm vào CHÍNH ring2**)
- 🔴 **BROKE — giả-thuyết của chính ring2** (thứ nằm trong mẩu garble): nghi `lead-gap` FLAG-2 sai vì `.ps1:907` có `if ($ks.Count -gt 0)` ⇒ segment rỗng bị bỏ ⇒ `carryLines[0] ≠ segs[0]`. Port đủ cả luật bỏ-rỗng: **vùng mù do `marks[0].Index` quyết định, ĐỘC LẬP HOÀN TOÀN với luật bỏ-rỗng** ⇒ 21,3% KHÔNG đổi. `carryLines[0]` thật = segment dòng **186** (`**🔴 NEXT anh @S158`), **đúng 5 slug**, có `adap-apply-2-thu` — **y hệt vai mô tả**; vai **chưa bao giờ** tuyên `carryLines[0]==segs[0]`.
  ⇒ **Trả lời thẳng câu lead hỏi: vùng mù VẪN THẾ, cơ-chế vai mô tả CŨNG ĐÚNG** — không thổi phồng, không thu nhỏ.
- 🔴 **BROKE — bằng-chứng của `lead-gap` FLAG-1:** vai viết *"`git log -5` → commit thật cuối = `1b85713` (S151) ⇒ chưa từng vá"*. `git diff 1b85713 febe6b1 -- scripts/governance-detectors.ps1` = **16+/5−** (bản vá C11(b) @S159, land trong commit hook `febe6b1 wal: pause`). **Tệp ĐÃ đổi sau S151.** Suy-luận *"commit-THẬT cuối = S151 ⇒ chưa vá"* **vô hiệu** — nó cũng sẽ giấu một bản vá THẬT nếu bản vá rơi vào commit `wal:`. **Phán quyết sống sót CHỈ VÌ ring2 đo lại đĩa tươi**, không vì lập luận của vai. 🔗 Cùng lớp `feedback_absence_looks_like_clean` (S177: `HEAD~n` ≠ commit-trước-của-mình vì hook `wal:` chèn giữa).
- 🔴 **BROKE — con số của chính ring2:** đếm migration lượt đầu ra **71**, suýt tố lead sai. Nhật-ký S166 của chính nó đã ghi bẫy `grep -v Snapshot` nuốt `AddPeApprovedBudgetSnapshot`. Đếm đúng = **72**. **Lead ĐÚNG.**
- **HELD** — thử bác trọng-tài FLAG-8 bằng cách tìm nhà canonical nào **phục hồi** cổng consent sau S152: không bác được; **ngược lại tìm ra site làm nó MẠNH HƠN**.
- **HELD** — `grep -c consent .claude/workflows/hmw.js` = **1** ⇒ mệnh-đề "duy nhất" của FLAG-9 đứng.
- **HELD** — `git diff .session-counter.json`: phiên này chỉ đổi `counter`/`last_ticked_*` + 1 entry `history[]`; khối `class_repeat.counts` **không bị chạm** ⇒ bảng tally vai chép đúng là "TRƯỚC lượt này".

## TÁI-DỰNG — port H24-2 đầy đủ: **10/10 KHỚP**
| vai cite | ring2 đo |
|---|---|
| `marks[0]` ở HANDOFF:172 | **172** |
| vùng mù 0..34.855 / 163.546 = 21,3% | **34855 / 163546 = 21,31%** |
| 66 occurrence / 25 slug distinct | **66 / 25** |
| control 285 occ / 54 distinct | **285 / 54** |
| `^\*\*…NEXT` → 25 match | **25** |
| heading bỏ tại 29·57·110·144 | **29 · 57 · 110 · 144** |
| `carryLines[0]` 5 slug có `adap-apply-2-thu` | dòng 186, **5 slug**, có |

Thêm: `Carry @S179` ở **dòng 37 và 69** — xác nhận **cả hai nằm TRONG vùng mù**. Chấm điểm streak đúng `.ps1:916-931` với M=6: cả 5 slug đều `[ok]` (streak 2/1/1/1/3) ⇒ **`gap-carry-aged=0` đúng là số 0 vô nghĩa**.
Bảng tally 6 class: **6/6 KHỚP BYTE-EXACT** với `class_repeat.counts`.

🔴 **SỐ KHÔNG TÁI-LẬP ĐƯỢC — `lead-stale` "5/6 vượt ngưỡng jump":** ring2 cộng dồn ra **4/6** (count 15 · status 10 · asym 13 · header 7 vượt; **role-desc = 2 < 3 KHÔNG vượt**; broader = 1). Theo đơn-vị *lần fire trong lượt này* thì chỉ `view-stale-count` (5 lần) đạt. **Vai KHÔNG khai đơn-vị** ⇒ ring2 ghi **chưa-tái-lập-được**, KHÔNG phán bịa.
⇒ **15 FLAG vẫn ĐẠT** (phán quyết không phụ thuộc số này), nhưng **lead ĐỪNG dùng "5/6" làm căn-cứ kéo audit** cho tới khi vai khai đơn-vị.

## 🔴 2 ERRATA cho `lead-gap` (bắt buộc chuyển — KHÔNG đổi phán quyết)
- **ERRATA-1 · FLAG-1:** BỎ mệnh-đề *"`git log -5` → `1b85713` ⇒ chưa từng vá"*. Thay bằng đo trực tiếp: *"regex `:892` + vòng dựng segment `:893-898` **trên đĩa HÔM NAY** vẫn cắt từ `marks[0]` ⇒ bug sống"*.
- **ERRATA-2 · FLAG-2:** nhãn **đơn-vị sai**. `34.855 / 163.546` là **code-point**, KHÔNG phải byte. Byte thật = **40.545 / 184.668 = 21,96%**; .NET `String.Length` = 34.922/163.795 = 21,32%. Cả 3 đơn-vị đều ~21-22% ⇒ **kết luận không đổi**, chỉ chữ "byte" phải sửa. (Đơn-vị native của detector là **UTF-16** vì `Get-Content -Raw` trả .NET string.)

## 🔴 THÁCH-CLEAN — `lead-gap` CÓ soi hụt: **1 FLAG SÓT**, class nó không hề gọi tên
**`gap-incident-unrecorded` — MED.** Enum có **6** class `gap-*`. Vai FLAG 3, khai CHƯA-ĐO 2 ⇒ **class thứ 6 vắng mặt IM LẶNG** (không FLAG, không honest-zero, không trong khối CHƯA ĐO).
**Và nó SỐNG thật phiên này** — sự-cố #53 quật 5-6 vai. Đo 5 bề mặt:
```
.claude/WAL.md:22                      → CÓ
docs/governance/error-ledger.md (S180) → 0
docs/STATUS.md  "S180"                 → 0
docs/HANDOFF.md "S180"                 → 0
.claude/sessions/session-12/_end       → chưa tồn tại
```
⇒ sự-cố sống trên **ĐÚNG MỘT bề mặt = WAL**, mà **WAL reset trắng ở closeout**. Đây **CHÍNH XÁC** cơ-chế mất mát mà `HANDOFF:9` được đẻ ra để vá (*"specifics chỉ sống trong WAL … suýt mất cả 6"*, vá `lead-gap` FLAG-4 @S179). **Cùng lớp, tái phát, ở chính vai từng bắt nó.**
🔸 Thêm: `WAL:22` ghi **"5/5 vai"** — ring2 là vai thứ **6** dính #53 ⇒ **con số stale ngay lúc viết**.
🔸 Công bằng với vai: 2 class khai CHƯA-ĐO (owner-specifics cần transcript · underfill cần read-set) là **đắt thật**. Bất-đối-xứng ở chỗ `gap-incident-unrecorded` **rẻ** (5 lệnh grep) mà không được gọi tên — **lệch về phía làm FLAG-count nhỏ đi**.

**Đánh giá chênh 15 vs 6:** sau khi cộng FLAG sót → 15 vs 7. `lead-gap` **đo SÂU hơn** trên mỗi FLAG (8 CONTROL, tự bác 1 thước, tự bác 1 FLAG dương-giả trước khi phát) — **vấn đề của nó là PHỦ, không phải SÂU**.

## 🏛️ TRỌNG-TÀI-CHÉO — ĐỒNG Ý `lead-stale` FLAG-8 + FLAG-9, **và tìm được bằng chứng MẠNH HƠN**
Ring2 vào ca với **định-kiến ngược** (vai-kiểm phán ủng hộ lead = chỗ đáng nghi nhất). Đo xong vẫn kết: **lead ĐÚNG, `tooling-auditor` SAI.**
- 5 site `lead-stale` cite: xác minh **verbatim 5/5**.
- 🔴 **SITE THỨ 5 RING2 TỰ TÌM, QUYẾT ĐỊNH HƠN CẢ 4 SITE KIA:** `.claude/commands/session-end.md:160` — *"AUTO 1 vòng/phiên GIỮA 2 bookend (owner chốt @S151…): **trio KHÔNG còn consent-per-run**."*
  **Vì sao quyết định:** dòng bị tố `README:152` **tự trỏ về HAI nhà** — *"@session-start §2.1.9 / @session-end §L.b(k)"*. `lead-stale` chỉ đo **nhà thứ nhất**. Ring2 đo nốt **nhà thứ hai: cũng AUTO** ⇒ dư-lượng lệch **CẢ HAI NHÀ NÓ TỰ KHAI**, không còn đường đọc nào cứu. (+`session-end.md:166` · `:191`.)
- Tiền-đề `tooling-auditor` sai đo được: `:271` gọi tên **V3 trio** riêng; lineage ghi **trio gỡ @S151**, ring1/sleep gỡ @S152 ⇒ **trio bị gỡ TRƯỚC, bằng quyết định RIÊNG**.
- Bất-đối-xứng nội-cây: **3/4 nút đã lật**, chỉ `:152-153` giữ consent.
- **FLAG-9** vế H24 chết @S149 — `session-start.md:244` + `session-end.md:119` (*"HÌNH B — MỌI closeout, KHÔNG cổng nhịp light, KHÔNG consent"*).
- 🔸 **Khai mặt kia:** ring2 đồng ý với lead ở ca lead **có lợi khi mình đúng**. Cái giữ khỏi thiên vị: **đi tìm bằng chứng BÁC** (nhà canonical nào phục hồi consent), không đi tìm bằng chứng ủng hộ; và **đọc nhà thứ hai mà cả lead lẫn vai đều bỏ qua**. *"Nếu `session-end §L.b(k)` mà nói consent thì tao đã phán ngược."*

## TỰ-KHAI XUNG-ĐỘT
1. 🔴 **Persona CỦA CHÍNH RING2 stale — cùng class FLAG-15, và `lead-stale` KHÔNG bắt** (nằm trong 22/26 persona chưa chạm).
   `.claude/agents/ring2-audit.md:4` — *"…(view LỆCH source, **5 class `view-*`**)"*. Đĩa: `flag_classes` có **6** class `view-*`. Lặp ở bề mặt thứ hai `agent-memory/ring2-audit/MEMORY.md:27`. **Cả hai auto-inject mỗi lần spawn.** Ring2 bắt @S173, sống thêm 7 nhãn phiên.
   🔴 **LOAD-BEARING ĐÚNG PHIÊN NÀY:** `lead-stale` FLAG-13 dùng class **`view-claim-broader-than-sample`** — đúng class thứ 6 mà baseline của ring2 phủ nhận. *"Nếu tao tin số được nạp vào đầu mình, tao đã có căn-cứ **phán oan FLAG-13 là tự-chế class**. Tao không phán oan vì đọc enum từ `memory-budget.json` trước khi chấm — nhưng đó là **kỷ-luật, không phải hàng rào**."* Class `view-stale-count`, MED. Vá **cả 2 bề mặt** một lượt.
2. **Ring2 là ĐỐI-TƯỢNG của một FLAG nó đang chấm** — `lead-gap` FLAG-5 về 4 vai over-cap: `ring2-audit/MEMORY.md` **26.440 B** là một trong 4. Vẫn chấm ĐẠT vì phép đo độc lập ra đúng 4 vai và đúng `26.803` là số bị bỏ; **lead phải biết ring2 ở trong tập bị đo**.
3. Xác nhận **strike 1/2** trên đĩa: `agent-memory/ring2-audit/` chỉ có `MEMORY.md`, **0 `archive/`** ⇒ 0 `_INDEX`, 0 gist — vai duy nhất thiếu.
4. **no-self-exempt** giữ: không tự soi lead trực tiếp, mọi phán quyết neo vào output 2 vai H24.
5. **read-only:** 0 tệp ghi trong repo; 2 script port ở scratchpad ngoài repo. Nhắc `[carry:tools-whitelist-no-teeth]` — backstop THẬT = lead soát `git status`.
6. 🔴 **Giới hạn KHÔNG vượt (đừng đọc thành đã đo):** (a) **không curl prod** — FLAG-3 chấm ĐẠT dựa trên **mâu thuẫn NỘI-FILE**, đủ kết luận *một trong hai stale*, **KHÔNG đủ** kết luận cặp nào là thật; (b) **không** xác minh `HANDOFF:5` có phải nguồn `tiep_reload.sources`; (c) "5/6 vượt ngưỡng" = **chưa-đo, không phải sai**.

## Câu dặn của ring2
> **21/21 ĐẠT nghĩa là mọi FLAG đều trúng vật thật và gán đúng enum — KHÔNG nghĩa 2 vai đã bắt hết.**
> Bằng chứng: mở **đúng một** persona trong 22 persona chưa ai chạm → ra ngay 1 FLAG; soi **đúng một** class không được gọi tên → ra thêm 1 FLAG.
> **Cái đo được là ĐỘ CHÍNH XÁC; cái chưa ai chứng được là ĐỘ PHỦ.**
