# lead-stale-auditor (H24 light) @open S180 — VERDICT: `LEAD-STALE: 15 FLAG`

> Recover từ **#53** (return đầu = "Now let me read the source-of-truth surfaces." — mô tả ý-định rồi tắt). Resume-in-session.
> 🔴 **15 = SÀN, không phải TỔNG** — coverage khai thủng ở cuối. 15/15 nằm **NGOÀI** thứ máy phán được (49 FLAG detector KHÔNG lặp lại ở đây).

## FLAG-1 — `view-stale-header` — HIGH
`HANDOFF:5` "Last updated: 2026-08-05 (S171→S172 — L10)" vs CÙNG FILE có 3 khối @S179 sống (`:9`·`:23`·`:29`) + `STATUS:490` Recently Done S179 ⇒ tụt **2 phiên-LOGIC**.
🔴 **Đắt gấp đôi:** dòng này là nguồn `tiep_reload.sources` ("HANDOFF :: segment Last-updated MỚI NHẤT") ⇒ **nhãn sai TÁI SINH mỗi `/tiep`**.

## FLAG-2 — `view-stale-count` — HIGH
`HANDOFF:5` "Mig GIỮ **71** · counter **46**" vs đĩa Mig **72** · counter **54**. Canonical `STATUS:467` đã ghi 72.

## FLAG-3 — `view-stale-count` — HIGH — **ô này là lần thứ BA liên tiếp**
`STATUS:481` "Bundle hash live (prod): admin `Ajv-MaCz` · user `YsXRkBSR` — đo LIVE 2026-08-05 @S172"; `HANDOFF:5` chép lại.
**Source:** `_context-s-11.md:285-289` — cửa-sổ 6 **deploy VERIFIED 2-vế ×2 app**: đợt-7 `CZzRTDJS`·`D1cL-UbV`, đợt-8 `65f73a9` = **`CuWgMI7J`·`32bJmjpM`** (1,79MB/1,71MB, KHÔNG phải 900B SPA-fallback). **`STATUS:6` CÙNG FILE đã ghi cặp mới** ⇒ **tự mâu-thuẫn nội-file**.
🔴 **2 datum phụ:** (a) `STATUS:8` tuyên "bundle prod → canonical ở `:479`, KHÔNG chép số ở đây (B1)" ⇒ **con-trỏ B1 nhắm vào ô ô-nhiễm** (lặp S172 FLAG-1 + S166 F-2); (b) con-trỏ ghi `:479` nhưng row thật ở **`:481`** ⇒ đúng lớp **mỏ-neo tự-vô-hiệu**.
**Hại đã xảy ra:** lead lấy đúng cặp cũ đưa vào Phase 3 REPORT phiên này.

## FLAG-4 — `view-stale-count` — HIGH
`STATUS:8` "counter 46 (light **2/6** deep **6/15** ok)" vs đĩa counter **54**, `light_at=53`, `deep_at=40` ⇒ **light 1/6 · deep 14/15**. **Dưới-báo 8 nhịp ở vế deep, còn đúng 1 tick tới hạn.**
**Vì sao nặng:** đây là ô người-đọc dùng để phán "đã tới nhịp deep chưa" — nó nói **còn xa**, đĩa nói **sát hạn**.

## FLAG-5 — `view-stale-header` — MED-HIGH
`STATUS:8` nhãn "🔥 CURRENT (S161→S168 … L9)" vs `:6` "mốc SỐNG = S179, L11" · `:463` header đã bump S179 · `:490` Recently Done S177–S179.
🔴 **Cái máy mù:** `:6` tự bào-chữa "Dòng CURRENT advance @closeout nên tụt sau" — nhưng **3 closeout đã chạy** (S172-close · S173 · S179) mà nó không advance ⇒ **lời bào-chữa mô tả một cơ-chế KHÔNG CHẠY**. Và nó là nguồn `tiep_reload` ⇒ nhãn L9 nạp lại mỗi `/tiep`.

## FLAG-6 — `view-stale-role-desc` — MED
`STATUS:8` "roster 23" vs canonical CÙNG FILE `:478` = **26** · đĩa 26 · `VALID_ROLES` **26 phần-tử** · `HANDOFF:27` = 26.
🔸 2 bẫy đo vai tự khai: glob `ls *.md` nuốt `README.md` (=27) · grep naive trên `VALID_ROLES` gãy vì dấu `]` trong comment.
**Resolve = BỎ số, KHÔNG ĐỔI số** (luật `agents/README:3`).

## FLAG-7 — `view-stale-count` — MED-HIGH — **câu viết HÔM NAY đã sai lúc sinh**
`HANDOFF:152` (land @S179): "re-sync `measured{}` (nay **17/23**) — 🔴 **6 vai** (3 ctx + 3 ring) KHÔNG có baseline".
**Source:** `measured{}` có **17 khoá**, roster **26** ⇒ mẫu số đúng **17/26**, số vai thiếu baseline = **9** — thiếu thêm **3 vai STYLE** (grep `reviewer-style` trong `measured{}` → 0 hit).

