RING2: 7Đ/3T/14KC trên 24 claim

# RING2-AUDIT @open S189 (L15, window 1) — vai KIỂM vòng soi-lead H24, nấc DEEP

> Vai `ring2-audit` (C4/C4b). 🔴 Tao KIỂM **2 con-đo H24**, KHÔNG soi LEAD trực tiếp. Propose-only: 0 Write/Edit ngoài file này, 0 RAG-write. Lead VERIFY→APPEND (B3).
> 🔴 Luật ghi: **đổ ruột NGAY từng claim** (chống #53 — phiên này #53 trúng 6 lượt return).

---

## §0 · PIN (fail-closed) — verify TỒN-TẠI trước khi chấm

| vật | byte đo | dòng | mtime | `== HẾT ==` | `^## FLAG-` đếm máy | TOTAL tự khai |
|---|---|---|---|---|---|---|
| `sub-lead-stale-auditor-open-S189.md` | **39.195** | 452 | 00:09 | ✅ | **11** | 11 ✅ |
| `sub-lead-gap-auditor-open-S189.md` | **31.630** | 335 | 00:13 | ✅ | **7** | 7 ✅ |

⇒ **PIN ĐẠT.** Cả 2 trọn, dấu cụt không có, `grep`-count == TOTAL (chặn rủi-ro **pin-bản-cắt 4-A** tao tự nêu @S152). Tuần-tự C4b: mtime file tao > 00:13 ⇒ chạy **SAU** cặp, không song song.

🔸 **ERRATA-0 (brief của lead, không phải của con-đo):** brief pin `39.234 B`; đĩa đo **39.195 B** (lệch **39**). Nội dung trọn nên không ảnh hưởng verdict — nhưng số byte trong brief **không tái lập được**.

**Enum ĐÓNG — ĐẾM LIVE từ khoá** (`.claude/agent-memory/memory-budget.json` → `lead_self_audit.flag_classes`), KHÔNG chép số:

```
view-stale-count · view-stale-status · view-stale-header · view-stale-role-desc · view-residual-asym
gap-carry-dropped · gap-carry-aged · gap-owner-specifics · gap-decision-sunk · gap-underfill
gap-incident-unrecorded · view-claim-broader-than-sample
COUNT = 12   (6 view-* + 6 gap-*)
```

`h24_cadence` đọc live: `light_every=6 · deep_every=1 · jump_on_class_repeat=3` ⇒ nấc **DEEP** của lượt này hợp lệ (deep_every=1 ⇒ mọi bookend deep).

---

## §1 · ENUM-GATE — 18/18 class, đối chiếu MÁY (không đọc mắt)

Trích class bằng regex trên chính 2 artifact (`^## FLAG-n · SEV · \`class\``), rồi kiểm tư-cách thành-viên với `set(flag_classes)`:

```
18 class assignment  ->  OUTSIDE enum = []      (0 tự chế)
in-enum = 18/18                                 enum size = 12
```

| nhánh | phân rã ĐẾM-MÁY từ heading | tự khai ở dòng END | khớp? |
|---|---|---|---|
| stale | `view-stale-count` 4 · `view-residual-asym` **2** · `view-stale-status` 2 · `view-stale-header` 2 · `view-stale-role-desc` 1 | …`view-residual-asym` **3**… | ❌ **lệch 1** |
| gap | `gap-carry-dropped` 3 · `gap-decision-sunk` 2 · `gap-owner-specifics` 1 · `gap-incident-unrecorded` 1 | y hệt | ✅ |

🔴 **A1 (mặt-bằng, KHÔNG phải per-FLAG) — bảng class của `lead-stale` cộng ra 12 trên 11 FLAG.** Trong thân (`:425`) nó ghi `view-residual-asym | 3 | 9 · 10 · (1 phần)` — *"(1 phần)"* = đếm ké FLAG-1, mà FLAG-1 đã được đếm ở `view-stale-status`. Trong thân có caveat nên **không phải bịa**; nhưng **dòng END `:450` in phẳng `view-residual-asym 3`, caveat rụng mất** — và dòng END chính là dòng lead chép. `4+3+2+2+1+0 = 12 ≠ TOTAL 11`.
**Giới hạn hại (khai sòng phẳng, không nống):** đơn-vị tally = **audit LIÊN-TIẾP/class**, không phải flag-count ⇒ class này fire `+1` dù 2 hay 3 ⇒ **tally KHÔNG sai**. Hại thật = tính toàn-vẹn của bảng dùng để *"lead tính `jump_on_class_repeat`"*. ⇒ xếp **ERRATA-1 cưỡng-hành**, không hạ FLAG nào.

---

## §2 · 4 CLAIM LOAD-BEARING — tái dựng bằng lệnh KHÁC

### C-1 · gap FLAG-1 · `ring5` 0 hit @open / 6 hit @close — **ĐẠT, byte-exact 2/2**

Vai đo bằng `grep -oi … | wc -l`. Tao đo bằng **đường khác**: python `re.findall(re.escape('ring5'), text, re.I)` trên toàn file, và **mở rộng tập-đo sang cả 4 cửa lệnh** (vai chỉ đo 2):

| token | `session-start.md` | `session-end.md` | `tiep.md` | `pause.md` |
|---|---|---|---|---|
| `ring5` | **0** | **6** | 0 | 1 |

⇒ **2/2 số của vai khớp tuyệt đối.** Control-dương của vai (`bảng-nhãn` = 1 ở `session-start`) tao tái dựng: **1** ✅ ⇒ không phải "grep sai chữ".

🔴 **Tao đi TÌM ĐƯỜNG BÁC mạnh hơn vai — và không bác được.** Giả-thuyết phản: *"ring5 vẫn được gọi @open dưới TÊN KHÁC"* ⇒ quét `session-start.md` (389 dòng) tìm mọi vai-KIỂM có mặt:
```
ring1 = 2 · ring2 = 5 · ring4 = 3 · harness-audit = 4 · ctx-audit = 5 · ring5 = 0 · score-count = 0
ritual = 1   (không phải cửa gọi vai)
```
⇒ **5 vai-KIỂM anh em ĐỀU có mặt ở cửa @open; đúng `ring5` vắng.** Đây là bằng chứng **mạnh hơn** cái vai đưa: không phải "file không nhắc vai nào", mà là **file nhắc mọi vai TRỪ nó** ⇒ loại sạch bào-chữa *"cửa @open vốn không liệt vai"*.

🔸 **Sắc thêm 1 nấc vai không nói:** `pause.md` có **1** hit `ring5` ⇒ tổng phủ thật = **2/4 cửa** (end + pause), không phải 1/4. Điều này **không cứu** RCA: chữ tuyên là *"ring5 chấm **mỗi phiên**"*, mà cửa @open — đúng cửa vừa xảy ra vi phạm — vẫn **0**. ⇒ FLAG-1 **giữ nguyên**, chỉ **nâng độ chính xác của mẫu số**.

**VERDICT C-1: ĐẠT** (FLAG có thật · class `gap-incident-unrecorded` ∈ enum · cơ-chế truy đúng).

---

### C-2 · gap FLAG-4 · YC-027 land 2/4 cửa — **ĐẠT** (4/5 ô byte-exact, 1 ô under-count của chính vai)

Tự grep 4 file lệnh × 5 token, đường độc lập:

| token | `session-start` | `session-end` | `tiep` | `pause` | vai khai | khớp? |
|---|---|---|---|---|---|---|
| `YC-027` | 1 | 1 | **0** | **0** | 1/1/0/0 | ✅ |
| `PN-001` | 1 | **2** | **0** | **0** | 1/1/0/0 | ⚠️ vai đếm **1**, đĩa **2** |
| `TRỌN VẸN` | 1 | 1 | **0** | **0** | 1/1/0/0 | ✅ |
| `ONE-SHOT` | 2 | 2 | **0** | **0** | 2/2/0/0 | ✅ |
| `YC-026` | **0** | **0** | **0** | **0** | 0/0/0/0 | ✅ |

⇒ **Kết luận "2/4 cửa, `/tiep`+`/pause` = 0 token" ĐÚNG TUYỆT ĐỐI** — 10/10 ô của 2 cửa trống đều = 0, control-dương 4 token đều dương ở 2 cửa kia.
🔸 **ERRATA-2:** ô `PN-001 @session-end` vai ghi **1**, đĩa **2** (cả 2 nằm trong `session-end.md:13`, cùng một dòng RULE). Lệch **về phía làm mẫu-số nhỏ đi** ⇒ **không** thổi FLAG; chỉ là đếm hụt. Verdict không đổi.

Verify chữ owner tồn tại thật: `session-start.md:13` + `session-end.md:13` đều mang nguyên văn *"các cái command phải đc thực hiện trọn vẹn tao ko chấp nhận bất cứ 1 lý do nào"* ⇒ luật CÓ land 2 site, và **CHỈ** 2 site.

**VERDICT C-2: ĐẠT** (class `gap-owner-specifics` ∈ enum; discriminator "lượng từ số nhiều" là đọc-đúng chữ owner).

---

### C-3 · stale FLAG-10 · detector bám mốc CŨ vì emoji trong cặp `**` — **ĐẠT, tái dựng bằng cách MẠNH HƠN vai**

Vai **đọc output máy**. Tao **KHÔNG chạy máy** — tao **port regex ra python và tự chấm trên chính file** (đường thứ 2, độc lập với việc máy có chạy hay không):

`scripts/governance-detectors.ps1:610` (đọc thẳng, byte-exact):
```
'\*\*Last updated:\*\*\s*(\d{4}-\d{2}-\d{2})'
```

Áp regex đó lên `docs/HANDOFF.md` (668 dòng, 11 dòng chứa chuỗi `Last updated`):

| dòng | hình dạng thật | regex `:610` khớp? |
|---|---|---|
| `:5` | `**🆕 Last updated:** 2026-08-10` | ❌ **KHÔNG** — `🆕 ` nằm TRONG cặp `**` |
| `:183` | `**Last updated:** 2026-08-01 tối` | ✅ **KHỚP** → 2026-08-01 |
| `:218` `:254` | `**🧊 (Last updated cũ)** …` | ❌ (đã giáng cấp ĐÚNG cách) |
| `:300` `:305` `:310` `:313` `:322` `:327` | `**Last updated (kỳ S…):**` | ❌ (chèn `(kỳ …)` trong cặp `**`) |

⇒ **trong toàn `HANDOFF.md`, dòng DUY NHẤT khớp anchor-pattern là `:183` = 2026-08-01.** Mốc thật `:5` = 2026-08-10 **không đọc được**. Cơ-chế vai mô tả **đứng vững by-construction** — tao không cần tin output máy.

🔴 **Hệ quả tao xác nhận và ĐÓNG DẤU:** mọi verdict `title-freshness` phiên này (2 dòng `rag-setup-plan.md:4` · `form-engine/SKILL.md:15`, *"35 SESSIONS behind"*) tính trên mốc-phải thấp **9 ngày** ⇒ là **CẬN-DƯỚI**. Cấm đọc H24-1 phiên này thành *"chỉ 2 doc hơi cũ"*.
🔸 Nấc tao **không** chấm: `:218`/`:254` được giáng còn `:183` thì không — bất-đối-xứng vai nêu là **đúng hình dạng** (tao xác nhận 2 dòng kia có `🧊`), nên class `view-residual-asym` **hợp lệ**, KHÔNG phải ép-vừa-enum.

**VERDICT C-3: ĐẠT** (FLAG thật · cơ-chế truy tới dòng code · ranh "không sửa regex, turf `tooling-auditor`" giữ đúng).

---

### C-4 · stale FLAG-9 · frontmatter 2 vai H24 còn câu đã bị tuyên SAI — **ĐẠT, và tao suýt phán TRƯỢT OAN**

Đo trực tiếp trường `description:` (block scalar `|`, thân = đúng dòng 4):

```
lead-stale-auditor.md:4  (1.174 ký tự)  ->  "…Chạy theo NHỊP (`h24_cadence`), KHÔNG mỗi phiên.…"   offset 800
lead-gap-auditor.md:4    (1.239 ký tự)  ->  CÙNG NGUYÊN VĂN                                        offset 873
grep "KHÔNG mỗi phiên" toàn .claude/agents/*.md  ->  ĐÚNG 2 hit, cả 2 ở dòng :4 của 2 file này
```
⇒ chuỗi này **chỉ sống trong 2 frontmatter**, 0 nơi khác trong roster 29 persona ⇒ đúng hình dạng *"dư-lượng sau vá một phía"*.

Đối chứng phía source (3 bề mặt, tao đọc thẳng):
- `lead-stale-auditor.md:54` = `## Nhịp — mày chạy **MỖI phiên, ở CẢ HAI bookend** (HÌNH B @S149)` ✅
- `:56` = `spawn **VÔ-ĐIỀU-KIỆN** … không bộ-đếm nào phải tới hạn` ✅
- `:60` = khối 🧊 vá @S153 tuyên bản cũ là **"khẳng-định phủ-định SAI"** ✅

🔴 **FALSIFY BROKE VÀO CHÍNH TAO — ghi lại vì đây là lần thứ 3 cùng một bẫy.** Tao in `session-start.md:175` và `:274` **cắt ở 250 ký tự**, thấy nội dung khác hẳn cái vai trích ⇒ đã định phán **TRƯỢT vì cite sai neo** (và ghi chú "tái phạm class S162 F-3 offset-gõ-tay"). Đọc TRỌN dòng (`:175` dài **380**, `:274` dài **1.087**) thì cụm nằm ở đuôi, **verbatim khớp 100%**:
```
:175  "Nhịp: **cặp light = VÔ-ĐIỀU-KIỆN mỗi bookend** (hình B) · **deep = theo `h24_cadence.deep_every`**"
:274  "cặp soi-lead (…) spawn **VÔ-ĐIỀU-KIỆN mỗi đầu phiên** — KHÔNG còn cổng OVERDUE(light)"
```
⇒ **cite của vai ĐÚNG; cáo buộc của tao SAI.** Đây là **tái phát bài S159 (mega-line `cut` ngắn) và S186 (`README:67` 400 ký-tự)** — tao vấp lại đúng chỗ lần thứ 3. Luật tự áp, ghi to: **CẤM phán cite-sai trên dòng chưa đọc HẾT ĐỘ DÀI.**

Verify nốt vế thứ 2 của FLAG-9 (bảng "2 đợt vá"):
```
đếm dấu · trong danh-sách dấu-hiệu ở :4  ->  4 dấu = 5 dạng      (khớp "liệt 5 dạng")
'broader-than-sample' trong :4            ->  KHÔNG có (cả 2 file)
'broader-than-sample' trong THÂN stale    ->  CÓ ; bảng ^| `view-  ->  6 dòng
```
⇒ **đúng: S180 thêm dòng thứ 6 vào bảng THÂN, `:4` vẫn 5 dạng.** Bất-đối-xứng 2 đợt vá **có thật, đo được**.

**VERDICT C-4: ĐẠT** (class `view-residual-asym` ∈ enum, và là ca **tự-quy-chiếu** vai tự soi mình — ghi nhận).

---

## §3 · THÁCH-CLEAN #1 — `gap-carry-aged = 0` · **TRƯỢT nhãn, KHÔNG trượt số**

🔴 Đây là ca nguy nhất của lượt (CLEAN "lead ổn"). Tao **chạy lại máy thật**, không đọc lời khai.

### (a) Số của vai — ĐÚNG TỪNG CON
```
powershell -File scripts/governance-detectors.ps1   ->  H24-2 block
  M = h24_cadence.light_every = 6 (read from config, not hardcoded)
  HANDOFF logic-segments (pre-marker + NEXT anh/em) = 26 ; of those, carry-lines = 19
  [ok] L7-bolt: carry anchor S188 vs doc newest S188 (gap 0 <= 1)
  max streak = 4  ->  'adap-apply-2-thu'      (ctx-t9-dogfood 3 · hmw-* 2 · ring5-audit-gap 2)
  phân bố streak: {1: 51, 2: 3, 3: 1, 4: 1}
```
⇒ `26` ✅ · `19` ✅ · `L7-bolt gap 0<=1` ✅ · **streak 4 CÓ THẬT** ✅ · **0 slug chạm M=6** ✅. Máy **có chạy**, số **không bịa**. Khác thật S185 (*KHÔNG ĐO ĐƯỢC*) và S180/S182 (*0 chế tạo*).

### (b) 🔴 NHƯNG "vacuous" ĐÃ ĐỔI HÌNH — và cả 2 vai đều không thấy

Vai kiểm hình cũ (S122: *ít segment ⇒ 0 fire*) rồi kết luận sạch. Tao đo hình MỚI: **streak ≠ tuổi**.

```
[carry:*] trong docs/HANDOFF.md   ->  377 thể hiện · 60 slug unique
máy streak-đo                     ->  56 slug
streak = 1                        ->  51/56  =  91%
```

**91% slug nằm ở streak=1 ngay SAU commit `ef1d4fbb` — commit có subject *"RE-STAMP 47 slug dựng-từ-nguồn"*.** Re-stamp kéo slug từ khắp file vào segment mới nhất ⇒ với slug đã vắng vài segment gần đây, đồng-hồ **về 1**.

🔴 **NHÂN CHỨNG TỰ TỐ — chọn được vì nó mang đúng tên bệnh:** `[carry:carry-age-vacuous]`
```
máy hôm nay          ->  [ok] carry 'carry-age-vacuous' streak=1 < M=6      (đọc = TƯƠI)
đĩa (HANDOFF)        ->  hiện ở :17 :93 :306 :311 :328 :332 :336 :341 :345 :349 :353 :354 :366 :386
                         re-stamp liên-tục từ khối "@S124-era" (:386 ghi "Counter=3") tới nay
```
⇒ một carry **mở xuyên ~65 nhãn phiên** được máy chấm **streak=1**. Và nội-dung của chính nó là *"carry-age design-question — detector 0-fire vì tiering<M=6: hạ M hay non-tiered-ledger?"* ⇒ **câu hỏi thiết-kế treo từ S124 vẫn treo, và cơ-chế đo nó vẫn không thấy nó.**

**Phán:** con số `0` **ĐÚNG**; nhãn **"honest-zero THẬT"** là **claim rộng hơn mẫu**. Máy chỉ chứng *"0 slug có 4+ segment LIÊN TIẾP"*, **không** chứng *"0 carry quá già"*. Sau một lượt re-stamp 47 slug, hai mệnh đề đó **tách hẳn nhau**.
⇒ Đúng hình `view-claim-broader-than-sample` (enum, mở @S172). 🔸 Ghi ranh: `lead-stale` báo class này **0** là **hợp lệ theo turf của nó** (nó soi bề mặt LEAD, không soi artifact vai kia) — tao **không** tính đó là lỗi của stale; tao tính đây là **sót của gap** (tự-khai-sạch quá tay).

**VERDICT CLEAN-1: TRƯỢT** (số ĐẠT · nhãn TRƯỢT). **Đây là FLAG tao trả về mà cặp H24 không có.**

---

## §4 · Đếm carry — **3 con số, và cách đếm nào đúng** (TRƯỢT)

| con số | nghĩa THẬT | ai dùng |
|---|---|---|
| **19** | `carry-lines` = số **DÒNG** có carry **bên trong 26 logic-segment** | cả 2 vai chép ra thành *"19 carry"* |
| **56** | số **SLUG** máy thực sự đo streak (`carry '<slug>' streak=`) | **không vai nào nhắc** |
| **60** | số slug `[carry:*]` **unique toàn `HANDOFF.md`** (377 thể hiện) | không ai nhắc |

- `lead-stale` NỀN-MÁY `:17` viết thẳng: *"H24-2 carry-age: **19 carry**, streak cao nhất 4"* ⇒ **sai đơn-vị**: `19` là DÒNG, không phải carry.
- `lead-gap` chép **đúng nguyên văn** dòng máy (*"logic-segments = 26 · carry-lines = 19"*) — đọc kỹ thì không sai — nhưng kết luận đứng cạnh *"0 slug chạm M=6"* khiến 19 **được hiểu thành mẫu số**.

🔴 **Xếp thành CLASS chứ không thành con số** (đúng chỉ đạo): đây là **lần thứ 3 liên-tiếp** cùng một trục *"đếm carry ra số khác nhau tuỳ thước"* — S185 khối RE-STAMP ghi **20** khi đếm được **23** · S188 dựng-từ-nguồn ra **47** · S189 máy in **56** trong khi 2 vai báo **19**. Ba lượt, ba thước, **chưa lượt nào khai mình đang đếm ĐƠN-VỊ gì**.
🔸 **Chiều lệch có lợi cho verdict:** 19 < 56 ⇒ vai báo **HỤT** phạm vi máy, tức honest-zero được chứng bởi **nhiều** dữ liệu hơn lời khai. Sai đơn-vị **không** thổi phồng CLEAN. Nhưng nó vẫn là số load-bearing sai trên dòng lead chép.

**VERDICT §4: TRƯỢT** (đơn-vị sai, tái phát 3 lượt) — **resolve rẻ:** dòng nào in `carry-lines` thì ghi kèm `slug-streak-measured = N`.

---

## §5 · THÁCH-CLEAN #2 — `gap-underfill` bị TỪ CHỐI báo · **ĐẠT: từ-chối ĐÚNG NẤC, không phải né**

Tao thử 3 phép để bác lời từ-chối, **cả 3 đều củng cố nó**:

1. **Có bề mặt đĩa nào mang %-print không?** → `run.md` chứa **0** ký tự `%`. Quét cả 8 artifact run-folder: file DUY NHẤT nhắc `hot-feed`/`pct_print` là **chính artifact của gap**. ⇒ **không có** vật để đo. Lời khai đúng.
2. **Định nghĩa under-fill có cho phép suy từ headroom không?** → đọc thẳng `token_governor.pct_print._note`:
   > *"Headroom > 0 **WHILE** high-value content still unloaded = under-fill (WRONG)"*
   ⇒ under-fill là **HỘI của 2 vế**. Gap đo được vế-1 (floor 6 nguồn `772.334 B` vs `lead_tokens 380.000`), **không** đo được vế-2. Câu nó viết — *"còn chỗ ≠ nạp thiếu"* — là **đúng nguyên văn định nghĩa của config**, không phải lý sự.
3. **Có phải né việc không?** → không: nó (a) đo được **mẫu số thật**, (b) chỉ đích danh thước thiếu (`§2.1.6` `session-start.md:229`), (c) nêu **điều kiện mở khoá falsify-được** (*"đo được nếu §2.1.6 ghi 1 dòng % xuống run.md"*). Né việc = 0 phép đo + 0 đường ra. Đây có **cả hai**.

🔴 Và nó **từ chối đúng chiều nguy hiểm**: báo `0` ở ô này sẽ bị đọc thành *lành*, đúng bẫy `absence_looks_like_clean`. **Ghi `KHÔNG ĐO ĐƯỢC` là hành-vi mẫu**, nên nêu làm chuẩn cho vai khác.

**VERDICT CLEAN-2: ĐẠT.**

---

## §6 · Trả 2 câu lead hỏi (đối chứng, không chép)

**(i) `ring5` — 0 hay 6 hay 2?** Cả hai đều đúng, **khác ĐƠN-VỊ**, và tao đo được cả hai:
```
session-start.md :  dòng khớp = 0   ·  lần xuất hiện = 0
session-end.md   :  dòng khớp = 2   ·  lần xuất hiện = 6   (6 token dồn trong 2 dòng)
```
⇒ `grep -c` của lead đếm **DÒNG**, `grep -o|wc -l` của gap đếm **TOKEN**. **Kết luận không đổi dưới cả 2 thước**: cửa @open = **0 tuyệt đối**. 🔸 Bổ sung: `pause.md` = **1** ⇒ phủ thật **2/4 cửa**, không phải 1/4.

**(ii) Control `YC-018` có đủ mạnh để kết luận "thói quen khắc luật" không? → CHƯA ĐỦ.** Tao mở rộng control lên 3 mã, có **phản-ví-dụ**:
```
YC-018  start=1 end=1 tiep=0 pause=0     <- 2/4, cùng hình YC-027
YC-019  start=0 end=1 tiep=0 pause=0     <- 1/4
YC-021  start=0 end=1 tiep=1 pause=1     <- 3/4  ** PHẢN-VÍ-DỤ **
```
`YC-021` land **cả `/tiep` lẫn `/pause`** ⇒ đội **CÓ** viết luật vào 2 cửa đó khi cần. Nên giả-thuyết *"thói quen chỉ khắc 2 site"* **bị bác**.
🔴 Đọc đúng hơn (và **nặng hơn** cho gap F-4): luật land ở **cửa mà luật NÓI VỀ** — `YC-021` nói về `/day`·`/pause`·`/tiep` nên land ở đó; `YC-027` nói về **mọi command** nhưng chỉ land nơi tay lead đang gõ. ⇒ cái thiếu không phải thói quen mà là **phép kiểm ĐỦ-CỬA**: không có máy nào hỏi *"luật này phủ mấy cửa / phải phủ mấy cửa"*. Control của lead **hữu ích nhưng suy sai chiều**; kết luận F-4 vẫn **đứng**, thậm chí đứng vững hơn.

---

## §7 · FALSIFY-LOG (HELD / BROKE)

| # | phép thử phủ-định | kết |
|---|---|---|
| F-1 | *"`ring5` vẫn được gọi @open dưới tên khác"* → quét 389 dòng `session-start.md` tìm mọi vai-KIỂM | **HELD** — `ring1`=2 `ring2`=5 `ring4`=3 `harness-audit`=4 `ctx-audit`=5, **riêng `ring5`=0** ⇒ bác không được, còn mạnh thêm |
| F-2 | *"stale cite sai neo (`session-start:175`/`:274`)"* → in trọn dòng thay vì cắt 250 ký tự | **BROKE — vào chính tao.** Dòng dài 380 / 1.087 ký tự, trích của vai **verbatim đúng**. Cáo buộc của tao SAI |
| F-3 | *"`gap-carry-aged=0` là 0-chế-tạo như S180/S182"* → chạy lại máy | **BROKE (một nửa)** — số 0 THẬT, streak 4 thật; nhưng **nhãn** "honest-zero THẬT" vỡ vì streak≠tuổi (51/56 = 1 sau re-stamp 47 slug) |
| F-4 | *"gap né việc ở `gap-underfill`"* → tìm bề mặt %-print trên đĩa + đọc định nghĩa under-fill | **HELD (từ-chối đúng)** — `run.md` 0 ký tự `%`; under-fill là hội-2-vế, gap chỉ đo được 1 ⇒ từ chối là bắt buộc |
| F-5 | *"19 = số carry"* → đếm dòng `carry '<slug>' streak=` trong output máy | **BROKE** — máy đo **56** slug, không phải 19 |
| F-6 | *"bảng class của stale cộng đúng"* → cộng tay 6 dòng | **BROKE** — `4+3+2+2+1+0 = 12` trên TOTAL **11** |

---

## §8 · VERDICT PER-CLAIM

### ĐẠT (7)
| # | claim | neo |
|---|---|---|
| 1 | **PIN** cả 2 artifact trọn, `grep`-count == TOTAL | 39.195 B/452d · 31.630 B/335d · `== HẾT ==` ×2 |
| 2 | **ENUM-GATE** 18/18 class ∈ enum, **0 tự chế** | `OUTSIDE enum = []`, enum size 12 đọc live |
| 3 | gap **FLAG-1** `ring5` 0@open / 6@close | tái dựng 2/2 byte-exact + control + 5 vai anh em có mặt |
| 4 | gap **FLAG-4** YC-027 land 2/4 cửa | 10/10 ô cửa trống = 0, 4 token control dương |
| 5 | stale **FLAG-10** anchor emoji ⇒ máy bám mốc cũ | port regex `:610` ra python: `:5` KHÔNG khớp, `:183` khớp — **dòng khớp duy nhất** |
| 6 | stale **FLAG-9** frontmatter 2 vai còn câu SAI | 2 hit `KHÔNG mỗi phiên`, cả 2 ở `:4`, 0 nơi khác/29 persona |
| 7 | **CLEAN-2** `gap-underfill` từ-chối đúng nấc | `run.md` 0 `%` · under-fill = hội-2-vế theo chính config |

### TRƯỢT (3)
| # | claim | vì sao |
|---|---|---|
| 8 | **CLEAN-1** nhãn *"honest-zero THẬT"* của `gap-carry-aged=0` | streak≠tuổi; 51/56 slug về 1 sau re-stamp 47 slug; nhân chứng `[carry:carry-age-vacuous]` mở ~65 nhãn phiên vẫn `streak=1` |
| 9 | **"19 carry"** (dòng END của stale, ngữ cảnh của gap) | máy đo **56** slug; 19 = carry-**LINES**. Tái phát 3 lượt (S185 20/23 · S188 47 · S189 19/56) |
| 10 | **`view-residual-asym 3`** ở dòng END `:450` của stale | bảng thân có caveat *"(1 phần)"*, dòng END **rụng caveat**; tổng 12 ≠ TOTAL 11. Tally KHÔNG sai (đơn-vị = audit liên-tiếp) — sai tính toàn-vẹn |

### KHÔNG CHẤM (14) — khai thẳng, **cấm đọc thành ĐẠT**
14 FLAG còn lại (stale 1·2·3·4·5·6·7·8·11 + gap 2·3·5·6·7) tao **chỉ** kiểm được 2 tầng: **class ∈ enum** ✅ và **có ≥1 neo đĩa trích dẫn** ✅ — tao **KHÔNG tái dựng số** của chúng trong lượt này (ngân sách dồn cho 4 claim load-bearing + 2 thách-CLEAN theo brief).
🔴 ⇒ verdict của tao là **CẬN-DƯỚI**, y hệt nấc mà `lead-stale` tự khai cho chính nó. **Không** vai nào trong lượt này chứng được "đã phủ hết".

### ERRATA (ngoài 24 claim)
- **ERRATA-0** — brief lead pin `39.234 B`, đĩa **39.195 B** (lệch 39).
- **ERRATA-2** — gap FLAG-4 ô `PN-001 @session-end` ghi **1**, đĩa **2** (cùng nằm `session-end.md:13`). Lệch về phía hụt ⇒ không thổi FLAG.

---

## §9 · TỰ-KIỂM (chống lỗi của chính vai KIỂM)

1. ✅ **KHÔNG soi LEAD trực tiếp** — mọi verdict đều chấm *hành-vi-đo của 2 vai H24*. Ca `WAL:2 GIỮ MỞ` (datum lead gửi) tao **cố ý không phán** — đó là turf `lead-stale`, tao chỉ kiểm nó đo có đúng không.
2. ✅ **no-self-exempt** — tao ≠ `lead-stale-auditor`/`lead-gap-auditor`. 🔴 Và tao **không tự bào chữa**: `ring2-audit` L1 = **26.652 B > cap 25.600** + `_INDEX`=0 + gist=0 ⇒ **gap FLAG-5 nói về CHÍNH TAO là ĐÚNG**. Tao xác nhận thay vì im.
3. ✅ **Tái dựng bằng lệnh KHÁC** — vai dùng `grep -o|wc -l` / đọc output máy; tao dùng `python re.findall`, **port regex detector ra python**, và **chạy lại chính máy**.
4. ✅ **Ghi cả 2 số khi lệch** (19 vs 56 · 12 vs 11 · 39.234 vs 39.195 · PN-001 1 vs 2 · ring5 2-dòng vs 6-token).
5. ✅ **BROKE tự thân được ghi, không gọt** (F-2) — suýt phán TRƯỢT OAN vì cắt dòng 250 ký tự, **lần thứ 3** cùng bẫy (S159 · S186 · nay).
6. ✅ **Thách-CLEAN làm ở CẢ 2 chỗ tự-khai-sạch**, và ra **1 FLAG mới** cặp H24 không có (§3).
7. ✅ **KHÔNG verdict-tổng gộp** — 24 claim tách dòng; 14 KC khai rõ thay vì nhét vào ĐẠT.
8. 🔸 **Ranh không lấn**: không chấm tooling/harvest (`ring1-audit`) · không chấm trio-memory (`harness-audit`) · không chấm nghi-thức `_end` viết lúc 20:43 (`ring5-audit`) · không đề xuất sửa regex detector (turf chủ máy).

**Propose-only** — 0 Write/Edit ngoài file này · 0 `store_memory`/RAG-write. Lead VERIFY→APPEND (B3).

**TOTAL: 24 claim — 7 ĐẠT / 3 TRƯỢT / 14 KHÔNG CHẤM**

== HẾT ==
