# audit — SYNTHESIS (lead verify độc-lập, KHÔNG tin return)

**Run:** `2026-07-22-S143-closeout-audit` · 3 lane · 🔴 **3/3 GARBLE #53, cả 3 phải resume**.

## Nấc trung-thực

🔴 **Tất cả finding dưới đây lead ĐÃ TỰ RE-ĐO** — không cái nào chỉ dựa vào lời sub. Các fix **CHƯA áp** (chờ owner quyết).

## 0. Sự-kiện vận-hành: 3/3 garble

| Vai | Lượt 1 | Lượt 2 (resume) |
|---|---|---|
| `lead-view-auditor` | garble (trả mẩu transcript) | XONG — 3 FLAG |
| `reviewer` | garble | XONG — FAIL 1C/4M/4m/1nit + 19 số re-đo |
| `lead-omission-auditor` | garble | XONG — 3 FLAG / 3 INFORM |

**0 dữ-liệu mất** — cả 3 được lệnh *ghi-đĩa-TRONG-lúc-làm*, nên mỗi lần garble đều vớt trọn từ `sub-*.md`. Đây là lần thứ 3 liên tiếp (S114 ×5 · S123 ×4 · S143 ×3) khẳng định: **prompt đúng KHÔNG chặn được #53; chỉ ghi-đĩa mới cứu được.** Prompt phiên này đã cấm bẫy "trả verdict trước, làm sau" ngay từ đầu cho cả 3 vai — vẫn garble 3/3.

## 1. reviewer — VERDICT **FAIL 1C/4M/4m/1nit**

| # | Mức | Finding | Lead tự đo lại |
|---|---|---|---|
| F9 | 🔴🔴 **CRITICAL** | `scripts/nhip-no-probe.ps1` sửa **chưa commit**, và vế-4 ĐANG CHẠY làm **sai một câu trong THƯ ĐÃ STAMP** (email `:47` + `nudge-pull.md:24` khai *"Chưa làm, chờ owner"*) | XÁC NHẬN — probe in `pull-cach 2 ngay` |
| F1 | 🔴 MAJOR | 5 sha cite (`1a0fa59`·`a458102`·`96ab2679`·`c3708e9`·`b1d92b9`) **dangling** sau squash ⇒ hub clone về không resolve nổi | XÁC NHẬN — `is-ancestor origin/main` exit 1 cả 5; nội dung CÓ trong `2757e41` |
| F2 | 🔴 MAJOR | `is-ancestor 96ab2679 HEAD` khai exit 0 → `OK-reachable`; **lật exit 1 trong cùng phiên** | XÁC NHẬN — nay exit 1 |
| F3 | 🔴 MAJOR | "TRIPLE 17/17/17" **chọn enum DỄ**: `README:236`=17 ✅ nhưng `README:225` — dòng **tự xưng "VALID_ROLES … ĐỦ roster"** — còn **14**, thiếu đúng 3 trio, và còn ghi "**4** monitor" (phải 7) | XÁC NHẬN — đếm tay `:225` = 14, trio = 0 |
| F4 | 🔴 MAJOR | Khai `TOTAL 46 == baseline 46`; **baseline ghi trong repo là 45** (`STATUS:483` S137 "46→45" · `HANDOFF:13` "45 giữ"). Số đi **45 → 46 (không giải trình) → 47 (nay)** | XÁC NHẬN — live 47 |
| F5 | 🟡 MINOR | "N dòng" = **churn** (added+deleted) không định-nghĩa; `.session-counter.json "11 dòng"`/`hmw.js "9 dòng"` thổi gần gấp đôi nội dung MỚI (6) | quy-ước nhất-quán, không bịa |
| F6 | 🟡 MINOR | **UNDER-claim**: email khai `squash-benign` "chưa gặp ca thật" — nó đã có ca thật ngay hôm nay | XÁC NHẬN — detector in `[trace] SQUASH-BENIGN` |
| F7 | 🟡 MINOR | Contract đòi append 1 entry `squash-benign` vào `history[]`; hiện **0** entry. Chưa vi-phạm (thuộc đường tick, S144 mới chạm) nhưng là **nợ** | XÁC NHẬN — history 5 entry, 0 squash-benign |
| F8 | ✅ **GROUNDED** | Claim tool-grant §3(b) **đúng, có nhân-chứng trực-tiếp**: chính reviewer — frontmatter 0 `Write/Edit` — **đã Write+Edit thật**. Đo **9 vai** cùng hình dạng (email khai 6 ⇒ under-count, an toàn) | XÁC NHẬN |

