# sub-ring2-audit — S151 bookend @CLOSE, lượt **DEEP** (lượt 2/2 trong phiên)

> Vai: `ring2-audit` — KIỂM **2 con-đo H24**, KHÔNG soi lead trực-tiếp.
> PIN đích-danh (fail-closed): `sub-lead-stale-deep-S151.md` (22.056B) + `sub-lead-gap-deep-S151.md` (22.157B) — **cả 2 TỒN TẠI, byte khớp lệnh giao** ⇒ pin PASS, không NO-OP.
> Guard AS-17: file này **APPEND TỪNG VERDICT trong lúc làm**, không phải dump-cuối.

## 0. Pin + khung thời-gian (chạm đĩa trước khi phán)

- mtime `sub-lead-stale-deep-S151.md` = 19:46 · `sub-lead-gap-deep-S151.md` = 19:48 ⇒ **thời-điểm ĐO**.
- Lead vá SAU đó + máy `h24-signal-write` chạy SAU cặp trả.
- 🔴 Hệ quả phương-pháp (bài G-2 @S150): **"nay đã sạch" KHÔNG bác được FLAG**. Mỗi FLAG phải chấm theo trạng-thái **lúc đo**, dựng lại bằng `git` (bản chưa vá) — không bằng trạng-thái đĩa hiện-tại.

- [ ] §1 Verdict 4 FLAG stale
- [ ] §2 Verdict 2 FLAG gap
- [ ] §3 Chấm 5 CLEAN-có-lệnh (chạy lại ≥2)
- [ ] §4 Tái-dựng counts 11 key + luật consecutive
- [ ] §5 Verify fix landed
- [ ] §6 Falsify ≥2
- [ ] §7 thách-CLEAN
- [ ] §8 Chấm 3 khai-giới-hạn: hợp-lệ hay che

---

## §0-bis — Phép-thử của CHÍNH TÔI bị bác trước khi dùng (tự-falsify)

Tôi định dựng lại trạng-thái-lúc-đo bằng `git show HEAD:<file>` vì `HEAD` = `323a663 wal: flush 19:47` nằm **giữa** 2 mốc đo (19:46 / 19:48). **SAI.** Đo lại:

```
git log -1 --date=format:"%m-%d %H:%M" -- docs/HANDOFF.md  ->  398d343 07-25 12:17
(y hệt cho session-start.md · session-end.md · STATUS.md · .session-counter.json)
git show --stat HEAD  ->  CHỈ 2 file: sub-lead-gap-deep(+3) · sub-lead-stale-deep(+95)
```

⇒ `HEAD:<governance-file>` = bản **12:17 (S150-era)**, KHÔNG phải 19:46. Commit `wal:` chỉ ôm run-file. Nếu dùng, tôi đã chấm 4 FLAG stale trên bản sai 7 tiếng. **Đây là bẫy cùng lớp `grep -c` vs `-o|wc -l` @S130 và en-dash @S149: công-cụ CHẠY và TRẢ SỐ, chỉ là trả số của một VẬT KHÁC.**

**Khung 3 mốc dùng thay (khai để ai cũng kiểm lại được):**
- `t0` = 12:17 (HEAD, đã commit) · `t1` = 19:46/19:48 (mtime 2 sub-file = lúc đo) · `t2` = 19:50→19:53 (mtime file lead vừa vá).
- **Luật suy-diễn khoảng:** chuỗi X có ở `t0` **và** bị chính phép vá gỡ ở `t2` ⇒ X có ở `t1` (trừ khi có sửa-rồi-sửa-lại trong 7h — không thấy vết). Chỉ dùng luật này, KHÔNG dùng "đĩa nay sạch nên FLAG sai".
- 🔴 Hệ quả: **"nay đã vá" KHÔNG BAO GIỜ là căn-cứ TRƯỢT một FLAG.**

## §0-ter — Toàn-vẹn artifact (chống retro-edit sau khi biết lead vá gì)

| file | trạng-thái git | phán |
|---|---|---|
| `sub-lead-stale-deep-S151.md` | **CLEAN vs HEAD** — trọn 172 dòng đã nằm trong commit 19:44+19:47 | ✅ **KHÔNG sờ lại sau `t1`**. Bản tôi chấm = bản đã niêm ở 19:47, trước mọi phép vá |
| `sub-lead-gap-deep-S151.md` | M (+164 dòng sau commit 19:47) | ✅ hợp-lệ: mtime **19:48** < 19:50 (phép vá đầu tiên). Phần thêm = FLAG-1/FLAG-2 + 3 CLEAN + INFORM, đúng phần thân còn dở lúc commit; **0 dòng sửa**, thuần `+` (diff `164 insertions, 0 deletions`) ⇒ không có chuyện viết lại quá-khứ |

