# sub-lead-gap-auditor — bookend @OPEN S173 (phiên-LOGIC L11) > H24 §2(1) vai-GAP — soi **CÁI BỊ THIẾU** trong cái LEAD surface. > INFORM-only · propose-only · KHÔNG Write/Edit ngoài file này · KHÔNG RAG-write. > Ngày: 2026-08-05 · repo SOLUTION_ERP · nhịp: cặp H24 light VÔ-ĐIỀU-KIỆN @bookend (hình B @S149). > 🔴 Ghi ĐỔ RUỘT LIÊN TỤC (chống #53): mỗi FLAG ghi ngay khi vừa xác minh. ## 0. Enum ĐÓNG (đọc từ `.claude/agent-memory/memory-budget.json` → `lead_self_audit.flag_classes`) 12 class (5 `view-*` = vai-stale · 6 `gap-*` = vai-GAP · +1 `view-claim-broader-than-sample` mở @S172 slot 68). Trục của tao = 6 class `gap-*`: `gap-carry-dropped` · `gap-carry-aged` · `gap-owner-specifics` · `gap-decision-sunk` · `gap-underfill` · `gap-incident-unrecorded`. CẤM tự chế class — không xếp được ⇒ báo verbatim + đề-nghị owner mở enum. ## 1. Tập KỲ-VỌNG (dựng TRƯỚC khi so — bài "không có thì không tự hiện ra") Nguồn cam-kết đã đọc (đo tươi 2026-08-05, HEAD `1b3bcaa` + `6406514 wal:`): | # | Nguồn | Cái nó HỨA | |---|---|---| | E1 | `docs/HANDOFF.md:27-36` — `### 🔵 NEXT em @S172` | 7 việc em tự làm (E-7 · 5 acceptance · run.md mồ côi · 8 dir rỗng · gist ĐÔI · harness-refine disposition · 6 site neo tương-đối) | | E2 | `docs/HANDOFF.md:9-25` — `## 🔴 CHỜ ANH @S172` | slot (67)…(72); (68)(69)(70)(71)(72) **đã ratify** `6730eb4`, (67) còn treo | | E3 | `docs/HANDOFF.md:38` — khối `Carry @S172` | **14 slug** re-stamp | | E4 | `.claude/WAL.md` | TRỐNG (goal/chain/next/verify rỗng) — L10 `_end` @S172 | | E5 | `CLAUDE.md:121` | *"Audit định kỳ: đầu mỗi tháng … Lần kế: **2026-08-01**"* | | E6 | `.claude/agent-memory/memory-budget.json` → `measured{}` | 3 chỗ hẹn *"full re-sync bằng script @drift-audit **2026-08-01**"* | | E7 | `CLAUDE.md` §🚀 BẮT ĐẦU SESSION | 5 file đọc trước tiên | | E8 | `memory-budget.json` → `token_governor.tier1_hotfeed_tokens.lead_tokens` = **380K** + `crystallized_backfill.target` = **210000** (ON) | hạn-mức nạp | | E9 | `.claude/governance/.session-counter.json` → `class_repeat.counts` | tally 12 class (enum ĐÓNG 12/12) | ### 1-bis. Đối-chiếu — cái ĐÃ ĐÓNG (khai trung thực, KHÔNG báo lại như mới) 🔴 4/7 việc NEXT-em @S172 **ĐÃ LÀM XONG hoặc ĐÃ CÓ NHÀ BỀN** — tao tự BÁC lại chính FLAG cũ của mình: - **E-7 `[carry:e7-cot-chet-khkk]`** — FLAG-1 HIGH @S172 (*0 hit trên CẢ 6 sổ bền*) nay **ĐÃ VÁ**: `HANDOFF` NEXT-em #1 (2 hit `E-7`) + khối Carry + `run.md:Ledger` mục `[ ] Nợ E-7`. ⇒ **RESOLVED**, không FLAG lại. - **`[carry:acceptance-runtime-khkk]`** — có nhà `HANDOFF` NEXT-em #2 + Carry. ⇒ **RESOLVED**. - **`run.md` S171 mồ côi** — lead hứa "@closeout", **ĐÃ LAND**: `run.md` nay có khối `## Ledger — ĐÓNG @S172`, `cicd`=5 · `998ea55`=5 · `deploy`=3 hit (trước 0). ⇒ **RESOLVED** — lời-hứa-@closeout lần này **đã trả**. - **8 dir rỗng class-S54** — đo tươi `find . -type d -empty` (loại `.git`): **0 dir dưới `runs/`**, `fe-user/.claude` **không còn tồn tại**; 5 dir rỗng còn lại đều là build-artifact (`.vs/sd`, `node_modules/.vite-temp` ×2, `obj/**/staticwebassets` ×2) — **ngoài phạm vi**. ⇒ **RESOLVED**. - **slot (67) owner-verbatim** — FLAG-4 @S172 (*chữ owner 0 hit 4 sổ*) nay có nguyên-văn ở `HANDOFF:12` (`> 🔴 Chữ của anh, nguyên văn (ảnh 2 @S171)`). ⇒ **RESOLVED**. --- ## 2. FLAG ## FLAG-1 — `gap-carry-dropped` — HIGH **Lỗi máy H24-2 được CHỨNG @S172 đã rơi khỏi mọi bề-mặt sống khi slot (70) được đóng — nửa còn lại KHÔNG land, và nó là chính con-đo canh `gap-carry-aged`.** - **hứa ở:** `docs/HANDOFF.md:21` (khối `## 🔴 CHỜ ANH @S172`, slot **(70)**, dòng phụ) — nguyên-văn: > *"🔴 Kèm một lỗi máy `ring2` cài lại bằng python và chứng được: detector **H24-2 dựng segment từ `marks[0]`**, mà marker `**NEXT anh/em` đầu tiên nằm ở `HANDOFF:90` ⇒ **toàn bộ L1-89 không bao giờ được đọc**, nuốt **12 slug** gồm cả hai khối Carry đỉnh. Detector chấm tuổi trên segment cũ rồi in `[ok]`."* - **hiện:** **VẮNG** khỏi mọi sổ bền sống. Đo tươi 6 sổ (`grep -o … | wc -l`, control-dương kèm): | sổ | `marks[0]` | `H24-2` | ghi-chú | |---|---|---|---| | `.claude/WAL.md` | 0 | 0 | WAL TRỐNG | | `docs/HANDOFF.md` | **1** | 4 | hit DUY NHẤT = chính `:21` — **khối CHỜ ANH ĐÃ ĐƯỢC TRẢ LỜI** ⇒ sẽ bị thay khi segment S173 land | | `docs/STATUS.md` | 0 | 1 | (hit `H24-2` là chỗ khác) | | `docs/governance/error-ledger.md` | 0 | 0 | 53.017 B, không rỗng | | `docs/changelog/migration-todos.md` | 0 | 0 | 88.151 B | | `.claude/governance/ACTIVE-MARKS.md` | 0 | 1 | | 0 carry-slug nào phủ nó (54 slug distinct trên HANDOFF, **không có** slug detector/H24/marks) · 0 dòng NEXT-em @S172 (#1→#7 không nhắc). - **KHÔNG-AI-ĐƯỢC-GIAO ≠ CHƯA-LÀM ⇒ tao chạm đĩa (bài lead S121):** - `git log -6 -- scripts/governance-detectors.ps1` ⇒ commit gần nhất **`febe6b1` 2026-07-29** (`wal: pause`). **Commit đóng slot 70 = `6730eb4` (2026-08-05) KHÔNG chạm file này** — nó chỉ sửa `scripts/h24-signal-write.ps1` (+39, param `-CoCa`). - Thân commit `6730eb4` mô-tả slot 70 **chỉ nửa "tách 2 sổ đếm"**; 0 chữ về `marks[0]`. - Mã còn nguyên trên đĩa — `scripts/governance-detectors.ps1:892-898`: ``` $marks = [regex]::Matches($raw, '(?m)^\*\*(?:[^\x00-\x7F]+\s*)?NEXT\s+(?:anh|em)\b') for ($i = 0; $i -lt $marks.Count; $i++) { $start = $marks[$i].Index; … } ``` và `:916` `foreach ($k in $carryLines[0])` — coi segment ĐẦU-TIÊN-THEO-FILE là "mới nhất". - **ĐO LẠI TƯƠI (chạy đúng regex của script bằng python, HEAD `1b3bcaa`) — số nay XẤU HƠN bản ring2 @S172:** | phép đo | ring2 @S172 | tao @S173 | |---|---|---| | `marks[0]` ở dòng | 90 | **130** | | vùng câm (byte) | — | **31.698 B** (L1-129) | | carry-slug bị nuốt | 12 | **41 lượt / 16 slug distinct** | | `carryLines[0]` = cái detector gọi "mới nhất" | — | segment **@HANDOFF:130** (`**🔴 NEXT em (phiên kế)`, kỷ-nguyên **S158**), chỉ **5 slug**: `adap-apply-2-thu · ctx-t9-dogfood · hmw-subfile-index-collision · hmw-width-vs-roster · ring5-audit-gap` | ⇒ **14/14 slug khối `Carry @S172` VÔ HÌNH với detector.** 11/11 slug khối `Carry @S168` cũng vô hình. - 🔴 **GỐC SÂU HƠN bản ghi @S172 (ring2 quy cho "marks[0] muộn"; thật ra là DRIFT ĐỊNH-DẠNG):** regex neo vào **bold-literal** `^\*\*…NEXT anh|em`, nhưng khối NEXT của kỷ-nguyên hiện-hành viết bằng **heading**: `HANDOFF:27` = `### 🔵 NEXT em @S172`, `:68` = `## 🔴 NEXT em @S168+`. Regex **không thể** khớp `###`/`##` ⇒ 2 segment mới nhất không tồn tại với detector. Và vùng câm **tự nới ra mỗi closeout** (segment mới luôn prepend TRÊN `marks[0]`) ⇒ 90 → 130 chỉ sau một kỳ. Đây là hỏng **đơn-điệu tăng**, không phải hỏng đứng yên. - **hệ-quả đo được (đừng đọc số 0 là sạch):** `.session-counter.json` → `class_repeat.counts.gap-carry-aged = **0**`. Số 0 này **VÔ NGHĨA** — nó không có nghĩa "không carry nào già", nó có nghĩa **con-đo đang chấm tuổi trên segment S158 rồi in `[ok]`**. Chính là ca `_residual_khai_that` của `distill_trigger` lặp lại ở tầng khác: có máy, máy chạy exit-0, máy đo nhầm vật. - **im bao lâu:** 1 phiên-LOGIC (chứng @S172 close → nay S173 open, 0 lượt được surface lại) — nhưng **bản thân lỗi máy sống ít nhất từ khi HANDOFF đổi sang heading-format** (segment `@S168` `:68` đã là `##`) ⇒ **≥ 2 phiên-LOGIC (L9→L11)** detector `H24-2` không đọc segment hiện-hành lần nào. - **resolve:** hết flag khi **một trong hai**: (a) `scripts/governance-detectors.ps1` sửa anchor để khớp CẢ `**`/`##`/`###` + `carryLines[0]` chứng-minh-được là khối `Carry @S`, verify bằng fault-inject 2 chiều (khối đỉnh có slug ⇒ đọc được · slug rớt ⇒ FLAG) — HOẶC (b) nếu chưa sửa ngay thì **cấp cho nó một nhà bền**: 1 slug `[carry:h24-2-segment-mu]` trong khối Carry + 1 dòng `error-ledger`, để lần sau không cần tao mới nhớ ra. - 🔴 **Kèm ràng-buộc cho lead:** chừng nào (a) chưa xong thì **CẤM in `gap-carry-aged: 0` như tín-hiệu sạch** ở bất kỳ báo-cáo nào — phải kèm chữ *"con-đo mù segment hiện-hành"* (META-COUNT: pass/fail tính TỪ SỐ ĐO, và số đo này đang đo nhầm vật).