# harness-audit (nấc 3/3 con KIỂM) — S191 @close *(trả SAU khi lead đã đóng sổ — nợ TREO nay TRẢ)*

**VERDICT: con ĐO = MIXED-PASS (số sạch, 1 trục sai NHÃN) · con ĐỀ-XUẤT = MIXED-FAIL — ES-3 ĐẠT byte-exact nhưng đơn-vị mong-manh · ES-4 TRƯỢT ở CƠ-CHẾ · B6 BÁC SAI (tự khoá tay thật) · PIN TRƯỢT một phần.**

## 0. PIN GATE — fail-closed, khai thẳng

🔴 `harness-refine-return.md` **MISSING lúc vai chạy** ⇒ mọi verdict về con ĐỀ-XUẤT chấm trên **tóm-tắt-đọc-qua-lead**, KHÔNG phải artifact ⇒ **TRƯỢT-pin, không phải ĐẠT-ảo**. Vai **TỪ CHỐI** chấm câu-chữ / neo `file:line`, chỉ chấm NỘI DUNG tái-dựng được từ đĩa + mã.
🔴 **PIN của lead thiếu 1 vật**: `sub-ring5-audit.md` (993 B, mtime 01:54:10) không được liệt.
Mtime-chain: eval 01:32:59 → sub cuối 01:55:39 → vai chạy sau ⇒ **tuần-tự HELD**.

## 1. Tự re-chạy 2 instrument — byte-exact

`memory-archive-gate.ps1` DRY: A7 **432/432 failed 0** ✓ · `lead-gap` 29.295 ✓ · `lead-stale` 27.154 ✓ · resolve-string khớp **nguyên văn**.
`measure-agent-memory.ps1` (grep chứng **0 write-op** trước khi chạy): **29/29 vai khớp `wc -c`, 0 lệch**.
Tái dựng số học planner: `ring2 25.584` · `lead-gap 26.988` · `lead-stale 25.421` — **3/3 KHỚP TỪNG BYTE** ⇒ mô hình đứng trên máy xác nhận, không phải đọc-mã-đoán.

## 2. Falsify — 7 phép, 5 BROKE (2 vào chính vai)

- **F1 BROKE (vào chính vai):** định kết eval sai vì `cicd-monitor l2_index = 24.568 = 120% cap`; phủ định ⇒ `split_rule_S167` nói cap chỉ áp `_INDEX.md` **CHÍNH**, script cộng cả rotated. Main-only = **reviewer 13.941 = 68,1%** — **trùng đúng số eval cite** ⇒ **eval ĐÚNG, đòn chết**.
- **F2 BROKE tiền-đề refine:** grep toàn bộ write-op trong gate = **đúng 1 dòng `:224` `Set-Content` vào `.archive-strikes.json`**; header `:26` tự khai *"records strikes; STILL no file moves"* ⇒ **`-Apply` KHÔNG di chuyển một byte nội dung nào**.
- **F3 HELD:** `:177` đúng nguyên văn `bottom = newest`; khối `##` dưới ĐÚNG là append, nhưng khối bullet TRÊN `##` đầu chạy **NGƯỢC** (newest-first) ⇒ **1 file, 2 quy ước thứ tự ngược nhau**.
- **F4 BROKE (số sai, hướng đúng, NẶNG HƠN):** đo thật `lead-gap 54,5%` · `lead-stale 50,8%` · `ring2 58,3%` — **cận dưới 40% KHÔNG tồn tại** ⇒ refine khai khoảng **rộng hơn sự thật**, tự làm yếu luận điểm của mình.
- **F5 HELD:** tự nghi "có phải mình dựng mô hình riêng rồi chê máy?" — chống bằng việc mô hình khớp **3/3 stdout của chính gate** TRƯỚC khi dùng nó kết luận.
- **F6 BROKE thước của chính vai:** `wc -m` vs `python len()` lệch **đúng 34 ký-tự astral (emoji)** — UTF-16 code unit ⟂ code point.
- **F7 BROKE:** `:163 $b += ($lines[$li].Length + 2)` — `Get-Content` đọc UTF-8-no-BOM thành ANSI ⇒ `.Length` ≈ **byte**; `+2` cho file thuần-LF ⇒ **overstate drain** (ring2 +11 · lead-gap +23 · lead-stale +15). **Đúng lớp lỗi S185, chưa vá.**

## 3. 🔴 ES-4 — đúng bệnh, SAI THUỐC, SÓT BỆNH NHÂN NẶNG NHẤT

**(a)** Mô phỏng refine **đúng hình dạng**: giả-định `bottom=newest` có thật, ruột trên `##` đầu 50,8–58,3% hiện **không nằm trong pool** (planner chỉ thấy `^#{2,3}\s`), gắn `##` sẽ đẩy nó thành **index 0 = già nhất** ⇒ **đảo hạng tuổi CÓ THẬT**.

**(b) Nhưng "CẤM chạy `-Apply`" TRƯỢT — cấm nhầm nút.** `-Apply` chỉ tăng strike (F2). Drain do **người làm tay** (resolve-string: `curate L1→L2 by hand`). Cấm `-Apply` **không chặn** mối nguy, mà **che** nó.

**(c) 🔴 Mối nguy ĐANG SỐNG ở vai mà bảng của lead KHÔNG nhắc:**

```
ring2-audit  27458  YES  8  2  ~25584
PROPOSE archive (strike 2>=2): move 3 lowest-value (position tiebreak) -> curate L1->L2 by hand
```

