# sub-lead-gap-auditor — bookend @open S169 (phiên-LOGIC L10 window-1)

- **run-id:** `2026-08-01-S169-bookend-open` · **vai:** `lead-gap-auditor` (H24 §2(1) trục GAP — soi **CÁI KHÔNG CÓ**)
- **nhịp:** light 3/6 · counter 43 · chưa OVERDUE ⇒ light = **stats-only**, không cổng bắn; hình-B @S149 = spawn VÔ-ĐIỀU-KIỆN mỗi bookend ⇒ vẫn soi đủ 6 class
- **mode:** propose-only. KHÔNG Write/Edit ngoài file này. KHÔNG RAG-write.
- 🔴 **Lượt này ghi-TRƯỚC-đo-SAU** (lead bắt đúng: lượt-1 đốt 163K tok / artifact 2.018 B = `skeleton-ruột-rỗng` AS-17/E-013).

## §0. Enum ĐÓNG (đọc canonical, KHÔNG chép trí nhớ)

`.claude/agent-memory/memory-budget.json` → `lead_self_audit.flag_classes` (dòng 176-188). 6 class trục GAP:
`gap-carry-dropped` · `gap-carry-aged` · `gap-owner-specifics` · `gap-decision-sunk` · `gap-underfill` · `gap-incident-unrecorded`.

---

## §1. Tập KỲ-VỌNG dựng TRƯỚC (bài: "cái không có thì không tự hiện ra")

### 1.1 Nguồn A — `.claude/sessions/session-9/_end` (chốt-kết L9, 1.187 B, mtime 2026-08-01 20:38:10)

**carry (dòng 3) — đếm tay = 11 slug:**

| # | slug | | # | slug |
|---|---|---|---|---|
| 1 | `ctx-t9-dogfood` | | 7 | `harvest-orphan-s159-tongquan` |
| 2 | `ring5-audit-gap` | | 8 | `endline-sub-md` |
| 3 | `hmw-width-vs-roster` | | 9 | `tra-bui-relogin` |
| 4 | `hmw-subfile-index-collision` | | 10 | **`bookend-3-vai-chet-S168` (MỚI)** |
| 5 | `ctx-verifier-no-self-append` | | 11 | **`measured-resync-17-23` (MỚI)** |
| 6 | `synthesis-roll-s159-s160` | | | |

**pending-anh (dòng 4) — 16 khoản:** (64)(65)(66) + (42)(43)(44)(46)(47)(48)(39)(40)(41)(60)(61)(62) + *"luật fixture-TEST chưa stamp mark"*.
**h24-tick:** counter=42 → khớp run.md tick 42→43 ✓.

### 1.2 Bề-mặt LEAD phiên này (nơi so)

`runs/2026-08-01-S169-bookend-open/run.md` (2.472 B) · `.claude/WAL.md` (**182 B = RỖNG**, reset @`4b1905d`) · `.claude/sessions/session-10/_context-s-10.md` (scaffold, 0 nội-dung phiên) · `docs/HANDOFF.md` + `docs/STATUS.md`.

---

## FLAG-1 — HIGH — `gap-carry-dropped`

**hứa:** `.claude/sessions/session-9/_end:3` → `… · bookend-3-vai-chet-S168 (MỚI) · measured-resync-17-23 (MỚI)`
**hiện:** **VẮNG** — 2 slug này **0 hit** trên MỌI bề-mặt khác.
**im:** sinh @S168-closeout (20:38), sang phiên kế = **1 nhịp**, nhưng đường sống-sót = **0**.

**Đo (lệnh chạm đĩa, không suy-luận trên bảng):**
```
grep -rn "bookend-3-vai-chet" docs .claude   → 1 hit  = .claude/sessions/session-9/_end:3
grep -rn "measured-resync"    docs .claude   → 1 hit  = .claude/sessions/session-9/_end:3
CONTROL-DƯƠNG cùng lệnh: "ctx-t9-dogfood"    → HANDOFF:36, :72, :116 … (lệnh CÓ răng, 0-hit là THẬT)
```
Khối RE-STAMP `docs/HANDOFF.md:36` liệt **10** slug (9 cũ + `tiep-reload-underfill`) — **thiếu đúng 2 slug MỚI**. Đếm bằng `grep -o` (chống mega-line): HANDOFF có **244 occurrence / 50 slug distinct**.

