# harness-audit — RETURN S144 (2026-07-22) — con KIỂM, FIRST-RUN THẬT

> Lead scribe @W3. ⚠️ Lượt-1 **#53 garble** (trả mẩu giữa chừng) → **SendMessage-resume** → return đầy đủ. Vai này **không ghi đĩa**, resume là đường cứu **duy nhất**.
> PIN hợp lệ: eval-return 10.907 B · refine-return 14.321 B · run.md 2.288 B ⇒ **CHẤM ĐƯỢC**, không từ-chối.

## A — 6/6 INSTRUMENT TỰ RE-CHẠY (không phải 2)

| # | instrument | kết |
|---|---|---|
| R1 | `measure-agent-memory` | **17 row TRÙNG TỪNG Ô** — 0 LỆCH |
| R2 | `distill-shard-probe` | `pending=15 \| nguong=7 => KEU` — 0 LỆCH |
| R3 | `mfe-eval` | 13 row + DENOM 36 + span 28057 + strikes 23 — 0 LỆCH |
| R4 | `memory-archive-gate` | 99/0/41/55/56 → 251/251 failed 0 — 0 LỆCH |
| R5 | `crystallized-backfill` | TOTAL 540724 · [135181..180241] · headroom 199759 — 0 LỆCH |
| R6 | `nhip-no-probe` | trùng **ký-tự-đối-ký-tự** |

Tự cộng lại (không tin tổng con ĐO): l1_hot 221.943 ✓ · verbatim 776.522 ✓ · gist 201.141 ✓ · 93/99 = 93,939% ✓ · 22108/20480 = 107,9% dư 1628 ✓ · 26624−21760 = 4864 ✓ · 180241+210000 = 390241 vượt trần 10241 ✓.

### 🔴 1 LỆCH DUY NHẤT CẢ LƯỢT — KHÔNG ở con ĐO, mà ở **`run.md` CỦA LEAD**

| | lead ghi | đĩa |
|---|---|---|
| hotload | 538.529 B | **540.724 B** |
| headroom | 200.490 | **199.759** |

Lệch **+2.195 B / −731 tok**. 6 file nguồn mtime ≤ **15:38:39**, tức **đứng yên TRƯỚC khi run mở (15:50)** ⇒ số 538.529 **đã stale ngay lúc được viết là "đo tươi"**.
🔴 **Con ĐO ĐÚNG, run.md SAI.** Và header scribe *"Đối chứng 4 mốc lead: 0 LỆCH"* đếm **4** trong khi run.md liệt **5** mốc — **mốc thứ 5 (crystallized) chính là mốc lệch, và việc loại nó KHÔNG được khai**. ⇒ lead-surface, escalate H24.

## B — VERDICT PER-CLAIM

**Con ĐO — 11/11 tín-hiệu ĐẠT.** Neo tiêu biểu: S2 byte-exact (`budget:156` S141-ADDENDUM inv-cb 26624→26624 = 0; reviewer 24024→17784 = **−6240 đúng từng byte**) · S5 `ls` → *No such file* + R4 in `strike counters NOT persisted` · S7 67374+66747+25581+18065 = **177.767** ✓ /776.522 = **22,89%** ✓ · S3b `budget:86` có đúng chuỗi *"~253.7K tok"*.

**Con ĐO — 8 trục: 7 ĐẠT, 1 TRƯỢT-MỘT-PHẦN.**
- **T7 TRƯỢT-MỘT-PHẦN:** verdict REGRESSION dựng trên `pending=15` mà E4 chứng minh là **dương-giả**. Caveat T7 (*"vỡ-ngưỡng ≠ xấu đi"*) là phanh **đúng hướng nhưng chưa đủ sâu** — vấn đề không phải thiếu chuỗi-thời-gian mà là **tử số không đo thứ nó tưởng**. 🔴 **Con ĐO CÓ CƠ HỘI BẮT MÀ TRƯỢT:** probe **CÓ in 8 đường dẫn** (audit re-chạy thấy tận mắt), con ĐO chỉ chép dòng verdict. Nó tự khai *"Tập-đo SẠCH"* dựa trên đọc code `:40-43` — **code sạch thật, nhưng giả-định-quy-ước-đặt-tên thì không**.
- **T4 nit:** frontend-designer vào rổ "5 vai PASS" nhưng in `pointers 0 resolved 0` ⇒ byte thực-sự-verified = **76,3%**, không phải 77,1%.

**Con ĐỀ-XUẤT — A1–A4 ĐẠT 4/4** · **E1–E8 ĐẠT 8/8** · **B1–B12 BÁC ĐÚNG 12/12, 0 mục BÁC SAI**.
- A1 Goodhart-trap **chính xác**: `measure-agent-memory.ps1:20` = `if ($_.Name -eq '_INDEX.md')`; `_INDEX-2026-05.md` rơi nhánh `else → $verbatim` ✓
- A3 **targeting tinh hơn audit tưởng**: inv-cb `2026-07.gist` (07-18) **mới hơn** verbatim (07-17) ⇒ chưa stale; refine viết *"(sau A2)"* = **điều-kiện-hoá ĐÚNG**
- A4 citation byte-exact: `budget:14` có đủ 4 ca; **E4 là ca thứ 5 — hợp lệ**