**`ring2-audit` ĐÃ Ở `PROPOSE`, strike 2/2** = vai DUY NHẤT máy đang chìa move-set ra để người thi hành. Phân tầng đúng:
- `lead-gap`: `WARN keep-floor` — trong `if/elseif` (`:198-204`) `warnFloor` đứng **TRƯỚC** `PROPOSE` ⇒ **vĩnh viễn không bao giờ in PROPOSE**; `-Apply` với nó **vô hại tuyệt đối**.
- `lead-stale`: `WATCH 1<2` — thêm 1 nhịp `-Apply` là lên PROPOSE.
- `ring2`: **đã PROPOSE rồi** — và ES-4 không nêu tên nó.

⇒ Câu đúng: ***"CẤM thi hành move-set gate in ra cho tới khi vá giả-định `bottom=newest`"*, neo vào `ring2-audit`.**

## 4. ES-3 — ĐẠT số, mong manh đơn-vị

`25.600 − 25.560 = 40`, `99,84%` ⇒ **ĐẠT byte-exact**. 🔴 Nhưng thước ký-tự **khác** cho 25.594 ⇒ **còn 6, không phải 40** — cả hai đều tên "ký-tự" ⇒ **tái phạm lớp S186, lùi thêm một tầng: không còn byte ⟂ ký-tự mà là ký-tự ⟂ ký-tự**.
Và mệnh đề *"archive theo byte sắp hết hiệu lực"* **CHƯA đứng**: khoá tên `autoinject_cap_bytes`, rule *"keep MEMORY.md < autoinject_cap so the WHOLE hot file injects"* = **ràng buộc nạp file, đơn vị byte theo thiết kế**. Hội tụ chỉ làm **mất đường lách**, không biến byte thành thước sai. **Đổi đơn vị = CHÍNH SÁCH của owner — vai cố ý KHÔNG đề xuất.**

## 5. 🔴 thách-CLEAN — B6 BÁC SAI, đúng kiểu tự khoá tay

Số học dứt điểm cho `lead-gap`: cần drain **3.695 B** · pool máy nhìn thấy **2.284 B** ⇒ **drain sạch 100% vẫn còn 27.011 > 25.600** · khối máy KHÔNG thấy (trên `##` đầu) = **15.961 B (54,5%)**.

⇒ **Máy KHÔNG có đường nào đưa `lead-gap` xuống dưới cap** — đúng lý do nó in `cannot auto-drain`. **B6 (gắn `##`) là cơ-chế DUY NHẤT biến 15.961 B từ vô-hình thành khả-drain**; bác nó ⇒ **khoá vĩnh viễn 3 vai ở trạng thái không-sửa-được-bằng-máy**. Bằng chứng thuốc có hiệu lực nằm trên đĩa: nhóm đã-gắn-`##` có tiền-`##` **1,2–3,7%** (`frontend-designer 1,2%` · `ctx-audit 2,0%` · `investigator-codebase 2,2%` · `ring5 3,7%` — đúng bậc 2,1% B6 viện dẫn từ S186) ⟂ nhóm chưa gắn **50–58%**.

**Disposition đúng = CÓ ĐIỀU KIỆN, không phải BÁC:** gắn `##` **đồng thời** với (i) vá `:177-178` cho biết thứ tự thật, **hoặc** (ii) xếp lại khối bullet cho newest xuống đáy trước khi gắn. Refine lấy hazard của (ii) để bác trọn B6 ⇒ **BÁC quá rộng**, hệ quả là **không ai phải làm việc khó**.

*15 mục bác còn lại: **KHÔNG CHẤM ĐƯỢC** — không có return trên đĩa để đọc nguyên văn. Vai không suy đoán để lấp.*

## 6. Verdict per-claim

**Con ĐO ĐẠT:** 3 over-cap đúng bộ · soft_cap 0/29 · l2idx (sống sót F1) · `reviewer còn 131 B` · A7 429/429 tại thời điểm nó đo · Σ37 tự-cộng khớp · caveat G **đã thành sự thật** (lead-gap/lead-stale mtime 01:49, sau lượt đo 01:32).
**TRƯỢT 1 trục — sai NHÃN:** `ring1-audit` A7 nay **CÓ `_INDEX.md` và PASS 1/1** (sau A2), và bộ "vai có archive mà không `_INDEX`" thật là **2** (`ctx-audit` · `ring2-audit`), không phải 3.

**Con ĐỀ-XUẤT:** A1/A2/A3 **ĐẠT, verify được trên đĩa** — A7 429→**432** (+3 khớp đúng 3 con-trỏ mới), `ring1/_INDEX.md` 682 B có `substring:"S162 (07-30) KIỂM vòng tooling/harvest @close"`, needle lấy từ ruột file thật, gate resolve 1/1.

## 🔴 Gửi ngược LEAD 2 việc

1. **PIN thiếu `sub-ring5-audit.md` + thiếu dòng `ring2-audit PROPOSE`** — bề-mặt-đo lead dán cho vai **hụt đúng vai đang nguy nhất**.
2. **`-Apply` an toàn hơn ES-4 tuyên, nhưng move-set in ra thì KHÔNG**: ai thi hành 3 mục của `ring2` sẽ bốc `Role baseline` + `Runs` + `Curate trigger` = **hợp-đồng-vai** ⇒ đúng lớp `value_protect` mù đã ghi từ S185.