**🔴 CƠ-CHẾ (không phải "lead lười" — là lỗi THỨ-TỰ GHI, sẽ tái-phát mỗi phiên-LOGIC):**
```
docs/HANDOFF.md   mtime 20:33:44  commit ff7f655   ← khối RE-STAMP viết Ở ĐÂY
.claude/.../_end  mtime 20:38:10  commit 4b1905d   ← 2 carry MỚI SINH Ở ĐÂY, 4m26s SAU, commit KHÁC
```
`_end` là **write CUỐI CÙNG** của phiên-LOGIC. Bất-kỳ carry nào sinh ở bước chốt-kết **không có đường back-fill** về HANDOFF. Thêm 3 lớp bịt lối thoát:
- `.claude/WAL.md` đã **reset về rỗng** cùng commit `4b1905d` ⇒ không giữ hộ.
- `_end` của session-9 **KHÔNG** nằm trong `tiep_reload.sources` (nguồn chỉ đọc `_mind-s-<N>`/`_context-s-<N>` của phiên **hiện-hành** = session-**10**) ⇒ phiên sau không có lý-do đọc lại.
- `session-10/` là folder MỚI, trống ⇒ 0 kế-thừa.

**Hệ-quả đo được (không phải suy-đoán):** carry `measured-resync-17-23` chính là thứ **đến hạn HÔM NAY** (xem FLAG-3) — nó rớt đúng ngày nó phải nổ.

**tally:** `class_repeat.counts.gap-carry-dropped` = **9** (đơn-vị = *audit liên-tiếp*, KHÔNG phải lần-trong-phiên). Fire lượt này ⇒ **10**. Đã vượt `jump_on_class_repeat`=3 từ lâu ⇒ **KHÔNG phải tin mới, mà là bằng-chứng nghi-thức re-stamp CHƯA đóng được lỗ**.
**resolve:** hết flag khi (a) 2 slug xuất hiện ở khối carry của HANDOFF **hoặc** (b) nghi-thức `session-end §L.b(j)(iv)` đảo thứ-tự: **sinh `_end` TRƯỚC → re-stamp HANDOFF SAU**, hoặc thêm 1 bước đối-chiếu `_end.carry ⊆ HANDOFF[carry:*]` ở cửa đóng.

---

## FLAG-2 — HIGH — `gap-decision-sunk` — (65) hạn **HÔM NAY**, vắng khỏi bề-mặt phiên

**hứa:** `docs/HANDOFF.md:11` → **"(65) 🔴 Nhắn team bỏ qua notification ZZTEST — HẠN HÔM NAY."** (dry-run + fx3 đã bắn thông báo tới **roster THẬT** 11 người `KHKK-N4` + trạm HĐ, khung 16:12→19:38; *"Em **không có kênh Zalo/email**… việc này chỉ anh làm"*).
**hiện:** **VẮNG** khỏi mọi bề-mặt của phiên L10.
**im:** sinh 20:33 cùng ngày; **hạn hết trong ~3 giờ** (L10 mở 20:38, hôm nay 2026-08-01).

**Đo:**
```
run.md          : "(65)"=0  "ZZTEST"=0  "HẠN HÔM NAY"=0   (control-dương "orphan"=2 ⇒ lệnh có răng)
_context-s-10.md: "(65)"=0  "ZZTEST"=0
WAL.md          : rỗng
STATUS.md       : "(65)"=0  ("ZZTEST"=3 nhưng là mô-tả dữ-liệu, KHÔNG phải việc-chờ-anh)
```

**🔴 BẤT-ĐỐI-XỨNG = bằng-chứng đây là RỚT CHỌN-LỌC, không phải "cả lớp việc bị hoãn":** cùng mang mốc `2026-08-01`, `run.md:29` **CÓ** đưa monthly drift-audit lên, in đậm 🔴 *"Monthly drift-audit DUE hôm nay 2026-08-01"*. Món **duy nhất có bên-thứ-ba đang chờ** (11 người thật đã nhận thông báo rác) lại là món **không** được đưa lên.

