# ring2-audit (vai-KIỂM vòng soi-lead H24) @close S158

> Guard AS-17: APPEND TỪNG VERDICT trong lúc làm. Mọi section kết `---`.
> PIN: `sub-lead-stale-close-S158.md` (6 FLAG, mtime 20:23) + `sub-lead-gap-close-S158.md` (5 FLAG, mtime 20:24).
> Tuần-tự C4b: file này ghi SAU cả 2 (mtime > 20:24). Xác nhận cặp H24 CÓ chạy phiên này ⇒ KHÔNG NO-OP.

## §0 — PIN + fail-safe

- [x] `sub-lead-stale-close-S158.md` tồn tại, 6.527 B, mtime 2026-07-28 20:23:17
- [x] `sub-lead-gap-close-S158.md` tồn tại, 8.384 B, mtime 2026-07-28 20:24:22
- [x] `run.md` tồn tại 2.569 B — taskList `(j)(ii)` cặp H24 + `(j)(ii-bis)` ring2 AUTO sau con-đo
- ⇒ PIN ĐỦ. Chấm tiếp.

---
## §1 — Khuôn slot + enum ĐÓNG (chống pin-bản-cắt 4-A + chống tự-chế class)

- `grep -c '^## FLAG-'` stale = **6** == `END · TOTAL=6 FLAG` ✅ · gap = **5** == `END · TOTAL=5 FLAG` ✅
  ⇒ pin KHÔNG phải bản-cắt. Guard 4-A (tao tự nêu @S152) có răng cả 2 vai.
- Enum ĐÓNG `lead_self_audit.flag_classes` = 11 class. 11/11 FLAG dùng class TRONG enum, **0 tự-chế**:
  stale `view-residual-asym`×2 · `view-stale-status`×2 · `view-stale-count`×2
  gap `gap-carry-dropped`×2 · `gap-decision-sunk`×2 · `gap-incident-unrecorded`×1
- 🔸 Khoản `jump_on_class_repeat` nằm ở `h24_cadence` (=3), KHÔNG ở `lead_self_audit` (null).
  stale §Phân-rã trích "=3" ⇒ **giá trị ĐÚNG**, chỉ khác nhánh key. Không tính lỗi.

---

## §2 — Tái-dựng số #1 (nặng nhất): RAG chunk_count — PHÉP ĐO THỨ 3

Tao tự gọi `list_projects` (chính instrument mà ô STATUS:459 tự trích):
- `proj_solution_erp` 0 · `proj_vipix_multisite` 0 · `proj_dh_y_duoc` 0 · `proj_namgroup_main` 0
  `proj_ashico_erp` 0 · `proj_vipix_ai_infra` 0 · `proj_benhvien_aau` 0 · **`shared_global` 0**
- ⇒ **8/8 = 0**. Khớp TUYỆT ĐỐI vai-STALE + lead. Ba phép đo độc-lập cùng kết quả.
- `STATUS:461` verbatim = `admin **BK8w3QxU** · user **DYnxSI0T**` ⇒ view-claim FLAG-1 THẬT.
- ⇒ **stale FLAG-2 ĐẠT** (số load-bearing tự tái-dựng, không tin lời khai).

---

## §3 — Điểm-đáng-soi-nhất: lead khôi phục mồi-ngầm có ĐÚNG không?

Chạy lại đúng lệnh gap FLAG-2 dán:
`git show 82a0457:.claude/sessions/session-7/_mind-s-7.md | sed -n '99p'` ⇒
`- Guard post-wave assertion mù 4 path hook — sửa bằng cách soi commit của hook thay vì `git status` {mới-nêu}`
- **KHỚP TỪNG CHỮ** với cái gap dán ở dòng :24. ⇒ pin cho `ctx-audit` **ĐÚNG**.
- Chéo: `sed -n '99p'` HÔM NAY = `🔴 Luật nén _mind **HỞ** … (3.070 B) … {treo-chờ-anh}` ⇒ đúng là **vấn-đề MỞ THẬT**, không phải mồi ⇒ hệ-quả 2-chiều gap mô tả là THẬT.
- Byte: `82a0457` = **14.707 B**; nay = **30.305 B** (gap khai "nay 30.305 B" ⇒ **KHỚP**).
- ⇒ **gap FLAG-2 ĐẠT** — và đây là FLAG *chặn được* một `ctx-audit` ĐẠT-ảo trong chính cửa này.