⇒ Cả 2 con-đo **ghi-đĩa-trong-lúc-làm THẬT** (AS-17 có răng ở đây), và tôi chấm bản không bị nhiễm.

## §4 — TÁI-DỰNG SỐ (a): `.session-counter.json` sau khi máy chạy

Đọc bằng Python (`utf-8-sig`), ép kiểu từng value — không đọc bằng mắt:

| key | đo được | lead kỳ-vọng | khớp |
|---|---|---|---|
| gap-decision-sunk | 5 | 5 | ✅ |
| gap-carry-dropped | 5 | 5 | ✅ |
| view-stale-status | **4** | 4 (fire 3→4) | ✅ |
| view-stale-count | 3 | 3 | ✅ |
| view-residual-asym | 3 | 3 (no-op) | ✅ |
| view-stale-header | **2** | 2 (fire 1→2) | ✅ |
| view-stale-role-desc | 2 | 2 | ✅ |
| gap-carry-aged | 2 | 2 (no-op) | ✅ |
| gap-owner-specifics | **0** | 0 (reset 5→0) | ✅ |
| gap-incident-unrecorded | **0** | 0 (reset 1→0) | ✅ |
| gap-underfill | **0** | 0 (SEED mới) | ✅ |

**`len(counts) = 11` — 11/11 khớp tuyệt-đối.** Invariant "chỉ chứa SỐ" còn nguyên: 11/11 `int`. `_frozen_until_owner` **KHÔNG còn** trong `class_repeat` (đo bằng biểu-thức, không bằng grep). ⇒ **D-2 tôi escalate @open (counts 10-key / enum 11) NAY ĐÃ ĐÓNG** — và đóng đúng cách gap-deep FLAG-1 đề: seed tường-minh `gap-underfill: 0`, không phải để key vắng.

### §4b — RESET có đúng luật consecutive, hay tay-xoá?

Đọc **source máy** `h24-signal-write.ps1` (3b):
```
$resetCandidates = $enum | ? { ($firedUnique -notcontains $_) -and ((Get-Count) -ge 1) -and ($decided -notcontains $_) }
   -> "did not repeat this session - consecutive semantics" ; $frozen present => KHÔNG reset gì cả
```
Đối chiếu `last_audit` vừa ghi: `signal_session=S151` · `signal_last_kind=deep` · `signal_reset_done=True` · `deep_at_counter` **17→25** · `signal_decided` = **8 class** [role-desc, count, asym, carry-aged, decision-sunk, carry-dropped, stale-status, stale-header].

**Bài toán khớp trọn, KHÔNG có dòng nào phải giải thích bằng tay:**
- 2 class RESET = `gap-owner-specifics`(5→0) + `gap-incident-unrecorded`(1→0): cả hai **có count ≥1** và **KHÔNG nằm trong `signal_decided`** ⇒ **đúng ứng-viên theo luật máy**.
- 🔴 **Phép thử tôi tự đặt ra để bác:** *"tại sao 2 CLEAN của stale (`view-stale-count` 3, `view-stale-role-desc` 2) KHÔNG được reset — thiên-vị vai gap?"* → **BROKE**: cả hai **nằm trong `signal_decided`** (đã quyết @open cùng phiên-logic 4) ⇒ máy cấm, y hệt `gap-carry-dropped`(5) — mà **chính gap-deep đã tiên-đoán đúng** ô này (*"sạch nhưng vướng luật 1-lần/phiên ⇒ kỳ sau"*). **Không thiên-vị; là luật max-1/class/phiên-logic áp đều.**
- ✅ **Cross-check 2 con-đo:** gap-deep tính ứng-viên reset = **4** {stale-status, stale-header, owner-specifics, incident} rồi **nhường 2 `view-*` cho vai kia**. Vai kia sau đó **FIRE** đúng 2 cái đó ⇒ chúng rời khỏi tập reset và vào tập fire. **Kết cục máy = đúng hợp của 2 phép tính độc-lập.** Đây là bằng-chứng mạnh nhất trong lượt này rằng **2 vai ăn khớp mà không chép nhau**.
- `_frozen_until_owner` **đã biến mất** khỏi `class_repeat` (kiểm bằng biểu-thức `in`, không bằng grep) ⇒ khoá gỡ, và **chỉ sau khi gỡ** nhánh reset mới chạy được — thứ-tự đúng.