## C — FALSIFY-LOG (9 phép)

| # | phép PHỦ ĐỊNH | kết |
|---|---|---|
| **F1** | 🔴 thách vùng CLEAN: *"0 instrument gác l2_index"* — grep **28 script** | **HELD.** `l2_index` xuất hiện **đúng 1 lần toàn repo scripts**: `measure-agent-memory.ps1:30` — thuần **báo cáo**, 0 so-sánh cap. Cố phá, **không phá được** |
| **F2** | 🔴 thách CLEAN #2: *"A7 PASS 251/251"* | **HELD byte-exact** — nhưng đào ra nit con ĐO không nói: frontend-designer PASS với **0 pointer** |
| **F3** | phá E4: nghi frontmatter tự-khai mà thân bài không đụng | **HELD.** Đếm back-resolve trong THÂN: cicd→runs 19/q4 5/q3 3/q2 2 · impl-be 4/4/3/3 · inv-cb 14/7/8/6 · reviewer 10/8. **Mọi file nguồn có pointer thật.** E4 đứng vững dưới phép **NẶNG HƠN** refine tự áp |
| **F4** | phá E5: quét TOÀN BỘ cặp twin | **HELD — và BROKE NGƯỢC vào refine.** **6 cặp stale**, refine báo **2**: impl-be 2026-06 **+25,7d** · inv-cb 2026-06 +13,2d · impl-fe 2026-H1 +12,0d · cicd 2026-06 +8,5d · reviewer 2026-07 +4,1d · reviewer 2026-06 +2,0d. **Điểm mù refine phát hiện LỚN GẤP 3 lần nó báo**; 4 cặp lớn nhất **ngoài tập target A3** |
| **F5** | phá *"0 dư-lượng ghi"* bằng mtime 17 MEMORY.md + 7 file dirty | **HELD.** 17/17 mtime ≤ 14:03:54; 7 file dirty 14:13→15:48 — **tất cả TRƯỚC 15:50** |
| **F6** | phá *"mfe ghi 1 file"* — nghi ghi lén | **HELD.** `.mfe-state.json` mtime 15:51:50 (trong W1) ⇒ ghi THẬT; nhưng md5 `21a5a12d…` **không đổi** ⇒ **delta 0 byte** |
| **F7** | phá E4: tìm 1 shard KHÔNG gist nào phủ | 🔴 **BROKE — 1/15.** `test-specialist/baseline-history.md` **không có gist gộp nào phủ**; nó thoát nhờ `budget:162` *"reference-file [skip sleep: đã distilled-form]"* = **cơ chế KHÁC hẳn** |
| **F8** | phá A1 bằng hệ quả **bậc 2** | 🔴 **BROKE-BỔ-SUNG.** Tách `_INDEX.md` không chỉ đẩy byte sang `l2_verbatim` — file tách **cũng thành shard MỚI** của probe (không tên `_INDEX`, không `.gist`, không twin) ⇒ **pending 15→16**. Refine bắt nhánh 1, **sót nhánh 2**. Ghép cặp instrument này **không con nào nêu** |
| **F9** | phá *"trio 5/5 là tautology"* | **HELD (tautology xác nhận).** `harness-audit.md:54-58` = **đúng 5** anti-pattern đánh số = mẫu-số 5. Diary mtime 07-20 18:31, chưa ghi lại lần nào |

## D — 5 CÂU LEAD GIAO

**① E4 ĐÚNG — 14/15 chuẩn, 1/15 over-generalize.** Audit **tự mở cả 5 file**. `test-spec/baseline-history.md` thoát bằng **cơ chế khác** (skip-note), nên **tiêu đề** của refine vơ cả 15 vào một rọ là quá rộng. 🔴 **Kết luận vận-hành KHÔNG ĐỔI: 0/15 file thực sự cần nén.**
🔴 **Hệ quả nặng nhất, xác nhận bằng chính config:** `budget:12 _owner_set` viết nguyên văn *"đây là số anh tự đặt **sau khi thấy phép đo 15-shard-tồn**"* ⇒ anh chốt **7 SAU KHI nhìn 15**, mà 15 là dương-giả ⇒ **tiền đề chọn số đã lệch, có bằng chứng trong chính file config**. Chỉ owner sửa được.
🔴 **Về fault-inject 6/6 của C11:** probe **chạy đúng spec**; fault-inject chứng minh **logic đếm** có răng — nhưng **không thể** chứng minh **giả-định quy-ước-đặt-tên**, vì **cây tạm được dựng theo đúng giả định đó**. **Pass thật mà vẫn sai.** Ca thứ **5** của lớp "bộ lọc nuốt nhầm" — lần này *"nó nuốt nhầm cả một quy ước đặt tên"*.