---
## §3-bis — Đường thứ 2 (mạnh hơn git-archaeology) mà gap KHÔNG dùng

Tao tìm được nguồn **định-danh mồi bằng NỘI DUNG**, không cần khảo-cổ git:
`runs/2026-07-26-S154-bookend-open/sub-ctx-audit-open-S154.md:199` — chính `ctx-audit` @open viết sẵn
cách chấm nấc-1: `grep -n "post-wave\|2\.1\.9(f)\|soi commit của hook" _mind-s-7.md`.
⇒ Mồi = **"Guard post-wave assertion"**, XÁC NHẬN ĐỘC-LẬP khôi phục của lead. Hai đường khác nhau, 1 kết quả.

🔸 **D-1 (khuyết-tật ngoài FLAG, không hạ verdict):** gap KHÔNG mở `sub-ctx-audit-open-S154.md`.
Mở thì được 2 thứ: (i) định-danh mồi khỏi phải suy từ git; (ii) **biết rủi-ro ĐẠT-ảo đã tự-giảm** —
vì `:199` nấc-1 là **grep nội-dung**, số dòng chỉ xuất hiện ở **nấc-4** làm neo báo TRƯỢT.
⇒ nhánh (a) "ctx-audit đọc dòng 99 → ĐẠT-ảo" **overstated**: quy-trình của chính ctx-audit chặn nó.
FLAG vẫn ĐẠT (neo MỤC là sự-thật, resolve đúng, luật rút ra đúng) — chỉ SEV HIGH là hơi cao.

🔸 **Chronology tao dựng (gap không dựng):**
`82a0457` 07-26 19:28 size **14.707 B**, L99 = **Guard** (mồi) — scribe TRƯỚC pause đầu, đúng persona §43
`8d4075a` 07-27 01:01 size **20.474 B**, L98 = Guard, **L99 = "Trần `mind_ctx_kb`"** — VÀ đây đúng là
commit ĐẦU TIÊN đưa chữ "mồi-ngầm" vào `_context-s-7.md:62` (`git log -S`).
⇒ 🔴 **Neo `:99` LỆCH NGAY TẠI COMMIT SINH RA NÓ**, không phải "trôi dần sau 3 lần nén".
Trong **mọi** trạng-thái đã-commit kể từ lúc mint, `_mind:99` chưa từng trỏ đúng mồi.
⇒ Con số `20.474 B` gap khai "lúc gieo" = size tại **commit mint-neo**, KHÔNG phải lúc gieo mồi (14.707 B).
Cả 2 số tao in ra đây. **Không hạ verdict** (chỉ là nhãn sự-kiện), nhưng kết-luận của gap
*mạnh thêm 1 nấc*: luật "CẤM neo-bằng-số-dòng vào `_mind`" được chứng bằng **stale-at-birth**, không cần viện tới nén.
Bồi thêm: chính `sub-ctx-audit-open-S154.md:210` khai 3 ý chưa-chốt ở `:91 :92 :93`, mà tại `82a0457`
chúng nằm `:95-:98` ⇒ neo-số-dòng hỏng **ngay từ artifact đầu tiên**.

---
## §4 — VERDICT per-FLAG (11 FLAG = 6 stale + 5 gap)

### vai-STALE