## FLAG-8 — `view-stale-status` — MED — 🏛️ **TRỌNG TÀI: LEAD ĐÚNG · `tooling-auditor` SAI**
`agents/README.md:152-153` còn "anh ĐÃ GẬT consent?" + "CẤM tự chạy khi chưa consent".
**Source — 4 site đo độc-lập:** `session-start.md:280(a)` tự khai "**ĐÂY = nhà canonical**" + nguyên-văn owner "cứ đúng luật là tự làm… **KHÔNG cần anh gật từng lần**" · `:276` tiêu-đề "AUTO 1 vòng/phiên … consent-gated → **superseded**" · `:169` · `:271` "cả 5 vòng (… **V3 trio** …) đều AUTO, 0 cổng consent" + lineage "**trio gỡ @S151** · sleep gỡ @S152".
🔴 **Bác luận-điểm `tooling-auditor`:** tiền-đề "owner chỉ gỡ cổng ring1" **sai đo được** — cổng trio bị gỡ **RIÊNG @S151** (trước S152). Thêm: **3/4 nút anh-em trong cùng cây** (`:143` ring1 · `:146` ring2 · `:149` ring4) **đều đã ghi AUTO**, chỉ nút trio giữ câu hỏi consent ⇒ **bất-đối-xứng trong chính một cây**.

## FLAG-9 — `view-stale-status` — MED — 🏛️ **TRỌNG TÀI: ĐÚNG, stale HAI LẦN**
`hmw.js:39` comment: "AUTO fire-after-measure … (**KHÁC trio/H24 consent-gated**)" — viết @S145.
Vế **H24** chết @S149 (`session-start.md:270` hình-B "gỡ CẢ HAI cổng cho cặp light ⇒ auto MỖI bookend") · vế **trio** chết @S151 (`:280(a)`) · @S152 `:271` phủ nốt.
**Sống ~35 nhãn phiên.** Hại thật: mệnh-đề "KHÁC…" là thứ **duy nhất** trong file máy nói ring1 **đặc-biệt** ⇒ đọc nó sẽ tưởng trio/H24 vẫn phải xin phép.

## FLAG-10 — `view-residual-asym` — MED-HIGH — **bằng-chứng chết TRONG CHÍNH commit sinh ra nó**
`front-end-reviewer-style.md:4` viện dẫn "class này **ĐÃ drift thật** — `CLAUDE.md:43` ghi «React 18» trong khi package.json là ^19.2.5" (thì hiện-tại).
**Source:** commit **`57e672f`** (S179 closeout) sửa `CLAUDE.md:43` → **React 19** — **CÙNG commit** land câu viện-dẫn đó. Đĩa nay `:43` = "2 app React 19…"; grep «React 18» trong `*.md` sống = **0 hit** (chỉ còn artifact run-trace + 1 dòng giả-định session-log 04-21).
🔴 **Mỉa mai đáng ghi:** câu **chép digits để CẤM chép digits** đã tự drift **trước cả file nó cảnh báo**.

## FLAG-11 — `view-residual-asym` — LOW *(xác-nhận, đã có sổ)*
`back-end-reviewer-style.md:4` hardcode `.NET 10` · `database-reviewer-style.md:4` hardcode `EF Core 10`, trong khi `front-end-*` đã bỏ digits.
Đĩa hôm nay **KHỚP** (`Api.csproj:4`=`net10.0` · `Infrastructure.csproj:11`=EF `10.0.6`) ⇒ **0 sai số hôm nay**; hỏng nằm ở *luật áp một phía trên bộ-3 mirror có chủ đích*.
🔸 Vai tự hạ SEV: đã nằm ở `HANDOFF:31` NEXT-em #1[8] ⇒ **chỉ xác-nhận còn nguyên**, không tính ca mới.

## FLAG-12 — `view-stale-status` — MED
`STATUS:833` (**Maintenance backlog — section SỐNG**): "✅ 2026-07-01 DONE (S96 `881783c`) … next **2026-08-01**".
**Source:** audit **ĐÃ CHẠY 2026-08-07 @S179**, verdict `PASS_WITH_FLAGS — 8`, lần kế **2026-09-01** — chốt ở `CLAUDE.md:121` + `HANDOFF:152` + `:275`. `grep -rn "2026-09-01"` → 3 site đã lật, `STATUS:833` **0 hit**.

## FLAG-13 — `view-claim-broader-than-sample` — MED
`CLAUDE.md:121`: "🔴 Ô ngày này là **giá-trị SỐNG duy nhất trong repo**".
Tập thực-đo = `rules.md:546` + bảng canonical STATUS (đúng: bảng **không** có row audit). Nhưng chủ-ngữ **"duy nhất trong repo"** bị bác bởi **`STATUS:833`** — mục backlog SỐNG mang next-date riêng (chính FLAG-12).
🔴 **Hại đo được:** chính chữ **"duy nhất"** khiến đợt vá @S179 **dừng ở 3 site và bỏ site thứ 4**.
*Phép thử 1 câu: chủ-ngữ kết-luận có rộng hơn tập đã thực-đo không?*