🔴 **Nợ còn lại (khai, không tô):** `scripts/h24-signal-write.ps1` **KHÔNG nằm trong `git status` modified** ⇒ máy **vẫn chưa có** fail-loud `|counts| ≠ |flag_classes|` mà gap-deep đề ở nhánh rẻ. Key `gap-underfill` nay **có mặt nhưng chưa có răng**: nó không bao giờ fire ⇒ không bao giờ được máy ghi lại ⇒ một lần re-serialize kiểu khác là **rơi lại y như cũ**. *Có mặt ≠ có răng.*

---

## §1 — VERDICT 4 FLAG `lead-stale-auditor` (mở evidence GỐC)

### FLAG-1 `view-stale-status` (HANDOFF:30) — ✅ **ĐẠT** (thân) · 🔴 **defect D-1: acceptance TRƯỢT**

**Thân FLAG = THẬT, và chứng không đến từ lời khai của ai:** dòng 30 nay là `**~~NEXT em (kỳ S150)~~ — 🧊 SUPERSEDED @S151 …**` mà **RUỘT VẪN NGUYÊN** — `awk NR==30 | grep -o` vẫn trả đủ **3 chuỗi**: `consent #12` · `copy thư GẤP` · `2-strike`. Lead **gạch tiêu-đề, giữ thân** ⇒ chứng ngược rằng ở `t1` đây là khối NEXT-em SỐNG mang đúng 3 lệnh stale-deep trích.

**3 tiền-đề "đã đóng / bất-khả" — kiểm từng cái, 1 cái bằng SNAPSHOT t1 THẬT:**

| tiền-đề | phép kiểm | kết quả |
|---|---|---|
| (1) trio hết consent | `awk NR==7 docs/HANDOFF.md` + `grep -o` | `~~(12)~~ ✅ ĐÓNG @S151 — anh chốt trio AUTO 1 vòng/phiên` ✅ |
| (2) copy `59ce1d0f` bất-khả | 🔴 WAL **có commit `ca0b500` lúc 19:44 < 19:46** ⇒ `git show HEAD:.claude/WAL.md` = **ảnh chụp t1 THẬT**, không phải suy-diễn khoảng | WAL:12 = *"thư 59ce1d0f vắng CẢ HUB (0 hit find+grep toàn AI_INFRA) ⇒ copy bất-khả-thi"* ✅ |
| (3) AS-17 đã promote | `grep -c "AS-17" docs/governance/error-ledger.md` | **4** (≥2) ✅ |

⇒ view giao 3 việc đã đóng/bất-khả = **lệch THẬT**; nặng nhất đúng như nó nói: lệnh *copy* một file **không tồn tại ở đâu cả**.

🔴 **Defect D-1 — số trong acceptance KHÔNG tái-dựng được, và acceptance là BẪY GOODHART:**
```
grep -c "NEXT em (phiên kế" docs/HANDOFF.md   ->  8   (nay)
   y hệt ở t0 (HEAD 12:17)                    ->  8
grep -o … | wc -l  (loại nghi mega-line)      ->  8   (không phải nhiễu dòng-dài)
hit tại dòng: 8 · 34 · 38 · 43 · 47 · 51 · 55 · 68
```
Nó viết *"`grep -c …` phải = 1 (**nay = 2**)"*. **2 không phải output của lệnh nó dán** (ở `t1` lệnh này trả **9** = 8 + khối S151 mới). 7/8 hit là **segment lịch-sử đóng băng hợp-lệ** ⇒ gate `= 1` **chỉ xanh được nếu XOÁ 7 segment lịch-sử** — đúng thứ chính nó CẤM ở FLAG-2 (*"acceptance KHÔNG được là `grep -c consent = 0` … Goodhart"*) và ở FLAG-4. **Kỷ-luật đúng ở 2 FLAG, tự phá ở FLAG-1 — trong CÙNG một văn-bản.**
🔴 Không vu-oan: đây là **số/gate không dùng được**, KHÔNG phải bịa FLAG.