| # | class | verdict | tao tự đối-chứng |
|---|---|---|---|
| S-1 | `view-residual-asym` | **ĐẠT** | `STATUS:461` verbatim = `BK8w3QxU`/`DYnxSI0T` ✓ · cicd `:88-89` = `8-QYcMOg`/`DptYR4wL` ✅ĐỔI ✓ · `:125-126` control-âm text/html ✓ · `:58` DÙNG ô này làm baseline ⇒ hại THẬT ✓ · `git show 3b6fabc -- docs/STATUS.md` = **đúng 2 hunk** `@@ -3,7 @@` + `@@ -633,6 @@`, cả 2 **không phủ 461** ⇒ một-phía ĐÚNG. 🔸 số `900 B` là của **admin**; eoffice = **876 B** (tao đọc `:126`) — vi-sai, không đổi kết luận. |
| S-2 | `view-stale-status` | **ĐẠT** | phép đo THỨ 3 (§2): 8/8 `chunk_count=0`. `STATUS:473` + `HANDOFF:7`(39) đối-chứng nội-bộ ✓ |
| S-3 | `view-stale-count` | **ĐẠT** | `STATUS:6` chứa **`4 cửa-sổ`** + **`counter **31**`** ✓ (tao trích đúng chuỗi) · máy: `counter=32`, `last_ticked_session=S158` ✓ · `WAL:3` = `window 5` ✓ |
| S-4 | `view-residual-asym` | **ĐẠT** | `WAL:5` (mega-line) chứa `[C] 22 FLAG governance treo — nay **4 cửa-sổ**` ✓ · `WAL:3` = `window 5` ✓ — **một file, hai mặt** xác nhận |
| S-5 | `view-stale-status` | **ĐẠT** | `runs/…day-wake-probe-first/run.md:55` = `[x] adap-report … nấc **agreed**` ✓ · adap-report **6.360 B** mtime **20:04** ✓ (khớp CẢ size lẫn giờ) · `WAL:3 updated 20:06` **> 20:04** ⇒ thứ-tự đúng · `WAL:21` vẫn `[ ]` ✓ |
| S-6 | `view-stale-count` | **ĐẠT** | `HANDOFF:7` slot max = **(41)** ✓ (tao liệt: 33-41) · `WAL:22` = (42)(43)(44) ✓ · HANDOFF có **4×** `test 532` ✓ · canonical **562** ✓. 🔴 **D-2 neo SAI:** stale ghi *"canonical `STATUS:457`=562"* — `:457` thật là dòng **`| Skills | 6 |`**; 562 nằm ở **`STATUS:6`**. Giá trị đúng, **địa chỉ sai**. |

### vai-GAP

| # | class | verdict | tao tự đối-chứng |
|---|---|---|---|
| G-1 | `gap-carry-dropped` | **ĐẠT** | `_context:62` verbatim khớp ✓ · `grep -rl "máy canh" .claude/auto-memory/` = **0** ✓ · tao grep RỘNG `ổn.định.theo.vai` = **5 hit**, vị-trí: `_context:62`(lời hứa) · `_mind:238` · `bookend-open-synthesis.md:74`(nguồn) · ×2 chính file gap ⇒ **0 hit trong sổ bền** ⇒ mệnh-đề load-bearing ĐÚNG. 🔸 **D-3:** grep thứ 2 **không kèm tập-đo** ⇒ đọc trần là "0 repo-wide" = SAI (thật 5). Tái-phạm lỗi tao bắt @S150. |
| G-2 | `gap-decision-sunk` | **ĐẠT** | §3 + §3-bis: khôi phục mồi ĐÚNG TỪNG CHỮ, xác nhận 2 đường độc-lập. Kèm D-1 (SEV hơi cao) + chronology stale-at-birth. |
| G-3 | `gap-incident-unrecorded` | **ĐẠT** | `feedback_agent_return_garble_recover.md` mtime **2026-07-26 01:50** ✓ khớp · `grep -c 'S15[3-8]'` = **0** ✓ · `docs/governance/error-ledger.md` mtime **2026-07-26 01:41** ✓ khớp, S153-158 = **0** ✓. Chi tiết số 27 → §5. |
| G-4 | `gap-carry-dropped` | **ĐẠT** | spec `:458` tồn tại (thật ở `runs/2026-07-28-S157-ke-hoach-ky-ket-hd/`) ✓ · tao grep rộng: 4 hit **đúng chủ-đề** = `_mind:100` · `WAL:18` · spec`:458` · `sub-review-claims-4.md:119` ✓ khớp mô-tả "2 ephemeral + 2 run-folder S157" · **0 hit** ở HANDOFF/STATUS/migration-todos/commands/agents ✓ · `WAL:18` tự khai *"Chưa có nhà trong bản-đồ"* ✓ (3 hit khác là S114/S127, khác chủ-đề — không tính) |
| G-5 | `gap-decision-sunk` | **ĐẠT** | `grep -n '^## ' pause.md` = `1·2·2.6·2.7·3·3.5·4·5` ✓ **KHỚP TỪNG MỤC** · `§2.6-bis` KHÔNG có ✓ · `grep -c wall-clock` = **0** ✓ · outbox thật ở `broadcasts/outbox/ai_infra/`, thư SE→hub gần nhất = `2026-07-26-se-to-ai_infra-ctx-adopt-executed-va-datum.md` ✓ tồn tại đúng tên |