**🔴 Cơ-chế chìm (vì sao MAI tệ hơn HÔM NAY):** chuỗi neo hạn là **`HẠN HÔM NAY`** — một chuỗi **tự-phá** ngay khi qua nửa đêm. Không có ngày tuyệt-đối cạnh nó. Sau 24h người đọc HANDOFF hiểu "HÔM NAY" thành *ngày đọc*, không ai phát-hiện được nó đã trễ ⇒ **im lặng vĩnh-viễn**. Đúng lớp `feedback_absence_looks_like_clean`: vắng-mặt trông giống ổn.
**resolve:** (a) surface (65) ngay trong lượt bootstrap kèm "còn ~N giờ", **hoặc** (b) đổi neo sang ngày tuyệt-đối `[hạn 2026-08-01]` (dạng `_end:4` đang dùng — đúng hơn HANDOFF) để mai còn đo được là trễ.

---

## FLAG-3 — MED — `gap-decision-sunk` — `measured{}` re-sync: lời-tự-hẹn đến hạn HÔM NAY, không vào work-state

**hứa (4 chỗ, chính máy tự hẹn):** `memory-budget.json` →
- `measured._note` (S138 addendum): *"full re-sync bang script @monthly drift-audit **2026-08-01**"*
- `measured._note` (S141 addendum): *"van CHO full re-sync bang script @drift-audit **2026-08-01**, KHONG va le tung so"*
- 3 row `harness-{eval,refine,audit}.rollout`: *"re-measure @drift-audit **2026-08-01**"*
- `docs/HANDOFF.md:32` NEXT-em #3: *"Monthly drift-audit 2026-08-01 DUE … **+ re-sync `measured{}`** (6 vai ctx/ring **0-baseline** — 'delta 0' với chúng = chưa từng đo)"*

**hiện:** `run.md:29` surface **NỬA TRƯỚC** (drift-audit) — `grep "drift-audit" run.md` = 1 ✓ — nhưng `grep "measured" run.md` = **0**. Vế re-sync bị cắt rời khỏi vế nó dính vào.
**im:** hẹn từ S138 (2026-07-17) → **8 nhãn phiên**; hôm nay là **đúng ngày đến hạn**.

**Đo tươi (chạm đĩa, xác nhận tiền-đề còn đúng):** `measured{}` = **17 row** · roster `.claude/agents/*.md` trừ README = **23** ⇒ **6 vai 0-baseline** (3 `ring*-audit` + 3 `ctx-*`). Với 6 vai này *"delta 0"* nghĩa là **CHƯA TỪNG ĐO**, không phải "không đổi".
**Ghép với FLAG-1:** carry đặt tên cho chính món này (`measured-resync-17-23`) là 1 trong 2 slug bị rớt ⇒ **mất cả con-trỏ lẫn chỗ-đứng trong work-state trong cùng một lượt**. Hai lỗ khác nhau, cùng một nạn-nhân.
**resolve:** work-state phiên này ghi re-sync như **1 đầu việc RIÊNG** (không nấp dưới chữ "drift-audit"); hoặc anh chốt hoãn ⇒ đổi ngày ở cả 5 chỗ `_note`/`rollout` (để nguyên "2026-08-01" sau hôm nay = neo chết y hệt "HẠN HÔM NAY").

---

## FLAG-4 — MED — `gap-owner-specifics` — luật owner *"cấm dùng master thật"* chỉ sống trong 1 file run-trace

**hứa:** commit `dd7db21` — *"S168 bo fixture TEST **theo lenh owner** — ADMIN_TEST + 2 user TEST + master data test (moi bo 2-3), **luat cam-dung-master-that**"* + `_end:4` khoản 16/16: *"**luật fixture-TEST chưa stamp mark**"*.
**hiện:** **VẮNG** khỏi mọi sổ bền của owner.