### FLAG-2 `view-residual-asym` (5 site consent) — ✅ **ĐẠT**, chứng mạnh

`git show HEAD:` (t0) + `grep -n -i consent`:
- `session-start:165` · `:267` · `:272` — **verbatim khớp 100%, đúng số dòng**.
- `session-end:136` (*"KHÁC (j) H24 + (k) trio"*) · `:160` (*"khong-gat"*) — **verbatim khớp**.
- 🔴 **Chốt cơ-chế bằng BẤT-BIẾN SỐ DÒNG:** ở t0 `:276` = *"(a) 🔴 CONSENT-GATED — KHÔNG auto-run"*; ở t1 nó khai `:276` = **AUTO/canonical**; **272/276 giữ nguyên chỉ-số** ⇒ codify **thay chữ tại chỗ**, chạm `:276`+`:154` mà bỏ `:272` — tiêu-đề của **CHÍNH mục đó**. Đúng archetype *"sửa fe-admin quên fe-user"* nó dựng, và chứng bằng cấu-trúc file chứ không bằng lời.
- Đối-chứng chéo: `lead-gap-deep` (19:48, độc-lập) cũng đọc `:272-276` là §2.1.9(a) **AUTO** ⇒ 2 con-đo khớp về nguồn.

### FLAG-3 `view-stale-header` (STATUS:437) — ✅ **ĐẠT**, 3 tuyến độc-lập

| phép | kết quả |
|---|---|
| `git log -S "CURRENT STATE (verified S40)" -- docs/STATUS.md` | **`d2f52ba` 2026-05-29 "S40 consolidate…"**, DUY NHẤT 1 commit ⇒ chuỗi chưa ai chạm từ S40 — **khớp tuyệt-đối lời khai** |
| t0 `STATUS:437` | `## 🎯 CURRENT STATE (verified S40)` ✅ |
| hàng dưới (`awk 441..453`) | `:442` re-ground **S97** · `:446` row MỚI **S121** · `:448` Tests **S147** · `:449` +**S133** · `:452` RENAME **S149** · `:453` re-verify **S151** ⇒ tiêu-đề S40 / thân tới S151 = **lệch THẬT** ✅ |

### FLAG-4 `view-residual-asym` (8 site idiom) — ✅ **ĐẠT** (8/8 có thật) · 🔴 **defect D-2: tập-đo khai thiếu**

t0 (case-insensitive) khớp **đúng dòng**: `README:5/:32/:39` · `ultra-on:9` · `fable-real:36` · `fable-clone:108` · `project_harness4:3`. `hmw.js` ở t0 nằm dòng **66**, nó khai **:68** — **trôi 2 dòng do chính lead sửa `hmw.js` sớm hơn trong S151**; nội dung khớp từng chữ ⇒ **không tính lệch**.

🔴 **Defect D-2:** nó tuyên *"8 site"* như đã vét, nhưng chạy **chính grep nó dán** (loại `runs/`) còn ra site nó **không liệt, cũng không định-đoạt**: `docs/governance/fable-real-runbook.md:483` (*"lead = frontier-class do anh chọn per-session {Fable 5 | Opus 4.8}"* — văn phong LUẬT, không phải 🧊), `STATUS:205`, `vocab-alias-map.md:51`, `harness-11-engine.md:338`. Một số **có thể** là floor-point **RC-stamped đóng băng cố-ý** (`:165`/`:338` nhắc `RC-…`) ⇒ tôi **KHÔNG phán chúng stale** (chưa soi trọn — và soi trọn là turf nó, không phải của tôi). Nhưng resolve của **chính nó** đòi *"liệt TỪNG site + soi chủ-ngữ"* ⇒ im lặng về phần dư = **tập-đo khai thiếu**, và **phép vá của lead thừa-kế nguyên ranh-giới đó**. ⇒ **UNRESOLVED-COVERAGE**, không phải FLAG sai.

## §2 — VERDICT 2 FLAG `lead-gap-auditor`