**TỔNG: 11/11 ĐẠT · 0 TRƯỢT · 0 KHÔNG-CHẤM-ĐƯỢC.** 3 khuyết-tật NGOÀI flag (D-1 SEV · D-2 neo sai · D-3 grep không tập-đo) + 1 self-inconsistency (§5).

---
## §5 — Số "~27 sự-cố `#53`": tái-dựng ĐƯỢC tới đâu, KHÔNG được từ đâu

Lệnh tao chạy (đọc CHÍNH các dòng gap neo, hôm nay):
- `_mind:199` = *"**0 byte mất** qua **`#53` ×11**"* ✓ resolve đúng
- `_mind:181` = *"`#53` **×13** riêng cửa-sổ này (**cửa 1 = ×11**)"* ✓ resolve đúng
- `WAL:34` = *"**`#53` cửa này ×2**: `cicd-monitor` … + invest lượt 1 `skeleton-ruột-rỗng`"* ✓
- Số học: **11 + 13 + 1 + 2 = 27** ✓ khớp.
- 🔴 Bẫy trùng-đếm tao chủ động thử: `:199`×11 có trùng `:181`×13 không? **KHÔNG** — `:181` tự tách
  *"riêng cửa-sổ này"* vs *"(cửa 1 = ×11)"* ⇒ **rời nhau**, cộng hợp lệ.

**Phán rõ 2 tầng (không cho qua, cũng không vu-oan):**
- ✅ **Tái-dựng ĐƯỢC** tầng *số học + phân-rã + neo còn resolve* + nhãn `cận-dưới ~` là **hedge ĐÚNG**.
- ❌ **KHÔNG tái-dựng được** tầng *census*: 27 là **cộng 4 con số TỰ-KHAI trong thân `_mind`/WAL**,
  không phải đếm sự-cố độc-lập. Tao **không có** đường đo lại 27 ca từ đĩa ⇒ ghi thẳng: **derive-from-body**.
  Phần tao xác nhận ĐỘC-LẬP được: **+2 của closeout này** — CẢ HAI pin tự khai *"Lượt 1 `#53` garble"*
  ở dòng :3 ⇒ 2/4 ca lead cộng thêm là **quan-sát trực-tiếp**, không phải lời-khai.

🔸 **D-4 (tự mâu-thuẫn TRONG CÙNG 1 tệp):** G-3 neo bằng **`_mind:199` / `:181`** — đúng thứ mà
**G-2 của chính nó** vừa ra luật: *"🔴 CẤM mọi neo-bằng-số-dòng vào `_mind`"*. Hôm nay 2 neo còn trúng;
**block kế là mục**. Đề: G-3 pin lại bằng trích nội dung (`#53` ×13 riêng cửa-sổ này).