## FLAG-14 — `view-residual-asym` — MED
`HANDOFF:89` giữ **🔴 "CHỜ ANH @S168"** trong khi khối **MỚI HƠN** `:39` (@S172) đã bị hạ **🧊 lineage** @S179 ⇒ **thứ-bậc dấu bị ĐẢO**. Kèm `:124` chỉ đường "trạng-thái SỐNG đọc khối @S168 trên" ⇒ đi theo con-trỏ rơi vào slot cũ `:106`/`:140`, nơi còn ghi "(40) `hmw_width.cap` 20 < roster **23**" trong khi `:27` slot (75) đã là **26 / LOUD-skip 6 lane**.

## FLAG-15 — `view-stale-count` — MED — **điểm mù tự-quy-chiếu, tái-phạm từ S173**
`lead-stale-auditor.md:45` — **persona của CHÍNH vai này**, dòng ví-dụ class `view-stale-count`, neo canonical menu-key vào **`STATUS` dòng 19** với giá-trị **54**.
Canonical thật = `STATUS:473` "| Menu keys | **113** |"; `STATUS:19` là đoạn văn về vòng-kiểm, **không liên quan**. Tiền-đề "`CLAUDE.md` ghi ~60 menu key" = 0 hit.
🔴 File này **auto-inject mỗi lần spawn vai** ⇒ **dạy vai đi tìm canonical SAI CHỖ**. Bắt @S173 (FLAG-10), sống thêm 7 nhãn phiên. Luật bắt soi file này nằm **cách chỗ vi-phạm ~12 dòng**.

---

## Phân-rã class (cho `jump_on_class_repeat` = 3)

| class | lần | flag | tally đĩa TRƯỚC lượt này |
|---|---|---|---|
| `view-stale-count` | **5** | 2·3·4·7·15 | 10 |
| `view-stale-status` | **3** | 8·9·12 | 7 |
| `view-residual-asym` | **3** | 10·11·14 | 10 |
| `view-stale-header` | **2** | 1·5 | 5 |
| `view-stale-role-desc` | **1** | 6 | 1 |
| `view-claim-broader-than-sample` | **1** | 13 | 0 |

🔴 **Cả 6 class view-* đều fire** ⇒ **5/6 vượt ngưỡng jump**. Quyết định kéo audit tới sớm = **owner/lead**, không phải vai.
🔴 **Đơn-vị tally = phiên-LOGIC** — @open+@close cùng class = **MỘT** quyết-định/class (`h24-signal-write.ps1` thi hành).

## Coverage — KHAI THỦNG (15 = SÀN, cấm đọc phần chưa soi thành sạch)

- **Đã chạm:** STATUS (6·8·463-481·833) · HANDOFF (5·9-40·89·106·124·140·152·275) · CLAUDE.md (43·121) · `memory-budget.json` · `.session-counter.json` · `hmw.js` (VALID_ROLES·WIDTH_CAP·:39) · `agents/README` (3·5·6·27·140-158) · `session-start.md` (169·265-291) · `rules.md:546` · **4/26 persona** · Migrations · `*.csproj` · `package.json` · `_context-s-11.md`.
- **CHƯA chạm:** `gotchas.md` · `migration-todos.md` · `ACTIVE-MARKS.md` · `WAL.md` · `_mind-s-11.md` · **22/26 persona** · `PROJECT-MAP.md` · 6 `SKILL.md` · `HANDOFF:155-566` · `STATUS:20-462` + `:482-832`.
- **Không flag có chủ đích:** `docs/_archive/**` + mega-blurb "Prev S98/S96" — đóng băng đúng mục đích, **ngày cũ LÀ nội dung của chúng**.

## INFORM riêng (không tính vào 15)

Vai đo lại **độc-lập** bảng canonical `STATUS:463-481` → **XÁC NHẬN TƯƠI** ở 5 ô **72/97/645/87/26**, khớp verdict `tooling-auditor`. **Mọi lệch vai báo đều là DERIVED** (mega-line `:8` · `HANDOFF:5` · backlog `:833`) — **0 nghi-vấn nhắm vào chính canonical**.

## Lead verify độc-lập 3 FLAG load-bearing (không tin suông)

| FLAG | phép lead chạy | kết quả |
|---|---|---|
| **3** bundle | `grep -rn "CuWgMI7J\|32bJmjpM" .claude/ docs/` | **CONFIRMED** — `STATUS:6` có cặp mới, `:481` vẫn cặp cũ ⇒ tự mâu-thuẫn nội-file |
| **12** backlog | `sed -n '833p' docs/STATUS.md` | **CONFIRMED** — còn "2026-07-01 DONE (S96)" |
| **10** React | `sed -n '43p' CLAUDE.md` + grep «React 18» | **CONFIRMED** — `:43` nay "React 19"; hit `*.md` sống **duy nhất** = chính dòng persona viện dẫn nó |