### gap FLAG-1 `gap-decision-sunk` — ✅ **ĐẠT**, tái-dựng 100%
- t0 `.session-counter.json`: **`len(counts)=10`**, `gap-underfill` **VẮNG**, `_frozen_until_owner` **CÓ** (Python trên chính blob git).
- `memory-budget.json → flag_classes` = **11** ⇒ **10 ≠ 11, thiếu ĐÚNG `gap-underfill`** ✅ — trùng khít D-2 tôi escalate @open, nhưng nó **đo độc-lập** chứ không chép tôi.
- **Cơ-chế nó tố, tôi đọc thẳng source:** `Get-Count` *"a missing key = 0"* + reset đòi `-ge 1` ⇒ key vắng **vĩnh-viễn không là ứng-viên, vĩnh-viễn không được ghi**. **Suy-luận máy ĐÚNG từng bước.**

### gap FLAG-2 `gap-carry-aged` — ✅ **ĐẠT**, CONFIRMED-máy bằng RE-IMPLEMENT

Tôi **re-implement** detector bằng Python sau khi **đọc regex gốc `governance-detectors.ps1:892`** — regex nó trích **khớp BYTE-FOR-BYTE** source:
```
marks = 18 | mark ĐẦU ở dòng 7  =>  vùng KHÔNG ĐO = dòng 1..6
carry-line trong vùng không đo   =  [6]   <- ĐÚNG khối canonical
dòng 6 distinct slug             =  26
canonical - measured             =  []    <- rỗng, đúng như nó KHAI THẬT
segments 18 / carry-lines 15 ; carry-line toàn file 29
```
🔴 **Xác-nhận CẤU-TRÚC, không phải con số:** vòng streak chỉ duyệt `carryLines[0]` ⇒ slug **chỉ-sống-ở-dòng-6 là VÔ HÌNH** với thước — rủi ro LATENT nó mô-tả là **thật, do kiến-trúc**. Nó khai `19/16/32`, tôi đo `18/15/29`: **KHÔNG tính lệch** (đo cách nhau ~20 phút, lead sửa HANDOFF lúc 19:53). Mọi mệnh-đề **load-bearing** — mark đầu **dòng 7** · vùng **1..6** hở · dòng 6 = **26** slug · hiệu = **rỗng** — **tái-dựng KHỚP TUYỆT ĐỐI**.
👏 Liêm-chính: nó **tự khai hiệu = rỗng** (chưa mất slug nào) thay vì thổi thành thiệt-hại, và **nhường** `view-stale-count` (7/9/12) sang vai kia thay vì gộp tally mình.

## §3 — CHẤM 5 CLEAN-CÓ-LỆNH (chạy lại, không đọc bảng)

| CLEAN | chạy lại | kết quả |
|---|---|---|
| `view-stale-count` | `ls .claude/agents/*.md`=**21** → trừ README=**20** · `agent-memory/*/MEMORY.md`=**20** · `VALID_ROLES`=**20** · gotchas cuối=**### 83.** | ✅ **HELD** — 4 nguồn độc-lập cùng ra **20**, khớp `STATUS:452`; 83 khớp `:449` |
| `view-stale-role-desc` | `sed -n 302p` = `🧊 FROZEN-HISTORICAL (S38 … số CỐ Ý không cập nhật …)` khớp verbatim | ✅ **HELD** (xem ghi-chú :249 dưới) |
| `gap-owner-specifics` | spot-check **#14**: `~~(14)~~ ✅ ĐÓNG @S151 — ô canonical §Sub-agents = default Opus 5 MAX + ghi chú "cần Fable → /model đầu phiên hoặc /fable-real"` · `grep -o "/fable-real" STATUS` = **27** | ✅ **HELD** — **vế điều-kiện giữ nguyên**, đúng chỗ S150 từng đánh rơi ⇒ CLEAN **có răng** |
| `gap-incident-unrecorded` | `grep -c "AS-17"` = **4** (đòi ≥2) | ✅ **HELD một phần** (chứng mục 3/4) |
| `gap-carry-dropped` | **KHÔNG chạy lại** (hết ngân-sách lượt) | ⚪ **KHÔNG-CHẠM** — khai thẳng, KHÔNG ĐẠT-ảo |

🔸 **Ghi-chú `README:249`:** stale-deep trích *"Folder = ĐO ĐĨA, KHÔNG enumerate ở đây"*. Đo lại **đúng dòng 249** nay ra chuỗi KHÁC (mô-tả diary + auto-inject 200 dòng/25KB) ⇒ **trôi dòng** sau sweep 19:53 của lead. Tôi **KHÔNG grep cụm đó toàn file** trong lượt này ⇒ **chưa kết luận**; `:302` thì khớp verbatim nên CLEAN vẫn HELD trên chân đó.