**Đo:**
```
git show --stat dd7db21  → 1 file changed:  .../sub-k8-dryrun.md   (+27)   ← DUY NHẤT
ACTIVE-MARKS.md : "fixture"=0 · "ZZTEST"=0 · "ADMIN_TEST"=0 · "master th"=0
HANDOFF.md      : "stamp mark"=0 ; 3 hit "fixture" = (a) tên commit "bộ fixture TEST",
                  (b)(c) bài-học CŨ không liên-quan ("fixture-hỏng-cho-xanh") ⇒ 0 hit mang NỘI DUNG LUẬT
rules.md        : 0 hit luật này (grep có ngữ-cảnh trả rỗng)
```
**Vì sao `gap-owner-specifics` chứ không `-dropped`:** cái sống sót là **nhãn gộp 5 chữ** trong commit-message (*"luat cam-dung-master-that"*) — đúng định-nghĩa *ghi CHUNG-CHUNG*. **SPECIFICS** (bộ nào được dùng, "mỗi bộ 2-3", ranh master-thật ⟂ master-test, ai được phép tạo) nằm trong **`sub-k8-dryrun.md` — một file run-trace**, tức tầng bằng-chứng-phiên, **không phải** tầng luật. Lần sau ai làm dữ-liệu test sẽ không có đường tra.

**🔴 Bất-đối-xứng khép nghi-ngờ "cả khối bị bỏ":** 16 khoản `pending-anh`, **15** có mặt ở khối CHỜ-ANH của HANDOFF ((64)(65)(66) `:9-13` + 12 slot cũ `:24`). Khoản **duy nhất 0-hit** đúng là khoản này ⇒ rớt **chọn-lọc**.
**Thêm:** `ACTIVE-MARKS.md` — mark mới nhất theo ID = **`…15-07-2026…`** ⇒ **17 ngày không mark nào được đóng**, trong khi L9 tiêu ít nhất 7 quyết-định owner ((54)(55)(56)(57)(58)(59)(63)). Kênh stamp đang nguội, không riêng món này.
**resolve:** hoặc stamp mark (quyền anh), hoặc **chép SPECIFICS** ra `docs/rules.md`/`docs/gotchas.md` + 1 dòng trỏ ở HANDOFF; giữ nguyên = luật chỉ tồn tại trong run-folder.

---

## FLAG-5 — MED — `gap-underfill` — nạp **~17%** sàn hot-load đã khai, headroom **153K tok** bỏ trống

**hứa (hạn-mức đã đặt):** `memory-budget.json` → `token_governor.tier1_hotfeed_tokens.lead_tokens` = **380.000**; luật đo ở `pct_print._note`: *"Headroom > 0 WHILE high-value content still unloaded = **under-fill (WRONG)** -> load more"*; `lead_note`: hot-feed **PHẢI** gồm *STATUS full current-state + 4-bucket work-state + ACTIVE-MARKS + HANDOFF 3-phiên + **active roadmap (migration-todos)** + **roster-slice** + **task-relevant gotchas***. Cộng `crystallized_backfill.target` = **210.000 (ON, owner-set S115)**.
**hiện:** **thiếu-nạp**, đo bằng chính con số lead in ra.

| Nguồn (6 file `crystallized_backfill.hotload_sources`) | Byte trên đĩa | Lead nạp | % |
|---|---|---|---|
| `docs/STATUS.md` | 223.442 | 1-150 + 461-482 ≈ 52.000 | ~23% |
| `docs/HANDOFF.md` | 165.928 | 1-117 = 34.914 | ~21% |
| `.claude/governance/ACTIVE-MARKS.md` | 31.197 | **trọn** | **100%** |
| `docs/changelog/migration-todos.md` | 88.151 | header | **<5%** |
| **`docs/gotchas.md`** | **117.708** | — | **0%** |
| **`.claude/agents/README.md`** | **54.222** | — | **0%** |
| **TỔNG sàn** | **680.648** | **≈ 118.000** | **≈ 17%** |

680.648 B khớp **chính xác** con số `crystallized-backfill.ps1` lead in (`hotload measured 680.648 B = [170.162..226.883] tok`, `measured_headroom **153.117** tok` worst-case ÷3.0) ⇒ 2 phép đo độc-lập trùng, tiền-đề vững.

