# sub-lead-stale-S150 — H24 §2(1) vai-STALE · bookend @close lượt ĐẦU (hình B) · phiên-logic 3 (S149+S150)

> Ghi-đĩa-TRONG-lúc-làm (chống #53, bài S123/S148). Mỗi FLAG append NGAY khi neo đủ 3 vế.
> Class ∈ enum ĐÓNG `lead_self_audit.flag_classes` (`memory-budget.json:156-168`) — 5 nhánh `view-*`. CẤM tự chế.
> Propose-only: 0 Write/Edit ngoài file này + diary. Lead re-verify từng FLAG rồi tự vá.

## Nền máy (ĐỌC, KHÔNG chạy lại — ranh máy ⟂ người)

- `governance-detectors.ps1` TOTAL = **46** @S150 (lead đã chạy). Canonical resolve: mig 67 · test 532 · gotcha 83 · table 89 · menu 54 · policy 216.
- H1 `tooling-auditor` @S150 đã quét **rename-residual** (296 hit / 92 file) và phân loại xong ⇒ **KHÔNG lặp lại trục đó** (`sub-tooling-S150.md:37-66`).
- Trục của tao: **view CÓ-nhưng-LỆCH** trên bề-mặt LEAD phát-ra. Cái BỊ THIẾU = `lead-gap-auditor`.

## Tiền-đề đo đĩa (chạm đĩa, không đọc bảng — bài S121)

| Đo | Kết quả |
|---|---|
| `git diff --stat aaf95ef..HEAD -- docs/HANDOFF.md docs/STATUS.md` | HANDOFF 4 dòng-diff · STATUS 2 dòng-diff (= sweep rename) |
| `.claude/agents/*.md` | 21 file − README = **20 persona** |
| `~/.claude/settings.json:11` | `"model": "claude-opus-5[1m]"` |
| `.claude/workflows/hmw.js:148` | `const WIDTH_CAP = 20` (comment `:143` "16 → 20 @S149") |
| `memory-budget.json:11-13` | `hmw_width.cap = 20`, `ratified: 2026-07-24` |

🔴 **Không FLAG oan:** STATUS CURRENT/Recently-Done chưa có dòng S149-S150 = việc closeout ĐANG làm, KHÔNG phải stale. Chỉ FLAG nội-dung CŨ đang **nói sai so đĩa HÔM NAY**.

---

## FLAG-1 — `view-stale-status` — HIGH

**view:** `docs/HANDOFF.md:21` (mega-line ~7,7KB — neo bằng trích, KHÔNG cột), bảng **NEXT anh**, mục **(19)**:
> *"⚑ O-7 trần WIDTH `hmw.js:115` = 16 (soft) — 🔴 số = owner-SỐ và throw-hay-LOUD-skip = owner-LUẬT; hiện đang LOUD-skip, **chưa ai duyệt**"*

**source (3 nguồn độc-lập, cùng nói ngược):**
1. `.claude/agent-memory/memory-budget.json:11-14` — `hmw_width: { cap: 20, mechanism: "loud-skip", ratified: "2026-07-24" }` + `_ratified_by` ghi rõ **OWNER-DELEGATED → LEAD-DECIDED @S149** (anh trả lời đúng hai chữ *"Trả lời 4 câu"* = uỷ-quyền).
2. `.claude/workflows/hmw.js:148` — `const WIDTH_CAP = 20`; `:143` comment *"16 → 20 @S149 2026-07-24"*.
3. `.claude/sessions/session-3/_context-s-3.md:46` — PAUSE-1 ghi `O-7 = hmw_width{cap:20, loud-skip}` vào budget.json.

**lệch cụ-thể (3 tầng, cùng 1 mục):**
- **status:** view nói *"chưa ai duyệt"* — source nói **đã ratify 2026-07-24** (nhãn owner-delegated).
- **số:** view nói **16** — source nói **20**.
- **con-trỏ CHẾT:** view trỏ `hmw.js:115`; `:115` hôm nay là comment *"S2 mechanize: checkpoint TRƯỚC P2…"*, **không dính gì WIDTH**. Số thật ở `:148`.

**vì sao HIGH:** đây là dòng **anh trả lời bằng SỐ**. Anh đọc (19) sẽ thấy một câu hỏi đã được trả lời hôm qua bằng chính uỷ-quyền của anh ⇒ đúng lại ca *"trình lại cho anh một việc đã xong"* mà chính dòng (1) cùng bảng này đang tự tố (`view-stale-status`, sống sai 4 phiên). Tái-phạm **cùng bảng, cùng phiên-logic**.

**resolve:** (19) chuyển `~~⚑ O-7~~ ✅ ĐÓNG @S149 (owner-DELEGATED → lead-decided)` + ghi cap **20** + sửa con-trỏ `hmw.js:148` + giữ nhãn phân-biệt *"uỷ-quyền ≠ owner tự chọn số"* (budget.json `_ratified_by` đã dặn đúng câu này). Hết flag khi grep `(19).*16 \(soft\)` = 0 và `hmw.js:115` không còn ở HANDOFF.

---

## FLAG-2 — `view-stale-status` — MED

**view:** `docs/HANDOFF.md:21`, cùng bảng NEXT anh, **(17)** và **(18)**:
> (17) *"⚑ **O-2** posture trục-SÂU + trần tổng-lượt — SE chưa có trục sâu … **anh chốt** có dựng trục sâu không, và nếu có thì trần bao nhiêu"*
> (18) *"⚑ **O-3** gộp hay TÁCH vai-KIỂM cho 3 vòng còn thiếu … **câu hỏi còn nguyên** cho phần còn lại"*

**source:**
- `.claude/sessions/session-3/_context-s-3.md:46` — *"Uỷ-quyền 'Trả lời 4 câu': **O-2 = posture-A không-dựng** · **O-3 = tập-rỗng** · O-7 = `hmw_width{cap:20,loud-skip}`"*.
- `.claude/workflows/runs/2026-07-24-S149-owner-gated-3-khoan/gate-synthesis.md:3` — *"O-2 nguồn thật = depth-axis → **posture-A** · **O-3 tập-rỗng** · O-7 cơ-chế đã land"*.
- `.claude/WAL.md:4` khai arc-1 đóng trọn cùng phiên.

**lệch cụ-thể:** view treo cả 2 mục ở trạng-thái **CHỜ-ANH**; source cho thấy cả 2 đã có **disposition** từ S149 (posture-A / tập-rỗng) qua đúng cơ-chế uỷ-quyền anh cấp. 2 site, **1 gốc** (một lượt uỷ-quyền) — gộp 1 FLAG để không thổi tally.

**⚠️ khai giới-hạn (đừng đọc thành "vá xong là hết việc"):** phần EXECUTE của O-2 **chưa land** — `grep -in "posture|trục sâu" docs/governance/harness-11-engine.md` = **0 hit**, trong khi acceptance K2 (`spec-owner-gated-3-khoan-24-07-2026.md:67`) đòi *"posture ghi ≥1 dòng ở `harness-11-engine.md`"*. **Cái THIẾU đó là turf `lead-gap-auditor`, tao KHÔNG flag** — nhưng lead phải biết trước khi lật (17) thành ✅, nếu không sẽ lật thành một ✅ rỗng.

**resolve:** (17)/(18) đổi sang `✅ disposition @S149 (owner-DELEGATED → lead-decided): O-2 = posture-A KHÔNG-DỰNG · O-3 = tập-rỗng` + nêu vế còn lại là **execute** (K2/K5), không phải **quyết-định**. Hết flag khi 2 mục không còn ở dạng câu-hỏi-mở.

---

## FLAG-3 — `view-stale-count` — MED

**view:** `docs/HANDOFF.md:21`, mục **(14)**:
> *"⚑ nhãn model lead (O-5) — `~/.claude/settings.json:11` = **`claude-opus-4-8[1m]`** từ 07-20, nhưng ô canonical STATUS.md §Sub-agents vẫn kể "Fable 5" là lead ⇒ **2 mặt lệch nhau 4 ngày**"*

**source:** `~/.claude/settings.json:11` (đọc TƯƠI hôm nay 2026-07-25) = `"model": "claude-opus-5[1m]"`.
Đối chứng: `.claude/sessions/session-3/_context-s-3.md:70` — thư GẤP hub `59ce1d0f` default fleet → **Opus 5 MAX kể cả ghế lead**, *"Lead áp ngay: settings đã sẵn"*; `.claude/WAL.md:4` *"default mới = Opus 5 MAX (thư `59ce1d0f` đã áp)"*.

**lệch cụ-thể:** view trích **giá-trị** của settings là `claude-opus-4-8[1m]`; đĩa hôm nay là `claude-opus-5[1m]`. Con-trỏ `:11` vẫn ĐÚNG dòng — **sai đúng cái giá-trị nó trích**. Kéo theo mệnh-đề dẫn-xuất *"lệch nhau 4 ngày"* cũng chết (mốc đã đổi 07-25).

**vì sao đáng bắt mà máy mù:** detector đếm token stale vs canonical **trong repo**; `~/.claude/settings.json` nằm **NGOÀI git** (CLAUDE.md tự khai *"grep trong repo sẽ ra 0 hit"`) ⇒ không máy nào so được. Đây đúng chỗ máy im.

**KHÔNG kèm theo (chống flag oan):** ô canonical `STATUS.md:452` §Sub-agents **cố-ý dừng enumerate flip ở flip-8/S107** (anti-churn S106, chính tao đã INFORM-clean @S140) ⇒ **KHÔNG flag STATUS vì không có dòng "Opus 5"**. Câu *"settings `claude-fable-5[1m]`"* trong :452 nằm trong mệnh-đề tự-gắn nhãn **point-in-time S98** ⇒ frozen đúng, không sửa.

**resolve:** (14) re-stamp giá-trị tươi `claude-opus-5[1m]` + nêu lại delta thật (nếu còn), hoặc đóng mục nếu thư `59ce1d0f` đã trả lời chính câu O-5. Hết flag khi HANDOFF không còn chuỗi `claude-opus-4-8[1m]` như **hiện-trạng settings**.

---

## FLAG-4 — `view-residual-asym` — MED

**view:** `docs/HANDOFF.md:22` — dòng **NEXT em (phiên kế)**, hai vế:
> *"**Trio first-run ngay sau anh restart+gật**; **H24 deep tới hạn** (S143 đã chạy sớm 1 nhịp theo direction anh)"*

**source:**
- Trio: `.claude/workflows/runs/2026-07-22-S144-trio-first-run/` **tồn tại trên đĩa** — `harness-eval-return.md` 10.907B · `harness-refine-return.md` 14.321B · `harness-audit-return.md` 11.251B · `trio-synthesis.md` (mtime 2026-07-22) ⇒ trio-first-run **ĐÃ CHẠY**, không còn là việc-phải-làm.
- H24 deep: `.claude/governance/.session-counter.json:14` `counter = 24` · `:20` `deep_at_counter = 17` · `memory-budget.json:150` `deep_every = 15` ⇒ 24−17 = **7 < 15**, **KHÔNG tới hạn** (chính history entry S149 `:103` viết *"mốc kế: light ~28, deep ~32"*).

**bằng-chứng ASYMMETRY (đây là điểm phân-biệt với `view-stale-status`):** cùng file này, `docs/HANDOFF.md:12` là một **đợt flush có chủ-đích** tự khai *"flush **bảng số bên dưới** cho khớp ĐĨA … **#1 trio first-run → ĐÓNG** (chạy thật @S144)"* — và mục (1) ở `:21` ĐÃ lật ✅. Tức đợt sửa @S148/@S149 **chạm đúng một phía (bảng)**, bỏ lại **gương của nó (NEXT-em `:22`)**. Hai câu nói ngược nhau trong **cùng một file**, cùng một sự-kiện. Đúng khuôn *"sửa `fe-admin` quên `fe-user`"* của class này. (Nếu tính là `view-stale-status` thì mất chính cái tín-hiệu đắt nhất: **có một đợt sửa và nó lệch**.)

**vì sao đáng nói dù trông nhỏ:** dòng `:22` là **forward-pointer** — thứ phiên sau đọc để biết làm gì. Bài S140 của chính vai này: *"staleness sống ở forward-pointer, không ở recap"*. Đây là **tái-phát cùng vị-trí** (S140 flag `HANDOFF:8` NEXT-em) sau 10 nhãn phiên.

**resolve:** viết lại `:22` theo đĩa: bỏ vế trio-first-run (đã đóng, vế còn mở là **#12 thể-thức consent**, khác việc); đổi *"H24 deep tới hạn"* → mốc thật (`light ~28 · deep ~32`, đọc từ counter, **KHÔNG chép số nhịp** — B1). Hết flag khi `:22` không còn nêu 2 việc trên như to-do.

---

## FLAG-5 — `view-stale-header` — MED

**view (2 site, cùng 1 lỗi):**
- `docs/STATUS.md:6` — nhãn tự-xưng `**🔥 CURRENT (S147, 2026-07-23 — product/UAT):**`
- `docs/HANDOFF.md:5` — `**🆕 Last updated:** 2026-07-23 (**S147** — product/UAT session…)`

**source (cùng file, nội-dung MỚI HƠN nằm ngay bên dưới):**
- `docs/STATUS.md:462` — `## ✅ Recently Done (**S148** — 2026-07-24)`. ⇒ nhãn S147 **cũ hơn** heading mới nhất S148 trong **chính file đó**.
- `docs/HANDOFF.md:8/:10/:12` — 3 khối đóng dấu **S148** (`📌 S148` · `🔴 S148` · `🔧 Re-stamp @S148`) + `:12` còn chứa `RE-ĐẾM @S149` ⇒ nội-dung tới **S149** nằm **DƯỚI** một nhãn đề **S147**.

**lệch cụ-thể:** nhãn-độ-tươi của file nói **S147/2026-07-23**; thân file mang nội-dung **S148 (2026-07-24)** và **S149**. Người đọc tin nhãn sẽ kết-luận sai *"S148 chưa vào sổ"* — trong khi nó đã vào.

**KHÔNG phải "closeout đang chạy":** đây là **nợ từ closeout TRƯỚC** (`aaf95ef` "[CLAUDE] Docs: S148" đã land mà không bump 2 nhãn này), không phải phần S149-S150 mà lead sắp ghi.

**🔴 vì sao MÁY IM (phần máy không phán được — đo được, không đoán):**
- Luật đã codify: `scripts/governance-detectors.ps1:699-702` **H24-3** — *"within ONE file, the `(S<N>)` on the Last updated line must not be older than the newest `(S<M>)` carried by a heading … a mismatch is wrong BY CONSTRUCTION. Hence MED"*. Tao lấy SEV **MED** từ chính luật này, không tự chấm.
- Nhưng H24-3 **không chạm được 2 file này hôm nay**, vì 2 lý-do ĐỘC-LẬP:
  1. `docs/STATUS.md` — `grep -o "Last updated" docs/STATUS.md | wc -l` = **0**. Anchor mà detector khoá vào **không còn tồn tại** ở STATUS (nay là chữ `CURRENT`). Vế-label = null ⇒ detector bỏ qua file. 🔴 Chính comment `:592-595` của detector cảnh-báo đúng cơ-chế này: *"do NOT resolve a title-stale flag by reshaping the anchor"* — và STATUS **chính là positive-control** nó được dựng quanh (`:686`).
  2. `docs/HANDOFF.md` — regex label `\*\*Last updated:\*\*[^(]*\(S(\d+)` cần `(S`; chuỗi thật là `(**S147**` ⇒ **0 match**. Thêm: `grep -c "^##" docs/HANDOFF.md` = **1** ⇒ vế-heading gần như rỗng.
- ⇒ **Trục kiểm-tra này hiện 0 file có hiệu-lực.** Tao **không** đề-xuất sửa detector (không phải turf tao — đó là máy/tooling + quyền owner); tao chỉ khai vì SEV và vì *"0 hit ≠ sạch"* (bài S143).

**resolve:** bump 2 nhãn về nhãn phiên thật khi closeout ghi xong (S150). Hết flag khi: nhãn `STATUS:6` ≥ heading `(S<N>)` mới nhất trong STATUS **và** nhãn `HANDOFF:5` ≥ nhãn phiên cao nhất xuất-hiện trong thân HANDOFF. 🔴 **CẤM "resolve" bằng cách bỏ/đổi hình-dạng nhãn** (Goodhart — rời tập-đo).

---

## FLAG-6 — `view-residual-asym` — LOW

**view:** `docs/HANDOFF.md:21`, bảng NEXT anh, mục **(10)**:
> *"⚑ ratify ranh **`refine ⟂ lead-omission`** — 🔴 ranh này đã wire vào `harness-refine.md:22-30` TRƯỚC khi được anh/hub ratify"*

**source:** `.claude/agents/harness-refine.md:22` = `## 🔴 RANH SẮC — refine ⟂ **lead-gap-auditor**` · `:24` bảng cột 2 = `` `lead-gap-auditor` (H24) `` · `:30` = *"việc của `lead-gap-auditor` → NHƯỜNG"*. Rename đã quét TRÚNG file này (commit `9abc2e1`, đối chứng `runs/2026-07-25-S149-adap-backlog/sub-apply-L5-evalcuaeval.md:29`).

**lệch cụ-thể:** đợt rename @S149 sửa **phía source** (`harness-refine.md`) nhưng bỏ **phía view** (mục owner-facing đang MỞ trong HANDOFF) ⇒ anh đọc (10) thấy tên vai **không còn tồn tại trong roster** (`ls .claude/agents/ | grep lead-omission` = 0).

**🔴 phân-biệt với "vết lịch-sử" (tao đã lọc, không vơ đũa):** H1 `tooling-auditor` @S150 đã chốt luật *prescriptive = FLAG · frozen-in-time = GIỮ*. Các hit tên-cũ khác trong STATUS/HANDOFF đều là **quy-nguồn quá-khứ** (*"`lead-omission-auditor` FLAG-2 bắt @S148"*, narrative Recently-Done…) ⇒ **GIỮ, KHÔNG flag**. Mục (10) khác hẳn: nó là **câu hỏi CÒN MỞ cho owner ở thì hiện-tại**, không phải kể chuyện. Đo: `grep -o` trên `docs/{STATUS,HANDOFF}.md` ra 22 hit tên-cũ ⇒ **21 frozen hợp-lệ / 1 live-stale**.
🔸 Seam đáng ghi: 2 file này **không nằm trong cả danh-sách "sạch" lẫn danh-sách "GIỮ"** của H1 (`sub-tooling-S150.md:42-51`) ⇒ đúng chỗ 2 lane giáp nhau mà không lane nào phủ.

**resolve:** đổi tên trong mục (10) thành `refine ⟂ lead-gap-auditor`. Hết flag khi `grep -o "lead-omission" docs/HANDOFF.md` chỉ còn hit nằm trong mệnh-đề quy-nguồn quá-khứ.

---

## Hệ-quả liên-đới (KHÔNG tính thành FLAG riêng — chống thổi tally)

`.claude/WAL.md:22` ghi `carry: (… 20 mục · 3 đóng · **17 mở #4-#20**)`. Con số này **mirror trung-thực** HANDOFF, nên nó không stale độc-lập — nó stale **vì** FLAG-1/FLAG-2. 🔴 Nhưng cùng file, `WAL.md:23` lại xếp `cap 20 · posture A` vào **`veto-window`** (= đã quyết, chờ anh veto) ⇒ **WAL tự nói ngược nhau 1 dòng**. Khi lead lật (17)(18)(19) thì `17 mở` phải xuống **14** ở CẢ HAI chỗ. Flag một-gốc-một-lần; ghi ở đây để không rơi.

---

## Trục đã quét — SẠCH (ghi rõ, không im lặng)

1. **Ô SỐ `STATUS.md:6` vs CURRENT-STATE table — SẠCH 5/5.** `Mig 67` = `:441` **67** · `89 bảng` = `:442` **89** · `532 test` = `:448` **532 PASS (45D+487I)** · `gotcha 83` = `:449` **83** · `menu 54` = `:447` **54**. 🔴 Ca CANONICAL-POISON tao bắt @S148 (`:448` ghi 528/483I trong khi `:6` ghi 532) **đã vá và giữ khớp** — re-check bằng chính 2 vế.
2. **Cross-check ĐĨA cho 2 trục máy KHÔNG phủ (bài S148 "tin tới đâu máy phủ tới đó") — SẠCH.** `grep -c "^### [0-9]" docs/gotchas.md` = **83**, anchor cuối = `### 83.` ⇒ khớp. `MenuKeys.All` đếm **PHẦN-TỬ** (không đếm `const`, không grep số — bài S143) = **54** ⇒ khớp `:447`; kéo theo `Policies = 54 × 4 = 216` khớp `:446`. *(Bẫy tránh được: `grep -c "public const string"` ra **51** — lệch 3, sẽ báo sai nếu tin count-thô.)*
3. **Roster-count 4 nguồn — SẠCH.** đĩa `ls .claude/agents/*.md` = 21 − README = **20** · `STATUS:452` = **20** · `agents/README:5` + `:27` = **liệt-kê TÊN, đếm phần-tử = 20** (7 core + 13 tên) và **cố-ý 0 số** (B1) · `hmw.js` VALID_ROLES = 20. Không tái-diễn ca S143 (enum-tên lọt grep-số).
4. **`agents/README` — SẠCH sau rename.** `:5` và `:27` đều dùng **5 tên MỚI** (`lead-stale-auditor` · `lead-gap-auditor` · `ring1/2/4-audit`), 0 tên cũ.
5. **`ACTIVE-MARKS.md` — SẠCH, làm ĐÚNG luật.** `:27-28` là **chú-thích rename S149** cộng thêm, thân mark `RC-…15-32-23` **giữ nguyên từng chữ** (P4/P8). Đây là hình-mẫu đúng của "view đổi mà bản-ký không bị sửa" — không flag.
6. **`_context-s-3.md` STOCK-map 7 row — SẠCH 7/7 con-trỏ.** `.claude/WAL.md` ✓ · `CLAUDE.md` ✓ · `docs/STATUS.md` ✓ · `docs/HANDOFF.md` ✓ · `.claude/governance/.session-counter.json` ✓ · `broadcasts/_index.md` ✓ (13.894B, mtime 2026-07-25 09:47) · `.claude/agent-memory/memory-budget.json` ✓. Mô-tả 1-dòng còn đúng: row `broadcasts/_index.md` khai *"fan-out `outbox/all` KHÔNG vào đây — sổ của nó là `docs/governance/adap-reports/`"* — khớp đúng việc 23/23 report land ở `adap-reports/` phiên này. Row `memory-budget.json` khai `hmw_width (mới @S149)` — **có thật**, `:9-19`.
7. **`STATUS:452` §Sub-agents — KHÔNG flag nhãn model, có lý-do đo được.** Ô canonical **cố-ý dừng enumerate flip-chain ở flip-8/S107** (anti-churn S106, ghi thẳng trong ô). Đây là quyết-định cũ, tao đã INFORM-clean @S140; **giữ nhất-quán, không lật lại**. Câu *"settings `claude-fable-5[1m]`"* trong ô tự-gắn nhãn **point-in-time S98** ⇒ frozen đúng.
8. **`.mfe-state.json` — SẠCH.** `HANDOFF:22` khai *"MFE GOODHART-WARN strikes 21→23"*; đĩa `.claude/agent-memory/.mfe-state.json` = `strikes_total: 23` ⇒ **khớp**, không stale (chỉ 2 vế KHÁC của cùng dòng `:22` mới hỏng — xem FLAG-4; **không vơ cả dòng**).
9. **`docs/_archive/**` + `runs/**` + `changelog/sessions/**` — KHÔNG quét (đóng-băng CÓ chủ-đích).** Ngày cũ ở đó là **mục-đích** của file; flag = nhiễu vĩnh-viễn không giải được.

---

## INFORM (không phải FLAG của tao — chuyển lane, để không rơi)

- **`lead-gap-auditor`:** acceptance K2 của O-2 (`spec-owner-gated-3-khoan-24-07-2026.md:67`) đòi *"posture ghi ≥1 dòng ở `harness-11-engine.md`"*; đo: `grep -in "posture|trục sâu" docs/governance/harness-11-engine.md` = **0 hit** ⇒ phần EXECUTE chưa land. Lead lật (17) thành ✅ mà không làm vế này = ✅ rỗng. (Cái THIẾU = turf vai-GAP.)
- **`lead-gap-auditor` / máy:** `memory-budget.json` khối `measured` có **17 row** cho roster **20** — thiếu `ring1-audit` · `ring2-audit` · `ring4-audit` (land @S145). Tiền-lệ của chính khối đó (addendum S138 +2 row, S141 +3 row) nói role mới thì thêm row. Tao **không** gọi đây là view-lệch vì khối không in con-số tổng nào để mà sai.
- **`ring2-audit` (vai KIỂM) + lead:** `.claude/agent-memory/ring4-audit/` **KHÔNG tồn tại** trên đĩa (chỉ có `ring1-audit`, `ring2-audit` — `ring2` là do `git mv` từ `h24-audit`, xem `9abc2e1` R067). Vai `ring4-audit` chưa chạy lần nào nên **chưa chắc là lỗi**; nêu để đừng lặp lại GAP-3 (thư-mục rỗng ⇒ vai kế vào mù).

---

## 🔴 Ảnh-hưởng tới `class_repeat` — khai TRƯỚC, để lead không phải đoán

`.session-counter.json:35` `_view_star_repair_S149` đang giữ `view-residual-asym = **1**` kèm khai thật *"giá-trị thật thuộc {0, 3} — KHÔNG XÁC ĐỊNH"* (2 FLAG của S148 không tồn tại trên đĩa nên không truy được).

Audit này **CÓ fire `view-residual-asym`** (FLAG-4, FLAG-6). ⇒ giá-trị sau S150 = `{0,3} + 1` = **{1, 4}**, tức **có thể đã VƯỢT** `jump_on_class_repeat = 3` mà **không ai chứng minh được là chưa**.

🔴 Tao **KHÔNG** tự chọn nhánh nào để tally trông đẹp/xấu hơn — đó đúng là thứ `_view_star_repair_S149` cấm (*"CẤM ghi 0 … CẤM ghi 3"*). Đúng câu trả lời cho anh vẫn là **DẢI**, không phải số trần. `view-stale-status` (FLAG-1, FLAG-2) fire ⇒ từ **2 → 3 = CHẠM JUMP** (chuỗi S146 → S148 → S150 liên-tiếp, có nguồn). `view-stale-header` (FLAG-5) fire lần đầu ⇒ **0 → 1**. `view-stale-count` **KHÔNG fire** audit này ⇒ theo consecutive-semantics phải **reset về 0** (không phải giữ 1).

---

## TOTAL: 6 FLAG · 9 trục-sạch · 3 INFORM chuyển-lane

| # | class | SEV | view | lệch 1 dòng |
|---|---|---|---|---|
| 1 | `view-stale-status` | HIGH | `HANDOFF:21` mục (19) | "O-7 = 16, chưa ai duyệt" vs `budget.json:11-13` cap **20** ratified 2026-07-24 + `hmw.js:148`; con-trỏ `hmw.js:115` **chết** |
| 2 | `view-stale-status` | MED | `HANDOFF:21` mục (17)+(18) | treo CHỜ-ANH vs `_context-s-3.md:46` + `gate-synthesis.md:3` = **posture-A / tập-rỗng** đã quyết @S149 |
| 3 | `view-stale-count` | MED | `HANDOFF:21` mục (14) | trích settings = `claude-opus-4-8[1m]` vs `~/.claude/settings.json:11` = **`claude-opus-5[1m]`** |
| 4 | `view-residual-asym` | MED | `HANDOFF:22` NEXT-em | "trio first-run" + "H24 deep tới hạn" vs đĩa `runs/…S144-trio-first-run/` đã chạy + counter 24−17=7<15; **bảng `:21` đã lật, gương `:22` chưa** |
| 5 | `view-stale-header` | MED | `STATUS:6` + `HANDOFF:5` | nhãn **S147** vs `STATUS:462` heading **S148** / khối S148-S149 trong HANDOFF; H24-3 **không chạm được** (STATUS 0 anchor · HANDOFF `(**S`) |
| 6 | `view-residual-asym` | LOW | `HANDOFF:21` mục (10) | "ranh refine ⟂ **lead-omission**" vs `harness-refine.md:22/:24/:30` = **`lead-gap-auditor`** |

**Phân-rã theo class (để tính `jump_on_class_repeat`):** `view-stale-status` **2** · `view-residual-asym` **2** · `view-stale-count` **1** · `view-stale-header` **1** · `view-stale-role-desc` **0**.
**Fire/không-fire theo class:** fire = {`view-stale-status`, `view-residual-asym`, `view-stale-count`, `view-stale-header`} · không fire = {`view-stale-role-desc`}.

🔴 **5 FLAG / 6 nằm trên `docs/HANDOFF.md` — 1 gốc chung, nói thẳng để lead vá GỐC không vá lá:** phiên-logic 3 chạm HANDOFF đúng **4 dòng-diff** (toàn bộ là sweep rename). Mọi quyết-định của S149 (O-2/O-3/O-7, thư model `59ce1d0f`, rename) đều đổ vào `WAL` + `_context-s-3` + `budget.json` + `hmw.js` — **không đổ vào sổ owner-facing**. Đó không phải 5 lỗi rời; đó là **một kênh ghi bị bỏ trống suốt 1 phiên-logic**.

**Propose-only.** 0 Write/Edit ngoài file này + diary. Lead re-verify từng FLAG rồi tự vá trong closeout.

