# sub-ring2-audit @close S162 — KIỂM vòng soi-lead H24 (vai #2/3, C4 TÁCH)

> GHI-ĐĨA-TRONG-LÚC-LÀM (#53 · bài AS-17 + F-03 phiên này). Append TỪNG verdict, file LUÔN hợp-lệ giữa chừng. Kết = `END` + `TOTAL`.
> 🔴 Ranh: tao KIỂM 2 con-đo H24, tao KHÔNG soi lead trực-tiếp. no-self-exempt: tao ≠ lead-stale/lead-gap.

## 0. PIN + fail-safe

- `sub-lead-stale-close-S162.md` — 22.035 B, mtime 2026-07-30 14:35 — TỒN TẠI, tươi.
- `sub-lead-gap-close-S162.md` — 18.638 B, mtime 2026-07-30 14:33 — TỒN TẠI, tươi.
- Tuần-tự C4b: mtime output của tao > 14:35 ⇒ tao chạy SAU cặp. OK.
- Enum ĐÓNG: `memory-budget.json` → `lead_self_audit.flag_classes` = 11 phần-tử (5 `view-*` + 6 `gap-*`), đọc tươi lượt này.
⇒ PIN ĐỦ, KHÔNG NO-OP. Chấm tiếp.

## 0-bis. 🔴 MỐC ĐO — chống time-drift (bài G-2 @S150)

Cây làm việc **BẨN**: lead đang closeout, `docs/STATUS.md` mtime **14:38** · `docs/HANDOFF.md` mtime **14:40** — tức **SAU** khi cặp H24 đo (14:33 / 14:35).
⇒ **MỌI phép đo view của tao chạy trên `git show HEAD:<file>`** = đúng bản 2 con-đo nhìn thấy. Bằng-chứng cơ-học rằng bản HEAD là bản đúng: lead-stale trích `STATUS:649` + `:660/:667/:674`; cây tươi bây giờ 4 số đó đã trôi thành `:656/:667/:674/:681` (+7 dòng), còn **bản HEAD khớp cả 4 con số verbatim**.
🔴 Vì thế: FLAG-2/3/4/9/10/14 nay **đã được lead vá** — **KHÔNG được đọc "nay thấy đúng" thành TRƯỢT cho lead-stale.** Vá-sau ≠ flag-oan.

## 1. TÁI-DỰNG #1 — flag-count + class-histogram (chống rủi-ro pin-bản-cắt 4-A @S152)

`grep -c '^## FLAG-'` **trên chính 2 file pin**:
- `sub-lead-stale-close-S162.md` = **16** == END TOTAL 16 ✅
- `sub-lead-gap-close-S162.md` = **4** == END TOTAL 4 ✅
⇒ pin của lead **KHÔNG phải bản cắt**; thân bài chở đủ số mà END khai.

Histogram tao tự dựng từ 16 header (không đọc dòng tổng của nó):
| class | tao đếm | vai khai | khớp |
|---|---|---|---|
| `view-stale-count` | 8 (F2,3,4,5,7,13,15,16) | 8 | ✅ |
| `view-stale-header` | **3** (F9,10,14) | "4" → tự errata "**3**" | ✅ (xem dưới) |
| `view-residual-asym` | 2 (F1,11) | 2 | ✅ |
| `view-stale-status` | 2 (F6,8) | 2 | ✅ |
| `view-stale-role-desc` | 1 (F12) | 1 | ✅ |
| **tổng** | **16** | 16 | ✅ |

🔸 **Điểm cộng cho con-đo:** dòng `:160` gõ "4" rồi **tự bắt, tự sửa thành 3 ngay tại chỗ và GIỮ VẾT errata** thay vì sửa lặng (`:164`). Tao đếm độc-lập ⇒ **3 là đúng**. Đây là hành-vi ĐÚNG chuẩn, không phải lỗi.

---

## 2. VERDICT PER-FLAG — `lead-stale-auditor` (16)

Mọi "view" đo ở bản HEAD; mọi "source" tao tự đo lại, KHÔNG chép lời khai.

| # | class | verdict | tao tự đối-chứng được gì |
|---|---|---|---|
| F1 | `view-residual-asym` | **ĐẠT** | `git diff 1d3d167..HEAD -- docs/STATUS.md` = **4 dòng ±** = đúng **2 row** (Policies 216→**220**, Menu keys 54→**55**). `git show --stat a8027c0` ⇒ chính commit đó chạm `docs/STATUS.md \| 4 +-` **và** đẻ Mig 69 (**7** `CreateTable`). ⇒ "mở bảng canonical, vá 2/5 row" = **cơ-học đúng**, không phải suy-diễn |
| F2 | `view-stale-count` | **ĐẠT** | view `:458` = **68**; đĩa tao tự `ls` (trừ `.Designer`/`ModelSnapshot`) = **69**, mới nhất `20260729122015_AddContractSigningPlans.cs` |
| F3 | `view-stale-count` | **ĐẠT** | view `:459` = **89** + note "no-new-table"; source **96** qua **3 đường độc-lập**: cicd `sys.tables` 89→96 · tao đếm `b.ToTable(` HEAD = **95** (+`__EFMigrationsHistory`) · Mig 69 có **7** `CreateTable` (89+7) |
| F4 | `view-stale-count` | **ĐẠT** | view `:465` = **562** (45D+517I); source **590/0** = `WAL:13` "suite **590/0**" + `WAL:15` "45D+545I" + **subject commit `3119cb9`** "(suite 590/0)" — nguồn thứ 3 nằm trong git, không sửa được bằng tay |
| F5 | `view-stale-count` | **ĐẠT** | view `:6` "counter **34**"; `.session-counter.json` tao đọc = **36**, `last_ticked_session=S162` |
| F6 | `view-stale-status` | **ĐẠT** | xem §2-bis (đo riêng) |
| F7 | `view-stale-count` | **ĐẠT** | view `HANDOFF:30` = "19.958/20.480 = **97,45%**, headroom **522 B**"; tao `stat` = **20.313 B**, cap `l2_index.cap_bytes` = **20.480** ⇒ **99,18%**, headroom **167 B**. Cả 2 số của con-đo tái-dựng **khớp tuyệt-đối**. 🔸 errata nhỏ: nó ghi `memory-budget.json:59`, key thật ở **`:58`** (lệch 1 dòng — cùng lớp offset-gõ-tay tao bắt @S152; **giá-trị và đường-dẫn key ĐÚNG**, không đổi verdict) |
| F8 | `view-stale-status` | **ĐẠT** | đọc **TRỌN** `HANDOFF:34` (601 ký-tự, không `cut` ngắn — bài tự-rút @S159): dòng thật mang gạch-ngang + "✅ **RÚT @S159 — BÁO ĐỘNG GIẢ, không cần anh quyết**" + "**Cửa `/pause` tiếp theo KHÔNG bị chặn**". Source: `_mind-s-8.md` = **29.184 B** / `mind_ctx_kb` 32×1024 ⇒ **89,06%**, dư **3.584 B** — khớp **từng chữ số**. 🔴 Sắc ở chỗ: dòng đó **CÓ tự-bảo-vệ** ("số này TRÔI… đừng neo literal") nhưng caveat chỉ che **CON SỐ**, không che **KẾT-LUẬN**; con-đo flag đúng vào kết-luận ⇒ không phải bắt bẻ số trôi |
| F9 | `view-stale-header` | **ĐẠT** | `HEAD:STATUS:6` = "CURRENT (**S159→S160**, 2026-07-29 — phiên-LOGIC L8: window-1…)"; `WAL:3` = **S162 window-4** |
| F10 | `view-stale-header` | **ĐẠT** | `HEAD:HANDOFF:5` = "2026-07-29 chiều (**S159→S160** … window-1 `/pause` @14:40 + window-2 `/tiep` closeout)" |
| F11 | `view-residual-asym` | **ĐẠT ⭐** | xem §3 (tái-dựng #2, đếm PHẦN-TỬ) |
| F12 | `view-stale-role-desc` | **ĐẠT** | `README:242` "Cả **10** monitor đều INFORM-only"; tao đọc `hmw.js:41-43`: `ctx-audit` "INFORM-only", `ctx-curator`+`ctx-verifier` "**cả 2 INFORM-only**" ⇒ thật = **13** |
| F13 | `view-stale-count` | **ĐẠT** | `CLAUDE.md:69` row PE = `12,13,15,49,50,52-61,65-67` — **kết ở 67**; Mig **68** `AddPeAllowApproverDelete` là migration **của PE** (chính `STATUS:458` mô-tả "PE cho phép approver xóa phiếu") ⇒ enumeration thiếu 68 |
| F14 | `view-stale-header` | **ĐẠT** | xem §5 thách-CLEAN (đây là 1 trong 2 bia nghi dương-giả) |
| F15 | `view-stale-count` | **ĐẠT ⭐** | xem §4 (tái-dựng #3) |
| F16 | `view-stale-count` | **TRƯỢT (class)** | xem §5 thách-CLEAN — quan-sát ĐÚNG, **class sai** |

## 3. VERDICT PER-FLAG — `lead-gap-auditor` (4)

| # | class | verdict | tao tự đối-chứng được gì |
|---|---|---|---|
| G1 | `gap-carry-dropped` | **ĐẠT** | tao chạy lại trên `HEAD:HANDOFF`: hit `[carry:` **đầu tiên = dòng 44** ✅ · **219** occurrence / **43** slug distinct ✅ (khớp *nguyên văn* con số nó đưa) · `sed -n '5,43p' \| grep -c '\[carry:'` = **0** ⇒ **cả 2 segment mới 0 slug** ✅ |
| G2 | `gap-decision-sunk` | **ĐẠT ⭐** | tao dựng lại **trọn lưới 4 bề-mặt × 3 chuỗi = 12 ô** ở bản HEAD: `"3 trạm"` 0/0/0/0 ✅ · `"PRO/CCM/CEO"` 0/0/0/0 ✅ · `"người duyệt"` **0/3/1/0** ✅. 🔴 Đáng khen: số 3 của STATUS chỉ ra đúng khi đếm **OCCURRENCE**; đếm **DÒNG** ra 2 — con-đo đã dùng đúng thước (né bẫy `grep -c` mega-line, lỗi tái-phạm 3 lần trong repo này). Blocker sống duy nhất ở `WAL:17` ✅ tao đọc tận mắt |
| G3 | `gap-owner-specifics` | **ĐẠT** | `grep -c "Duyệt NCC" .claude/WAL.md` = **0** ✅ trong khi `run.md` (cây-4-folder) = **2** ✅ ⇒ "sổ quảng-cáo có verbatim mà không chứa verbatim" là **đo được**, không cảm-tính |
| G4 | `gap-underfill` | **ĐẠT** | tao tự cộng lại 5 nguồn ở bản HEAD: 17.113 + 7.051 + 5.326 + 29.184 + 12.816 = **71.490** vs nó khai **71.492** — **Δ = 2 B**, giải-thích trọn bằng quy-ước `\n` cuối ở 2 lát cắt (3/5 nguồn **khớp tuyệt-đối**). Quy tok [20.426..23.830] ≈ khai [20.426..23.831]. Biên rộng L1-80: tao 123.590 ⇒ [35.311..41.197] vs khai [35.312..41.197]. **Kết-luận "cận trên mới vừa chạm sàn 40K" đứng vững** |

## 2-bis. F6 đo riêng (bundle hash)

- view `HEAD:STATUS:6` verbatim: `bundle **admin js `D0sXA0fe`/css `DWDbm5As` (frozen-hợp-lệ #69-B)** · **user js `Y6dW_5CM`/css `6YIAufJR`**`
- source `cicd-monitor/MEMORY.md:71`: Run **#432** (07-30 `bfc7b79`) admin js `DXoYDy7R`/css `BZ5F-g1w` · eoffice js `o8KDluD1`/css `yNZDmVNz` — "**cả 4 rotate**"
⇒ **4/4 hash khác nhau** ✅. Và nhãn `frozen-hợp-lệ #69-B` dán lên đúng `css DWDbm5As` — thứ đã xoay sang `BZ5F-g1w` ⇒ **chú-thích-trạng-thái mô-tả sai hiện-trạng** = đúng định-nghĩa `view-stale-status`. **ĐẠT**.
🔸 Khai thẳng caveat của chính source: `MEMORY:71` tự dán "SNAPSHOT-per-run, KHÔNG phải mốc ổn định" ⇒ hash là ảnh-chụp; nhưng FLAG neo vào **chữ "frozen"**, không neo vào hash cụ-thể ⇒ caveat không làm suy-yếu flag.

---

## 4. TÁI-DỰNG — 6 số CÓ-THỂ-SAI (tao tự đo, không chép lời khai)

**(a) FLAG-11 — ĐẾM PHẦN-TỬ, KHÔNG grep số** (đúng cách con-đo tự chỉ định):
- `.claude/agents/README.md:242` là **mega-line 1.564 ký-tự** ⇒ tao đọc **TRỌN dòng** rồi đếm tay tên trong danh-sách roster (cắt trước mốc `🔸`): `investigator-codebase · investigator-api · implementer-backend · implementer-frontend · test-specialist · reviewer · cicd-monitor · frontend-designer · database-agent · office-document · tooling-auditor · harvest-curator · lead-stale-auditor · lead-gap-auditor · harness-eval · harness-refine · harness-audit · ring1-audit · ring2-audit · ring4-audit` = **20**.
- `hmw.js:22-43` `VALID_ROLES` = **23** (tao tách theo dấu nháy đơn, `sort -u`).
- Đĩa: `ls .claude/agents/*.md | grep -v README | wc -l` = **23**.
⇒ thiếu **đúng 3**: `ctx-audit`, `ctx-curator`, `ctx-verifier`. **FLAG-11 tái-dựng 100%**.
🔴 Tao xác nhận luôn cơ-chế nó nêu: cả dòng `:242` **không chứa chữ số nào** cho roster ⇒ acceptance dạng `grep "roster 2[0-9]"` = **0 hit = trông sạch**. Đây là lý-do grep im thật, không phải suy-đoán.

**(b) FLAG-15 — "menu 135→142"**: view `_context-s-8.md:113`; source `cicd-verify-a8027c0.md:129` pre **142** → post **142** "**GIỮ NGUYÊN, 0 row thêm**", `:66` "142 GIỮ (seeder không thêm menu-row)", `:268` PASS. Tao truy thêm **nguồn của số 135**: `grep "menu 135\|MenuItems 135"` trên `STATUS.md` + `WAL.md` = **0/0**; `135` cũng **0 hit** trong cicd-verify ⇒ **135 là số không có nguồn nào đỡ**. FLAG-15 **ĐẠT**.
🔴 Tao verify tiếp vế "tự tái-sinh": `memory-budget.json` → `tiep_reload.sources` **CÓ** `_context-s-<N>.md :: trọn` ⇒ đúng, sai-số này **nạp lại mỗi `/tiep`**. Vế nghiêm-trọng-hoá của con-đo **đứng vững**.

**(c) Tally `class_repeat` — kiểm bài D-4 @S159 (cùng tên ≠ cùng đơn-vị):**
- Đĩa `.session-counter.json` → `class_repeat.counts` có **11 key** = **khớp trọn enum 11** (🔸 lỗi D-2 tao escalate @S151 — counts 10-key thiếu `gap-underfill` — **nay đã vá**, `gap-underfill` = 1 có mặt).
- `gap-carry-dropped` trên đĩa = **7** ✅ **đúng y số lead-gap khai**. Mọi value đều `int` (bất-biến "counts chỉ chứa số" còn sống).
- 🔴 **Con-đo làm ĐÚNG bài D-4:** nó khai đơn-vị **TRƯỚC** khi đưa số ("ô sổ dùng **consecutive-audit**"), tách riêng đóng-góp **trong-phiên** (7→8), và ghi thẳng "**KHÔNG được chép đè**". Đây chính là cái bẫy tao chặn lead @S159 — lần này **không tái-phát**.

**(d) `jump_on_class_repeat`** = **3** — xem falsify F-1 (tao nghi bịa, tự bác).
**(e) F7/F8 byte** — `_INDEX` **20.313 B**/cap **20.480** ⇒ 99,18%, headroom **167 B**; `_mind-s-8` **29.184 B**/32.768 ⇒ 89,06%, dư **3.584 B**. Cả 4 số khớp tuyệt-đối.
**(f) VERIFIED-CLEAN #2 mạnh hơn bản gốc:** con-đo chỉ đo `max` = 84. Tao đo **2 đường**: `max` = **84** **và** `grep -c '^### [0-9]*\.'` = **84** ⇒ trùng nhau ⇒ chứng thêm **đánh số liên-tục, 0 lỗ 0 trùng** — clean này chắc hơn mức nó tự nhận.

---

## 5. 🔴 THÁCH-CLEAN (ĐẢO CHIỀU: 20 FLAG = rủi-ro **dương-giả/thổi số**, không phải im-lặng)

### Bia 1 — FLAG-16 "88→95 sai thước" ⇒ **BẮT ĐƯỢC: quan-sát ĐÚNG nhưng CLASS SAI**

Tao tái-dựng bằng git, **không** hỏi ai:
```
git show a8027c0~1:…/ApplicationDbContextModelSnapshot.cs | grep -c 'b\.ToTable('   → 88
grep -c 'b\.ToTable(' …/ApplicationDbContextModelSnapshot.cs (HEAD)                → 95
grep -c 'migrationBuilder\.CreateTable' …_AddContractSigningPlans.cs               → 7
```
⇒ **88 → 95 là ĐÚNG và ĐANG-ĐÚNG** trong đơn-vị EF-snapshot. Nguồn của nó (ModelSnapshot) **hôm nay vẫn nói y hệt 88→95**.
Định-nghĩa class (`lead-stale-auditor.md:45`): `view-stale-count` = *"bản-tóm-tắt còn trỏ **số cũ** **sau khi source đã đổi**"*. Ở đây **source KHÔNG đổi** và số **KHÔNG cũ** ⇒ **vị-ngữ của class không thoả**.
🔸 Công-bằng với con-đo: nó **không hề nói số sai** — nó tự viết *"Delta +7 đúng cả hai"*, tự hạ **LOW**, tự mô-tả đúng bản-chất *"sai thước"*. **Đây KHÔNG phải thổi-số về nội-dung.** Sai nằm ở **chỗ nhét vào enum**.
🔴 Hệ-quả MÁY (vì sao tao không bỏ qua): (i) thổi `view-stale-count` **8 thay vì 7** trong histogram → chảy thẳng vào `class_repeat` → `jump_on_class_repeat=3` (cơ-chế kéo nhịp audit); (ii) mâu-thuẫn chính dòng kết của file: *"0 finding nào rơi ngoài enum ⇒ **0 đề-nghị mở rộng enum**"* — **đây CHÍNH LÀ một finding rơi ngoài enum**.
Tao rà trọn 11 class: **không class nào** phủ "số đúng nhưng ở đơn-vị không-canonical". ⇒ Xử đúng theo luật enum-ĐÓNG (`memory-budget.json` `_note`) = **báo verbatim + escalate owner mở rộng enum**, KHÔNG ép vào class gần nhất.
**VERDICT F16 = TRƯỢT (class).** Quan-sát giữ nguyên giá-trị, đề-nghị hạ xuống **INFORM** hoặc escalate xin class mới (vd `view-unit-ambiguity`). Histogram đúng = `view-stale-count` **7**, TOTAL = **15 FLAG + 1 INFORM**.

### Bia 2 — FLAG-14 "tiêu-đề In Progress mang nhãn phiên đã đóng" ⇒ **THỬ BÁC, KHÔNG BÁC ĐƯỢC**

Giả-thuyết dương-giả của tao: *"đây chỉ là quy-ước đặt tên — mỗi khối In-Progress đóng dấu phiên sinh ra nó rồi xếp tầng, nên nhãn L7 là ĐÚNG với nội-dung L7."* Nếu vậy thì cái thiếu là **khối mới** (gap), không phải **nhãn cũ** (stale) ⇒ FLAG sai trục.
Phép bác: đọc **nội-dung** dưới tiêu-đề ở bản HEAD (`:649-658`) — nếu toàn việc S155/S157 đã xong thì tao bác được.
Kết quả: khối chứa **cả việc CÒN SỐNG HÔM NAY** —
- `:657` *"🔴🔴 Lỗ hổng an ninh duyệt HĐ … **anh chốt 07-28 'cứ từ từ'** … ⏸ treo có chủ-đích"*
- `:658` *"UAT anh Kiệt … ⚪ **pending (NEXT-anh)**"*
- `:656` *"🔴 Q1-Q6 thiết kế khúc 7→12 … 👤 anh Kiệt"*
⇒ khối này **KHÔNG phải tầng lịch-sử đóng băng**; nó đang gánh việc mở của hiện-tại ⇒ nó **là** khối In-Progress hiện-hành, mà nhãn lại là phiên-LOGIC **đã đóng**. **Giả-thuyết dương-giả BỊ BÁC. FLAG-14 ĐẠT.**
🔸 Chứng độc-lập thứ 2 (không dùng làm chứng chính vì là hành-vi của lead): lead vá lúc 14:38 thành *"mốc gần nhất S162 — phiên-LOGIC L8; **khối dưới còn nhãn L7 là lineage**"* — tức vừa bump nhãn vừa **viết ra quy-ước vốn ngầm**. Khớp chẩn-đoán của tao: quy-ước CÓ tồn tại nhưng **không được khai**, nên tiêu-đề đọc thành stale.

### Bia 3 — kiểm 1 trong 9 VERIFIED-CLEAN: chọn mục **#7** (nặng nhất — nó bảo-chứng cho chính nhịp H24)

Claim: 2 persona đều ghi "VÔ-ĐIỀU-KIỆN @open+@close" và con-trỏ `session-start §2.1.8(e)` **CÒN ĐÚNG**.
Tao tự resolve con-trỏ: `session-start.md:242` = `### 2.1.8 H24 lead-self-audit — TICK counter + OVERDUE check` ✅ · `:269` = `**(e) BÁO dòng-nợ 4-vế…**` ✅ · `lead-stale-auditor.md:53` + `lead-gap-auditor.md:46` = "Mày spawn **VÔ-ĐIỀU-KIỆN**… `session-start §2.1.8(e)` … `session-end §L.b(j)(ii)`" ✅.
⇒ **CLEAN CÓ THẬT.** 🔴 Và đây là clean **đóng lại đúng M-1 của chính tao @S153** (khi đó `lead-stale-auditor.md:51-54` còn tiêu-đề *"mày KHÔNG chạy mỗi phiên"* — khẳng-định phủ-định SAI). Nay đã vá, **0 tái-phát** ⇒ con-đo báo clean **đúng**, không phải làm tròn.

---

## 6. FALSIFY-LOG — 6 phép (3 HELD / 3 BROKE; **2 BROKE nhắm vào nghi-vấn của CHÍNH TAO**)

| # | phép thử phủ-định | kết |
|---|---|---|
| F-1 | Nghi lead-gap **bịa** `jump_on_class_repeat = 3`: tao đọc `.session-counter.json` → `class_repeat.jump_on_class_repeat` = **None** (key VẮNG) | **BROKE (nghi-vấn của tao sai)** — probe đường khác: `memory-budget.json:165` `"jump_on_class_repeat": 3` **có thật**, và `.session-counter.json:9` tự khai key sống ở `h24_cadence`. Con-đo **đúng**. Ghi VERIFIED-CLEAN thay báo-động-giả (cùng lớp bài S153) |
| F-2 | Nghi lead-gap **sai lưới G2**: đo cây tươi thấy `"3 trạm"` = **1** hit trong HANDOFF, trong khi nó khai **0/0/0/0** | **BROKE (nghi-vấn của tao sai)** — đo lại ở `HEAD` (=14:33, lúc nó soi): **0/0/0/0 đúng tuyệt-đối**. Hit kia là **bản vá 14:40 của lead**, sinh SAU phép đo. Bài G-2 @S150 lặp lại: **vá-sau ≠ flag-oan** |
| F-3 | Thử bác **FLAG-14** bằng giả-thuyết "quy-ước đặt tên xếp tầng" | **HELD** — nội-dung dưới tiêu-đề còn 3 việc SỐNG (⏸ treo · ⚪ pending · 🔴 Q1-Q6) ⇒ là khối hiện-hành thật. Không bác được |
| F-4 | Thử bác **FLAG-16** bằng cách xác minh 88→95 là số SAI | **BROKE (flag sai class)** — git dựng lại `88` (a8027c0~1) → `95` (HEAD), `CreateTable`=7 ⇒ số **đúng & đang-đúng** ⇒ vị-ngữ `view-stale-count` không thoả ⇒ **TRƯỢT class** |
| F-5 | Thử bác **FLAG-11** ("chắc README đủ, con-đo đếm ẩu") | **HELD** — đếm phần-tử tay: README **20** vs `hmw.js` **23** vs đĩa **23**; thiếu đúng 3 vai `ctx-*` |
| F-6 | Nghi lead-gap dính **bẫy `grep -c` dòng-vs-occurrence** ở ô "người duyệt = 3" (bẫy repo này đã sập 3 lần) | **HELD** — tao đo cả 2 thước: occurrence = **3**, dòng = **2**. Nó khai **3** ⇒ dùng **đúng** thước occurrence. Không dính bẫy |

---

## 7. ENUM ĐÓNG — 0/20 tự chế

Máy chấm: đọc `lead_self_audit.flag_classes` (**11**) rồi so **mọi** class trong 20 header FLAG.
```
lead-stale: view-residual-asym x2 · view-stale-count x8 · view-stale-header x3 · view-stale-role-desc x1 · view-stale-status x2  → 5/5 in-enum
lead-gap  : gap-carry-dropped x1 · gap-decision-sunk x1 · gap-owner-specifics x1 · gap-underfill x1        → 4/4 in-enum
=> tu-che class: KHONG CO (0/20 ngoai enum)
```
✅ **Không vai nào tự chế class.** 🔸 Nhưng xem §5 Bia-1: `0/20 ngoài enum` đúng về **hình-thức**, còn F16 là ca **ép-vừa** một finding vốn không có class — đó là lỗi **gán**, không phải lỗi **bịa tên**.

---

## 8. INFORM (ngoài verdict — escalate lead, KHÔNG tính vào TOTAL)

1. **Điều-kiện nghiệm-thu của G2 chưa đạt bởi chính bản vá đang chạy.** lead-gap đặt mốc: *"Hết flag khi `grep "PRO/CCM/CEO" docs/HANDOFF.md` ≥ 1"*. Cây tươi 14:40: `"3 trạm"` = 1 ✅ nhưng **`"PRO/CCM/CEO"` = 0** ⇒ theo đúng thước nó đặt, **chưa đóng**. Nêu để lead khỏi tick nhầm.
2. **Errata offset**: lead-stale trỏ `memory-budget.json:59` cho `l2_index.cap_bytes`; key thật `:58`. Giá-trị + đường-dẫn đúng, chỉ lệch 1 dòng (cùng lớp offset-gõ-tay tao bắt @S152).
3. **Coverage của lead-stale khai PARTIAL trung-thực** (5/11 bề-mặt PARTIAL, 1 CHƯA CHẠM, tự dán *"16 = SÀN, KHÔNG PHẢI TỔNG"*). Tao **giữ nguyên nấc đó**, KHÔNG làm tròn sàn thành tổng (bài @S159). ⇒ verdict của tao phủ **20 FLAG đã nộp**, **không** phủ phần chưa soi.

---

## 9. TỔNG-KẾT

**19 ĐẠT / 1 TRƯỢT / 0 KHÔNG-CHẤM-ĐƯỢC** trên 20 FLAG.
- `lead-stale-auditor` **15Đ/1T** (T = FLAG-16, sai **class** chứ không sai quan-sát)
- `lead-gap-auditor` **4Đ/0T** — cả 4 tái-dựng được, trong đó G2 khớp **12/12 ô lưới** và G1 khớp **219/43** nguyên văn
- enum ĐÓNG: **0/20 tự chế**
- Histogram sau hiệu-chỉnh F16: `view-stale-count` **7** (không phải 8) ⇒ TOTAL lead-stale = **15 FLAG + 1 INFORM** (SÀN, coverage PARTIAL giữ nguyên)

🔴 **Đánh-giá chất-lượng 2 con-đo (cái tao thực-sự được giao chấm):**
- Rủi-ro lượt này là **thổi số**, không phải im-lặng. Tao soi 2 bia nghi dương-giả nhất: **1 bia bác được (F16-class)**, **1 bia không bác được (F14)**. ⇒ **KHÔNG có hiện-tượng thổi số hàng-loạt**; 15/16 FLAG stale neo vào lệch **đo được bằng máy**.
- 3 hành-vi ĐÚNG-CHUẨN đáng ghi: (i) lead-stale **tự bắt lỗi đếm 4→3 và giữ vết errata**; (ii) lead-gap **khai đơn-vị trước khi đưa số** + cấm chép đè — thi-hành đúng bài D-4 tao chặn @S159; (iii) lead-gap dùng **đúng thước occurrence**, né bẫy `grep -c` mà repo này đã sập 3 lần.
- Điểm yếu duy nhất có răng: **ép-vừa enum** ở F16 + dòng kết "0 finding rơi ngoài enum" tự mâu-thuẫn.

**Nợ khai thẳng (CẤM đọc thành sạch):** tao chấm **20 FLAG đã nộp**; phần bề-mặt lead-stale tự khai CHƯA/PARTIAL (`STATUS` 830 dòng còn lại · `HANDOFF` 383/417 dòng · 20/23 persona · `runs/…cay-4-folder/` ~47 KB) **tao KHÔNG soi** — không thuộc trục tao (tao KIỂM con-đo, không soi lead).

END ring2-audit-close-S162 — VERDICT=19Đ/1T · TOTAL=20