**🔴 Chấm theo đúng luật (headroom>0 ∧ còn cao-giá-trị chưa nạp ⇒ SAI) — nêu ĐÍCH DANH:**
1. **`docs/gotchas.md` 117.708 B — nạp 0%.** Đây là **bucket-2 trong 4 bucket bắt buộc** ("lỗi-lặp/anti-pattern/gotcha", đúng tập `archive_gate.value_protect`). 86 gotcha, gồm `#85` OR-gate KHKK và `#86` (vừa sinh @S168) — 0 dòng vào context.
2. **`.claude/agents/README.md` 54.222 B — nạp 0%.** `lead_note` gọi tên *roster-slice*; Phase 1 READ mục **7**; phiên này spawn **≥9 vai / 5 vòng** ⇒ đúng lúc cần nhất thì không có.
3. **`docs/changelog/migration-todos.md`** — mới header, còn ~85.000 B. Là **bucket-3 (tồn-đọng)** và Phase 1 READ mục **5**.
4. **`docs/PROJECT-MAP.md` 13.518 + `docs/workflow-contract.md` 13.291 — nạp 0%.** Phase 1 READ mục **4** và **6**; đầu khối ghi rõ *"Đọc theo thứ tự, **KHÔNG skip**"*.

**Phép cộng đóng lập-luận:** 4 khoản trên = **283.739 B ≈ [70,9K..94,6K] tok** — **lọt trọn** trong headroom 153.117 tok, **còn dư ~58K**. Tức **không có đánh-đổi nào**: nạp hết thứ nghi-thức tự gọi tên vẫn chưa chạm nửa chỗ trống. Đây là *bỏ trống*, không phải *ưu-tiên*.
**Ranh trung-thực:** lead **có** nạp trọn `ACTIVE-MARKS` + trọn `memory-budget.json` ⇒ **KHÔNG** phải bootstrap ẩu toàn-diện; lỗ khu-trú đúng ở 4 nguồn trên.
**resolve:** nạp `gotchas.md` (≥5 section mới nhất) + `agents/README.md` + `migration-todos` section Phase hiện-hành TRƯỚC khi phát-biểu work-state; hoặc %-print §2.1.6 khai thẳng *"cố ý bỏ 4 nguồn vì lý-do X"* — có lý-do thì hết flag, im-lặng thì không.

---

## §3. Trục ĐÃ SOI — KHÔNG fire (khai để không đọc nhầm im-lặng thành chưa-soi)

- **`gap-owner-specifics` / 3 câu verbatim đề-bài nêu — SẠCH, giữ nguyên chữ anh:**
  - *"Cứ mở rộng đi nhé"* → `HANDOFF:18` **và** `:20` **và** `memory-budget.json:_expand_S168` (3 nơi, nguyên văn) ✓
  - *"Nếu điều chỉnh, tao sẽ tự tay điều chỉnh"* → `HANDOFF:22` (đủ câu) + `:9` (rút gọn nhưng **có ngoặc kép + trỏ (54)-FINAL**) ✓
  - *"chỗ hợp đồng cứ từ từ"* → `HANDOFF:113`, kèm hệ-quả cụ-thể *"Wave 5 chạm HĐ ⇒ phải hỏi lại anh"* ✓
  ⇒ **honest-zero có control-dương.** Lỗ owner-specifics phiên này nằm ở luật fixture (FLAG-4), KHÔNG ở 3 câu này.
- **`gap-carry-aged` — KHÔNG fire, và KHÔNG phải phát-hiện mới.** Bẫy-đo-2: 45 đoạn nhưng chỉ 1 đoạn mang khoá ⇒ mọi streak ≡ 1 ⇒ máy `H24-2` không bao giờ nổ. Nghi-thức re-stamp W3 **chưa land** ⇒ chưa tới lúc báo lại (luật: chỉ báo nếu W3 đã land mà streak vẫn ≡1). Đọc số của máy, KHÔNG tự tính lại.
- **`gap-incident-unrecorded` — KHÔNG fire.** Sự-cố L9 lớn nhất = 3 vai chết session-limit @S168 — **CÓ** vết ở `HANDOFF:5` (*"2 vai + trio-nấc-3 chết session-limit ⇒ nợ"*) + carry `bookend-3-vai-chet-S168`. Đã ghi ⇒ ngoài phạm-vi class. *(Lệch đếm "3-vai" vs "2 vai + trio" = cái CÓ-nhưng-LỆCH ⇒ **turf `lead-stale-auditor`**, không lấn.)*