## §5 — FIXES ĐÃ LAND (verify trên đĩa, không tin bảng của lead)

| # | fix | verify | kết |
|---|---|---|---|
| 1 | HANDOFF 2-khối NEXT-em, khối S150 gắn SUPERSEDED | `grep -n -o "SUPERSEDED…"` → **đúng 1 hit, tại dòng 30**, nêu đích-danh *"stale-deep FLAG-1"* | ✅ LAND |
| 2 | trio-sweep 5 site | `165` AUTO+🧊 · `267` *"🧊 vế KHÁC trio … hết hiệu lực @S151"* · `272` tiêu-đề **AUTO** · `end:136` *"🧊 vế tương-phản cũ hết nghĩa: cả 3 vòng cùng AUTO"* · `end:160` *"(giữ NGUYÊN sau khi bỏ consent @S151)"* | ✅ LAND **5/5** |
| 3 | STATUS:437 nhãn baseline | `:437` = *"CURRENT STATE (baseline S40 — re-ground sống liên tục, mốc gần nhất S151)"* + `grep -c "verified S40"` = **0** | ✅ LAND |
| 4 | idiom-sweep 8 site | `fable-real:36` nay *"Lead = DEFAULT Opus 5 MAX"*; `fable-clone:108`/`ultra-on:9`/`README:32,39` **rơi khỏi tập hit**; hit còn lại (`hmw.js:69`, `project_harness4:29`, `session-start:41`) đều là **🧊 MENTION khai tử** — phân-biệt **use ⟂ mention**, không phải USE sống | ✅ LAND (kèm D-2) |
| 5 | máy: seed `gap-underfill:0` + reset 2 class + gỡ frozen | §4 + §4b — **11/11 key khớp kỳ-vọng**, reset **đúng luật consecutive**, frozen **biến mất** | ✅ LAND |
| 6 | `#29` số tươi 8/10/13 | **KHÔNG tự tái-dựng 3 số streak** trong lượt này | ⚪ **CHƯA VERIFY** — khai thiếu, không suy |

⇒ **fixes-landed 5/6.**

## §6 — FALSIFY-LOG (8 phép; 3 phép bác chính TÔI)

| # | phép thử | kết |
|---|---|---|
| F-a | *"`HEAD` nằm giữa 2 mốc đo ⇒ dựng được trạng-thái t1"* | 🔴 **BROKE (của tôi)** — `git log -1 -- <file>` = **12:17**; commit `wal:` chỉ ôm run-file. Suýt chấm 4 FLAG trên bản sai **7 tiếng** |
| F-b | *"stale-deep bịa 2 site `fable-real:36`/`fable-clone:108` (grep tôi ra 0)"* | 🔴 **BROKE (của tôi)** — grep **case-sensitive**; văn bản viết *"do **ANH** chọn"*. Chạy `-i` ⇒ **cả 2 site có thật, đúng dòng**. Cùng lớp bẫy en-dash @S149 |
| F-c | *"`&&` chain của tôi chạy đủ"* | 🔴 **BROKE (của tôi)** — `grep -c` trả **exit 1 khi count=0** ⇒ nuốt lệnh sau. Đúng bẫy §5.0(a) repo tự ghi |
| F-d | *"acceptance FLAG-1 `= 1 (nay 2)` tái-dựng được"* | 🔴 **BROKE (của con-đo)** — lệnh trả **8** (t0 và t2), occurrence cũng **8** ⇒ số 2 không sinh từ lệnh đó ⇒ **defect D-1** |
| F-e | *"gap-deep chép regex máy sai/xấp-xỉ"* | ✅ **HELD** — khớp **byte-for-byte** `:892` |
| F-f | *"reset 5→0 là tay-xoá cho đẹp sổ"* | ✅ **HELD (bác nghi-vấn)** — đúng `$resetCandidates` + `signal_decided` 8 class giải thích **trọn vẹn**, 0 dòng phải giải thích bằng tay |
| F-g | *"máy thiên-vị: reset gap mà không reset 2 CLEAN của stale"* | ✅ **HELD (bác nghi-vấn)** — 2 class đó **nằm trong `signal_decided` @open** ⇒ luật max-1/class/phiên-logic áp **đều**, y như `gap-carry-dropped` |
| F-h | *"`canonical − measured` = rỗng là nó tự tô hồng"* | ✅ **HELD** — re-implement độc-lập cũng ra **[]**; nó khai **đúng cả phần bất-lợi cho chính flag của mình** |