**② E5 ĐÚNG — refine tự đếm thiếu.** `reviewer/2026-07.md` mtime 07-22 13:13, commit `36cefcc 13:40:49`; `.gist.md` dừng 07-18 11:56 (`aa88d01`) — xác nhận bằng **git**, mạnh hơn mtime. Nhưng đủ thì **6 cặp, không phải 2**. Nghịch lý refine nêu **đúng, biên độ gấp 3**.

**③ Con ĐO tự hạ giá 100% — TỰ-PHÊ ĐÚNG MỨC.** Mẫu-số 5 = đúng 5 anti-pattern đánh số ở `harness-audit.md:54-58`; diary seed chưa ghi lại. Điểm 5/5 **theo cấu tạo mà có**. Đây là tự-phê **chính xác về mặt cơ khí**, không phải khiêm tốn tu từ. Ngược lại — con ĐO **chưa đủ mạnh tay ở T7**.

**④ B2 BÁC ĐÚNG.** 3 chứng: (a) 4 vai đều có `source-verbatim:` + `pointer-style: substring back-resolve` ⇒ gist **đang làm đúng việc bản đồ**; (b) `budget:165` **đã tự xếp** impl-fe *"no _INDEX yet [P2 event, not sleep-scope]"* ⇒ BÁC-hạ-P2 **trùng phân loại có sẵn của spec**; (c) tạo `_INDEX` lúc này chủ yếu để **A7 đếm được** = sửa phép đo.
🔸 **Dư-lượng refine chưa đóng:** 4 vai đó **0 cơ chế kiểm pointer-integrity**, mà 2 trong đó (harvest-curator, tooling-auditor) **tự khai frontmatter** rằng nội dung đã move vào verbatim SAU khi gist chụp = **drift đã biết**. Refine đặt thuốc vào **câu chữ**, không giảm điểm mù. Đường rẻ hơn refine **không cân nhắc**: cho A7 resolve thẳng pointer trong `source-verbatim` của gist, **không cần `_INDEX.md`**.

**⑤ `git status` SẠCH.** Duy nhất `?? scheduled_tasks.lock` (lock runtime). 7 file tracked-dirty mtime 14:13→15:48 **TRƯỚC run-start 15:50** ⇒ **dơ có sẵn, KHÔNG phải dư-lượng wave**. Khai *"read-only = thiếu tool, KHÔNG sandbox"* của **cả hai con: ĐÚNG SỰ THẬT** — kiểm bằng mtime, không bằng lời khai.
🔴 **1 khuyết tật SPEC bắt được:** `run.md(f)` viết kỳ vọng *"post-wave git status → 0 tracked-change ngoài run-folder"*. Đọc theo mặt chữ thì **TRƯỢT** (7 file dirty), nhưng cả 7 có từ trước. **Phép kiểm như đang viết KHÔNG phân biệt được dơ-có-sẵn với dư-lượng-wave** ⇒ hoặc kêu oan, hoặc (nguy hơn) **bị bỏ qua như dương-giả rồi nuốt luôn dư-lượng thật**. Muốn có răng phải **chụp baseline `git status` TRƯỚC wave rồi so hiệu**.

## E — VERDICT TỔNG

**Con ĐO:** 11/11 tín-hiệu ĐẠT · 7/8 trục ĐẠT, **T7 TRƯỢT-MỘT-PHẦN**. Số **byte-exact 6/6**; audit cố phá 2 vùng CLEAN **không phá được**. Điểm trừ duy nhất: bỏ khối 8 đường dẫn probe ⇒ **tự bịt mắt trước E4**.
**Con ĐỀ-XUẤT:** 4/4 action ĐẠT · 8/8 E ĐẠT (E4 kèm nhãn over-generalize 1/15) · **12/12 BÁC ĐÚNG**. Điểm trừ: **E5 tự đếm thiếu 4/6 cặp** · **A1 sót hệ quả bậc 2** (F8).
**Toàn-vẹn:** cả hai con khai **THẬT** — kiểm bằng mtime + md5 + git, không bằng lời.

**3 việc đẩy owner/lead (ngoài trục audit, KHÔNG tự chấm):**
1. `min_pending_shards=7` **tiền đề lệch**, `budget:12` tự làm chứng — **số của owner**.
2. `run.md` crystallized **stale 2.195 B** + header *"0 LỆCH trên 4 mốc"* **im lặng loại đúng mốc lệch** — lead-surface, H24.
3. `run.md(f)` cần **baseline-diff**, `git status` trần không dùng được.

**KHAI BÁO CỦA AUDIT:** 6 script chạy — 5 read-only; `mfe-eval.ps1` ghi `.mfe-state.json`, md5 **trước = sau = `21a5a12d0354543cfea35e7d79527a45`**, **delta 0 byte**. **Không** Write/Edit file nào. *"Read-only" của audit cũng = thiếu tool, KHÔNG phải sandbox* — Bash vẫn là kênh ghi mở; đã tự soát `git status`: sạch.