---

## §6 — Falsify-log (6 phép · 2 HELD · 4 BROKE)

| # | Phép PHỦ-ĐỊNH tao thử | Kết |
|---|---|---|
| F-1 | *"gap bịa số `20.474 B` lúc gieo"* → quét size mọi commit của `_mind-s-7.md` | **BROKE (nghi-vấn của TAO sai)** — `8d4075a` = **đúng 20.474 B**. Số THẬT. Nhưng lộ ra chronology §3-bis. |
| F-2 | *"lead khôi phục NHẦM mồi — tại commit mint `8d4075a`, L99 là dòng `Trần mind_ctx_kb`, KHÔNG phải Guard"* → cố lật | **HELD (khôi phục ĐÚNG)** — `sub-ctx-audit-open-S154.md:199` định-danh mồi bằng **grep nội-dung** `post-wave\|soi commit của hook`; và persona §43 buộc scribe **TRƯỚC pause đầu** ⇒ trạng-thái `82a0457` (L99=Guard) mới là mốc gieo. Lật KHÔNG được. |
| F-3 | *"stale FLAG-6 neo `STATUS:457`=562 — kiểm địa chỉ"* | **BROKE (con-đo sai)** — `:457` = dòng `\| Skills \| 6 \|`. 562 nằm ở `STATUS:6`. **D-2**. |
| F-4 | *"gap FLAG-1 khai `grep ổn.định.theo.vai = 0 hit`"* → chạy KHÔNG giới-hạn thư-mục | **BROKE phần literal** — repo-wide = **5 hit**. Substance vẫn HELD (0/5 nằm trong `auto-memory/`). **D-3**. |
| F-5 | *"`~27` trùng-đếm cửa 1 hai lần"* → đọc thẳng `_mind:181` | **HELD** — `:181` tự tách "riêng cửa-sổ này" vs "(cửa 1 = ×11)". Cộng hợp lệ. |
| F-6 | *"lượt-2 của 2 con-đo có dấu cắt/vội sau `#53`"* → khuôn slot + END + bảng | **BROKE (nghi-vấn của TAO sai)** — 6==6 · 5==5 khớp END TOTAL; mọi FLAG đủ 3 mặt view/source/hại; 0 mục cụt. **Không có dấu vội.** |

---
## §7 — 🔴 THÁCH-CLEAN (bắt buộc): `gap-owner-specifics = 0` "honest-zero CÓ ĐO"

gap tuyên đo **4** quyết-định owner của L7, **4/4 giữ SPECIFICS** ⇒ 0 flag.
Tao KHÔNG chấm lại 4 cái nó nêu — tao soi đúng chỗ nguy: **mẫu-số có vét cạn không.**

**1 lệnh grep marker owner (`anh chốt|owner chốt|lệnh anh|anh ĐẶT TÊN|anh bác|anh VETO`) trên `_context-s-7.md` + `WAL.md`** ⇒ ra **4 hit**, trong đó **2 hit NẰM NGOÀI tập 4 của gap**:

- `_context:78` — **"CHIA 2 ĐỢT (anh chốt): đợt 1 = NỀN, đợt 2 = phần người dùng chạm"**
- `_context:103` — **anh chốt *"đã xong bước thứ 6 tức CEO duyệt"*** (mốc neo trọn phạm-vi A2)

Và **2 cái nữa ngay trong `STATUS:6`** mà gap không kể: *"cờ `AllowApproverDelete` **per-NGƯỜI** — **owner chốt (5)**"* · *"🔴 **anh ĐẶT TÊN khúc 7→12 = "đề xuất giá trị ký kết hợp đồng"**"*.
⇒ **mẫu-số thật ≥ 6-8, gap khai 4.**