**Công bằng (reviewer tự nêu):** 15/17 số tự đo KHỚP; kỷ-luật nấc G-011 (0 thư khai `verified`) là hàng THẬT. Lỗi nằm ở **lớp artifact**, không ở **việc đã làm**.

**LUẬT rút ra — class mới `bằng-chứng-tự-huỷ-sau-squash`:** cite trong outward phải là **commit SẼ SỐNG sau squash**, KHÔNG BAO GIỜ `wal:`. Đối chứng: wave TRƯỚC cite `7760cdf`/`da349fc` (commit đích) → sống hết.
**LUẬT-2:** `git status --porcelain` là bước **ĐẦU** của outward-gate, không phải bước cuối.
**LUẬT-3:** số tuyệt-đối publish ra ngoài phải **neo commit/thời-điểm**; tách claim-DELTA (bền) khỏi claim-TUYỆT-ĐỐI (thối theo giờ).

## 2. lead-view-auditor — 3 FLAG (đều `view-residual-asym`, MED)

| Site | Lệch | Lead đo |
|---|---|---|
| `STATUS.md:450` | ô canonical còn *"NO Write/Edit (chặn-bằng-thiếu-tool)"* trong khi `:462` cùng file đã lật | XÁC NHẬN |
| `agents/README.md:190` | còn *"NO Write/Edit"* khai như sự-thật tool-grant | XÁC NHẬN |
| `agents/README.md:27` | dòng tự xưng **"Roster THẬT"** liệt 14 vai, thiếu 3 trio; `git show 2757e41` = **0 hunk** chạm dòng này | XÁC NHẬN |

🔴 **Lỗ trong chính acceptance của wave:** AC4 grep `"roster 14\|14/14\|14 folder\|14 vai"` → 0 hit ⇒ tuyên bố sweep sạch. Nhưng `:27` và `:225` **liệt kê TÊN**, không chứa con số ⇒ lọt. **"0 hit" chỉ chứng minh pattern không khớp, KHÔNG chứng minh hết drift.**

## 3. lead-omission-auditor — 3 FLAG / 3 INFORM

- **`gap-carry-dropped` MED-HIGH** — carry khai 13, đúng phải **14**; `[carry:session-model-adopt]` rơi **đúng lúc 2/3 tiền-đề vừa mở khoá**, chỉ còn chờ chữ ký owner. Adap-report lại **viện dẫn chính carry đó** làm cổng biện minh "cố ý chưa wire". Máy im ĐÚNG (`H24-2` grep tag trong NEXT-segment, không đọc tư cách thành viên ledger).
- **`gap-decision-sunk` MED-HIGH** — 3 mục "Chờ-anh" (`spec:68`) chìm 2 nhãn phiên, grep 9 token × 4 bề mặt = **0 hit**. Nặng nhất: ranh `refine ⟂ lead-omission` **đã wire** `harness-refine.md:22-30` **TRƯỚC khi ratify**.
- **`gap-owner-specifics` MED** — WAL không chép lượt gật 2. **ĐÃ VÁ trong phiên** (WAL 40 dòng).
- **INFORM-3** — xin owner **mở enum** thêm `gap-incident-unrecorded` (vai **không tự chế class**): 3/3 garble 0 hit mọi sổ, trong khi bề mặt quảng cáo "0-garble" (nói về S142); sổ đếm dừng *"×20 qua S118"*, 8 nhãn phiên không cập.

**Phép thử đáng học:** thay vì phán "lead bỏ sót `session_ctx_kb`", nó tìm **ca song sinh cùng phiên** — `pull_warn_days` cùng hình dạng, cùng lý lẽ, **được cấp** carry + NEXT anh; `session_ctx_kb` thì 0/0 ⇒ **bỏ sót, không phải owner đang giữ**.

## 4. Trớ trêu đáng ghi

Vế-4 `pull-cach` em vừa thêm **không** bắt được lỗi nào của em. Vế-3 `run-chua-gom` (có sẵn) thì bắt: run-folder này chính là orphan cho tới khi file synthesis này tồn tại.

## 5. Trạng thái các fix

**CHƯA áp một cái nào.** Chờ owner quyết — trong đó **2 việc chỉ owner làm được**: (a) gửi **errata** ra hub (bản đã stamp CẤM sửa — vỡ hash) · (b) **mở enum** class mới.