## §4. INFORM (không tính TOTAL)

- **I-1 — NEXT-em @S168 5 mục, đối-chiếu run.md:** #1 K8-prep = 0 hit · #2 nợ-K7 = 0 hit · #3 drift-audit = **nửa** (FLAG-3) · #4 re-chạy detectors = **CÓ** (run.md khai 48+14 vs S168 50+10) · #5 persona sweep 21/23 = 0 hit. → #1/#2 là **việc sản-phẩm** anh **chưa giao** phiên này ⇒ theo luật *"vắng ≠ bỏ rơi"* **KHÔNG** tính FLAG. #5 đáng nhắc: điều-kiện kích-hoạt (*"ăn từ RESTART kế"*) **vừa xảy ra** (cửa-sổ mới, `_context-s-10` sinh 21:15) ⇒ hoãn thì hoãn có chữ.
- **I-2 — work-state L10 chưa có nhà trên đĩa:** `WAL.md` rỗng · `_context-s-10.md` còn nguyên placeholder *"(session-specific) — append @bootstrap phiên này"* · `_mind-s-10.md` chưa tồn tại (Phase 3.5 còn `[ ]`). Bootstrap **đang chạy** nên **không** gọi FLAG — nhưng đây chính là lý-do 11 carry + 16 pending-anh hiện **0 nhà** ngoài `_end` đã đóng băng. Nếu closeout L10 lại sinh carry ở `_end` thì FLAG-1 tái-phát y nguyên.
- **I-3 — verdict H24 @S168-close không vào sổ đếm:** `sub-lead-gap-close-S168.md` (29.820 B) + `sub-lead-stale-close-S168.md` (23.264 B) chứng-minh cặp vai **đã chạy thật**, HANDOFF:5 khai *"vá 12 FLAG"*; nhưng `history[]` của `.session-counter.json` chỉ có *"CLEAN tick"* cho S168, `signal_session` vẫn **S166**, `signal_reset_done: **false**`. Theo đơn-vị **phiên-LOGIC** (2 lượt bookend = 1 quyết-định/class) gộp vào L9 là **hợp lệ** ⇒ **không** gọi FLAG. Nêu vì đúng lớp `_backfill_S148` (*"vai H24 chạy xong mà không ai ghi số = audit đo rồi như chưa đo"*) — đáng liếc ở closeout.

---

## TOTAL: 5 FLAG

| class | n | SEV |
|---|---|---|
| `gap-carry-dropped` | 1 | HIGH |
| `gap-decision-sunk` | 2 | HIGH ×1 (FLAG-2) · MED ×1 (FLAG-3) |
| `gap-owner-specifics` | 1 | MED |
| `gap-underfill` | 1 | MED |
| `gap-carry-aged` | 0 | — |
| `gap-incident-unrecorded` | 0 | — |

🔴 **Đơn-vị tally** = *audit liên-tiếp* (KHÔNG phải lần-trong-phiên) ⇒ đề-xuất `class_repeat`: `gap-carry-dropped` 9→**10** · `gap-decision-sunk` 3→**4** · `gap-owner-specifics` 2→**3** (**CHẠM `jump_on_class_repeat`=3**) · `gap-underfill` 3→**4** · `gap-carry-aged` giữ **0** · `gap-incident-unrecorded` giữ **0**. Số cuối do lead/`h24-signal-write.ps1` ghi — propose, KHÔNG tự ghi.

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

<!-- END sub-lead-gap-open-S169 · TOTAL=5 FLAG -->

END lead-gap-open-S169 — VERDICT=5 FLAG