## §7 — THÁCH-CLEAN (nhắm class con-đo tự tuyên "0 fire")

Theo bài @S150 (*CLEAN nguy nhất ở class tuyên 0*), tôi nhắm **2 class stale tuyên CLEAN** + **owner-specifics 6/6** của gap:
- `view-stale-count`: chạy lại **4 phép đếm độc-lập** → **20/20/20/20** + gotcha **83** ⇒ **không tìm được FLAG sót**. CLEAN **có răng**.
- `view-stale-role-desc`: `:302` khớp verbatim; `:249` **trôi dòng** ⇒ khai chưa kết luận (trên).
- `gap-owner-specifics`: spot-check **#14** — chỗ dễ rụng nhất là **vế điều-kiện**; nó **còn nguyên** trong ô canonical ⇒ CLEAN **có răng**, và đúng chỗ S150 từng mất.
🔴 **Kết:** lượt này **KHÔNG bắt được FLAG sót nào** trong 5 CLEAN. Ghi **VERIFIED-CLEAN** thay vì nặn báo-động giả — nhưng 2 khuyết-tật thật (**D-1 acceptance Goodhart**, **D-2 tập-đo khai thiếu**) nằm **NGOÀI** FLAG, đúng hình S150: *10/10 ĐẠT không có nghĩa 2 vai hoàn-hảo.*

## §8 — CHẤM 3 KHAI-GIỚI-HẠN: hợp-lệ hay che?

| khai | phán |
|---|---|
| **mega-line chưa đọc trọn** (`STATUS:6/:441/:448…`, `HANDOFF:5/:6/:20/:27-29`) | ✅ **HỢP-LỆ, và là khai MẠNH** — nó nói thẳng *"0 flag trên mega-line = CHƯA ĐO, không phải sạch"*. Chính lớp *"phép trích RỖNG đọc thành sạch"* mà **AS-17(b)** cấm. Tôi **đối-chứng độc-lập**: `HANDOFF:6` (26 slug) nằm **ngoài vùng đo của máy** (§2 trên) ⇒ vùng mega-line **thật sự có hố**, không phải cớ |
| **`MenuKeys.cs` không tìm được ⇒ không tự đếm được trục menu** | ✅ **HỢP-LỆ** — nó **không** vì thế mà tuyên trục menu sạch; chỉ đối chiếu nội-bộ (54×4=216) và **khai thẳng**. Đúng khuôn *"số không tái-dựng được ⇒ không dùng được, KHÔNG phán bịa"* |
| **H24-3 `Last updated` = 0 chỗ cắn** | ✅ **HỢP-LỆ + tôi TỰ ĐO LẠI**: `grep -c "Last updated" docs/STATUS.md` = **0**. Đây là khai *"máy im ở trục này là MÙ, không phải lành"* — **đúng, và nó còn dùng chính chỗ mù đó để giải thích vì sao FLAG-3 máy không bắt được**. Không che |

⇒ **3/3 khai giới-hạn là HỢP-LỆ**, không có cái nào dùng để né trách-nhiệm. Ngược lại, cả 3 đều **chỉ đúng vào chỗ máy mù** và tôi xác nhận được 2/3 bằng phép đo riêng.

## TOTAL

**6 FLAG: 6 ĐẠT · 0 TRƯỢT.** **5 CLEAN: 4 HELD (1 phần) · 1 KHÔNG-CHẠM.** **enum-check 6/6** — mọi class dùng đều ∈ enum ĐÓNG 11 class, **0 class tự chế**.
**2 defect NGOÀI FLAG (escalate):** **D-1** acceptance FLAG-1 là gate Goodhart + số `2` không tái-dựng được (thật = 8) · **D-2** tập-đo FLAG-4 khai thiếu ≥4 site không định-đoạt (`fable-real-runbook.md:483` đáng soi nhất).
**1 nợ máy:** `h24-signal-write.ps1` chưa có fail-loud `|counts| ≠ |flag_classes|` ⇒ `gap-underfill` **có mặt mà chưa có răng**.

- **Trạng thái: DONE** (2026-07-25, ghi-đĩa-trong-lúc-làm, anti-#53/AS-17).