**Tao tự chấm 2 cái nó bỏ sót (không mượn lời ai):**
- `2 ĐỢT` → `STATUS:6` giữ **`chia **2 ĐỢT** theo lệnh anh vì …`** ⇒ **CÒN specifics** (kèm cả lý do). Không flag.
- `"đã xong bước thứ 6 tức CEO duyệt"` → 🔴 `grep -c 'bước thứ 6'` = **0 / STATUS.md** · **0 / HANDOFF.md**.
  Bề mặt bền chỉ còn dạng **DẪN XUẤT**: *"A2 quy trình SAU CEO duyệt (PDF 21 bước, phạm vi **b.7→21**)"*.
  ⇒ nguyên-văn owner **bốc hơi**, chỉ còn con số phái sinh.

**PHÁN (calibrate, KHÔNG chế flag):**
- Verdict **0** của gap tao **KHÔNG lật**: cả 2 ca ngoài-tập đều tái-dựng được ý owner từ bề mặt bền
  (`b.7→21` + "SAU CEO duyệt" chở đủ nghĩa "bước 6 xong"). ⇒ `gap-owner-specifics` **ĐẠT**.
- Nhưng **lời khai coverage TRƯỢT**: *"Đo 4 quyết-định owner của L7"* đọc thành **vét cạn**, thực tế là
  **mẫu chọn**, KHÔNG khai tập-bù, KHÔNG khai cách lấy mẫu. Đây là **TÁI-PHẠM đúng lỗi ring2 đã bắt @S154**
  (`_mind:97-98`: *"ring2 chấm TRƯỢT khai-phạm-vi của lead-gap vì lời khai không vét cạn"*).
- **M-1 (mục yếu nhất, giao lead cân):** `bước thứ 6` = 0/0 trên 2 sổ owner-facing — mỏng nhất trong cả tập,
  và nó **nằm ngoài** 4 cái gap đo ⇒ nếu lead muốn 1 vá rẻ: nhét nguyên-văn vào `STATUS:6` cạnh `b.7→21`.

---

## §8 — Enum ĐÓNG + tally máy (tái-dựng)

- 11/11 FLAG **trong** enum `lead_self_audit.flag_classes` (11 class) ⇒ **0 tự-chế**. Đã kiểm §1.
- `.session-counter.json` → `class_repeat.counts` = **11 key**, **11/11 kiểu `int`** (bất-biến "chỉ chứa số" còn sống).
  🔸 So mốc tao escalate @S151 (counts 10-key, thiếu `gap-underfill`): nay **`gap-underfill=1` CÓ MẶT** ⇒ **D-2/S151 đã ĐÓNG**.
- Đối-chứng tally stale tự trích: `view-residual-asym **5**` ✓ · `view-stale-count **5**` ✓ · `view-stale-status **2**` ✓ — **3/3 khớp máy**.
- `jump_on_class_repeat` = **3** (sống ở `h24_cadence`, KHÔNG ở `lead_self_audit` — key đó `null`). stale trích giá trị ĐÚNG.
- 🔸 **Bất-đối-xứng 2 vai (INFORM, giao lead):** stale CÓ nêu ngưỡng jump (`view-stale-status` 2→3 = chạm).
  gap **KHÔNG** nêu, dù `gap-carry-dropped` đang **7** và lượt này fire tiếp ⇒ **8**, vượt ngưỡng 3 từ lâu.
  Tao KHÔNG phán jump phải nổ (state `_jump_state_S149` có thể đã tiêu-thụ) — chỉ nêu **một vai khai, một vai im**.

---

## §9 — Ranh vai tao tự giữ

- Tao KIỂM **2 con-đo**, KHÔNG tự soi lead. Mọi mục trên đều neo vào **claim của con-đo**.
- no-self-exempt: tao ≠ `lead-stale-auditor` / `lead-gap-auditor` ✓
- Propose-only: file này read-only-với-repo (chỉ ghi chính nó trong `runs/`). Lead single-writer.
- Tuần-tự C4b: pin mtime 20:23 / 20:24 < file này ⇒ tao chạy SAU cặp H24 ✓

`END · TOTAL=11 CLAIM`
