# sub-harness-audit — vòng-3 nấc 3/3 con KIỂM @bookend-close S185

> ARTIFACT-FIRST (chống #53). Ghi liên tục, đổ ruột từng phép. Vai read-only trên agent-memory; file này nằm trong run-folder (run-trace), KHÔNG phải agent-memory.

## 0. PIN GATE — PASS (verify TRƯỚC khi chấm)

PIN đích-danh = `.claude/workflows/runs/2026-08-09-S185-bookend-close/` — KHÔNG tự tìm 'run mới nhất'.

| kiểm | kết quả |
|---|---|
| `test -d <pin>` | PASS |
| `harness-eval-return.md` | **7.495 B** non-empty, mtime 2026-08-09 22:30:33 |
| `harness-refine-return.md` | **6.861 B** non-empty, mtime 2026-08-10 01:33:46 |
| `script-arm-output.md` (PIN input) | **22.950 B**, mtime 22:17:26 |

**mtime-chain ⇒ TUẦN TỰ HELD:** script-arm 22:17:26 → eval 22:30:33 → refine (08-10) 01:33:46 → tao (sau 01:34). Không có dấu hiệu chạy song song.

**F14 GATE (bài học S162 — cây LIVE trượt GIỮA lượt):**
- `git log --since="2026-08-09" -- .claude/agent-memory` ⇒ commit cuối chạm agent-memory = `93173099` @22:18 (wal flush).
- `git diff --stat 93173099 HEAD -- .claude/agent-memory` ⇒ **RỖNG**.
- `git status --porcelain -- .claude/agent-memory` ⇒ **RỖNG**.
⇒ Cây agent-memory **ĐÓNG BĂNG từ 22:18**. Cả eval (22:30), refine (01:33) và tao đo **cùng một cây**. F14 KHÔNG tái diễn ⇒ đo trên cây LIVE là hợp-lệ lượt này (khỏi cần `git archive`).

---

## 1. RE-CHẠY INSTRUMENT (đối-chứng byte-exact)

### I1 — `measure-agent-memory.ps1` (exit 0)
Lệnh: `powershell -NoProfile -File scripts/measure-agent-memory.ps1` → parse JSON, diff vs khối JSON trong `script-arm-output.md`.

**KẾT QUẢ: 28 agent × 5 field = 140 ô — 0 MISMATCH.** caps khớp (soft 30720 / autoinject 25600).

Số load-bearing tái-dựng:
```
ring2-audit         31781   (124,14% cap)   reviewer  31341 (122,43%)
tooling-auditor     30981   (121,02%)       lead-stale 30852 (120,52%)
harvest-curator     28071   (109,65%)       impl-be    25515 (99,67%)
OVER 25.600 = 5 vai · OVER 30.720 = 4 vai · n_agents = 28 · TOTAL_L1 = 470.131
```

### I2 — `nhip-no-probe.ps1` (exit 0, read-only: 0 hit Set-Content/Out-File/Add-Content)
```
PIN  : ... deep 19/15 OVERDUE:deep | tran-bo-nho 5 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 4 ngay | so-yc treo 5 / nhac2+ 2
MINE : ... deep 19/15 OVERDUE:deep | tran-bo-nho 5 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 5 ngay | so-yc treo 5 / nhac2+ 2
```
**Lệch đúng 1 ô: `pull-cach 4` → `5`.** TRUY NGUỒN: `nhip-no-probe.ps1:207` `$days = [int]([datetime]::Now.Date - $newest.Date).TotalDays` ⇒ trường **phụ-thuộc ĐỒNG-HỒ**; PIN chạy 08-09, tao chạy sau nửa đêm 08-10 ⇒ +1 ngày. **KHÔNG phải bịa** — eval khai byte-exact tại thời điểm 22:30 là ĐÚNG. Mọi ô còn lại char-exact.

### I3 — `memory-archive-gate.ps1` DRY (exit 0; `-Apply` default `$false` xác nhận `:30`)
```
ring2-audit    31781 YES  7 entries strike 2  ~23102  PROPOSE archive (move 2 lowest-value)
lead-stale     30852 YES  6 entries strike 1  ~30214  WARN keep-floor hit (5)
reviewer       31341 YES  8 entries strike 1  ~30982  WARN value-floor
tooling        30981 YES 11 entries strike 1  ~30134  WARN value-floor
harvest        28071 YES  9 entries strike 1  ~27224  WARN value-floor
A7 GATE PASS - total pointers 429, resolved 429, failed 0
[A6] DRY-RUN: strike counters NOT persisted
```
⇒ T16 (1 PROPOSE + 4 WARN) · T13 (A7 429/429) · signal-3 (after-est 30.214) **tái-dựng khớp**.

### I4 — đo tay khối TRÊN heading đầu (6 file, byte thật từ đĩa)
Phép: `splitlines(keepends=True)` → cộng byte các dòng TRƯỚC `^#{2,3}\s` đầu tiên.

| file | size | PRE (tao đo) | PRE (refine cite) | verdict |
|---|---|---|---|---|
| impl-be | 25.515 | **15.309** | 15.309 | EXACT |
| reviewer | 31.341 | **17.505** | 17.505 | EXACT |
| ring2 | 31.781 | **16.008** | 16.008 | EXACT |
| lead-stale | 30.852 | **13.713** | 13.713 | EXACT |
| tooling | 30.981 | **11.398** | 11.398 | EXACT |
| harvest | 28.071 | **10.183** | 10.183 | EXACT |

**6/6 EXACT** — refine KHÔNG bịa khối này. (% của refine làm tròn XUỐNG: reviewer thật 55,9% ghi "55%", tooling 36,8% ghi "36%" — làm tròn bảo thủ, không thổi phồng.)

---

## 2. 🔴 PHÁT HIỆN BẺ ĐƯỢC — "8.679 = đúng 2 span" là XÁC-MINH VÒNG-TRÒN

Refine `:10` viết: *"Kiểm số học khớp máy **từng byte**: … ring2 31.781−23.102=**8.679** = đúng 2 span"* và E5 `:28` *"(8.679 B khớp)"*.

**(a) Phép của refine KHÔNG THỂ SAI — nó tautology.** `memory-archive-gate.ps1:186` định nghĩa `$afterEst = $bytes - $movedBytes`. Nên `bytes − afterEst ≡ movedBytes` **theo định nghĩa**. Trừ ngược 2 số máy in ra rồi tuyên "khớp máy từng byte" = kiểm-tra 0 bậc tự do; nó xác nhận số học của máy, **không** xác nhận đĩa.

**(b) Đo ĐỘC-LẬP trên đĩa thì KHÔNG khớp:**
```
ring2 7 span (khớp cột entries=7):
  span1 L24 ## 🎯 Role baseline   1.446 B
  span2 L36 ## 📅 Runs            7.192 B
  span3..7 = 147 / 533 / 372 / 1.224 / 4.859 B
TRUE span1+span2 = 8.638 B     ·     máy/refine = 8.679 B     ·     Δ = −41 B
```
**(c) CƠ-CHẾ của 41 B** (truy tới dòng, không đoán): `:163` `$b += ($lines[$li].Length + 2)  # +2 ~ CRLF est`. File ring2 **0 dòng CRLF** (thuần LF, đếm `raw.count(b'\r\n')`=0) ⇒ máy cộng dư **+1 B/dòng**. Span1+span2 = **41 dòng** (L24→L64) ⇒ dư đúng **41 B**. Khớp cơ-chế tuyệt đối.

**PHÁN:** phần **ĐỊNH-DANH** của refine (2 span đó = `Role baseline`+`Runs`, và chúng là 2 span duy nhất ngoài last-5 vì file chỉ 7 span, keep_floor=5 ⇒ floorStart=7−5=2) = **ĐẠT, xác minh độc-lập**. Phần **CON SỐ "8.679 … từng byte"** = **TRƯỢT**: số thật 8.638, và chữ "từng byte" mô tả sai một phép vốn không thể sai. Decision-impact: **NHỎ** (0,47%; E5 kết luận "value-scan của lead bác ĐÚNG" vẫn đứng vì nó dựa vào định-danh chứ không vào con số).

⚠️ Hệ quả LAN RỘNG (mọi `after-est` đều lệch cùng dấu): mọi con `~after-est` của gate **nhỏ hơn thực-tế nên OVERSTATE lượng drain được** → after-est THẬT còn cao hơn. Cụ thể lead-stale: máy ~30.214, mà kết luận "vẫn > cap" ⇒ **kết luận CÀNG đứng vững** (sai số đẩy ngược hướng an-toàn). Không lật signal-3/A2.

**Lần thứ 2 cùng cơ-chế (độc-lập):** refine `:9` nói nháp A1 = span `## S152` **2.502 B**. Đo thật span L103→EOF = **2.496 B**, span đó **6 dòng** ⇒ dư đúng **6 B**. Hai ca (41 dòng→+41 B · 6 dòng→+6 B) khớp luật `+1 B/dòng` tuyệt đối ⇒ cơ-chế đã CHỨNG, không phải trùng hợp.

**Lần thứ 3:** refine `:10` `30.852−**638**(## Role baseline)=30.214`. Span `## Role baseline` lead-stale đo thật = **634 B** (4 dòng ⇒ dư 4 B). Sau-drain THẬT = **30.218**, không phải 30.214. Kết luận ">cap" **KHÔNG đổi** (30.218 > 25.600).

---

## 3. 🔴 CHUỖI HEADROOM — eval VẪN THIẾU 1 MỐC (tái phạm lớp S173, nhẹ hơn)

Eval `§3` tự dán nhãn *"**7 MỐC (liệt đủ** trước khi trừ — **luật sau erratum S173**)"* — tức nó **viện dẫn chính cái luật do audit S173 của tao đẻ ra**. Nên tao áp đúng phép đã bắt nó lần trước: **liệt MỌI `measured_headroom` máy in trên đĩa**, không tin danh sách vai đưa.

Lệnh: `grep -rn "measured_headroom" .claude/workflows/runs/`

| # | phiên | headroom | nguồn máy | eval cite? |
|---|---|---|---|---|
| — | S144 07-22 | 199.759 | `…S144…/harness-eval-return.md` | ngoài cửa-sổ (chuỗi bắt đầu S153) |
| — | S152 07-25 | 184.502 | `…S152…/machine-baseline.md` | ngoài cửa-sổ |
| 1 | S153 07-26 | **181.228** | `…S153…/instrument-backfill.txt` | ✅ |
| 2 | **S154 07-26** | **176.696** | 🔴 `…S154-bookend-open/harness-eval-return.md:163` — stdout `measured_headroom : 176696 tok`, phiên đó tự xác nhận **BYTE-EXACT 6/6** (`:169`) | ❌ **BỎ SÓT** |
| 3 | S159 07-29 | **172.247** | `…S159…/harness-eval-return.md` | ✅ (mốc DUY NHẤT eval để **trống nhãn phiên** — đúng chỗ kề lỗ hổng) |
| 4 | S162 07-30 | **165.767** | `…S162…/harness-audit-return.md:47` RC-3 byte-exact 6/6 | ✅ |
| 5 | S163 07-30 | **160.924** | `…S163…/harness-eval-return.md` + `run.md` | ✅ |
| 6 | S169 08-01 | **152.968** | `…S169…/harness-eval-return.md` | ✅ |
| 7 | S173 08-05 | **148.183** | `…S173…/harness-eval-return.md` | ✅ |
| 8 | S185 08-09 | **134.573** | `script-arm-output.md:399` | ✅ |

⇒ Trong cửa-sổ S153→S185 đĩa có **8 mốc**, eval liệt **7**. **Thiếu S154 = 176.696.**

**Bảng bước THẬT (8 mốc):**
```
S153→S154  -4.532   S154→S159  -4.449   S159→S162  -6.480   S162→S163  -4.843
S163→S169  -7.956   S169→S173  -4.785   S173→S185 -13.610  (GỘP, eval tự khai)
```
Eval trình S153→S159 như **một bước −8.981**; thật là **hai bước** −4.532 và −4.449.

**PHÁN 2 vế (không gộp):**
- **"đơn-điệu giảm, chưa đảo chiều" = ĐẠT** — chèn S154 vào: 181.228 > **176.696** > 172.247 ⇒ đơn-điệu **vẫn giữ trên cả 8 mốc**. Kết-luận KHÔNG đổ.
- **"7 mốc — liệt ĐỦ" = TRƯỢT** — chữ *liệt đủ* là claim đo-được, và nó sai. Cùng LỚP lỗi S173 (bỏ mốc máy-in giữa chuỗi), **nhẹ hơn nhiều**: S173 sót 2 mốc và **đảo dấu đạo-hàm**; S185 sót 1 mốc và **kết luận không đổi**.
- Eval khai trung-thực bước cuối là **GỘP** (S179 không có số máy) ⇒ không tái phạm lỗi "đọc bước gộp thành gia-tốc" của S173. Ghi nhận.

---

## 4. 🔴 EVAL T24 — so-sánh lịch-sử SAI (số hiện-tại thì đúng)

Eval `T24`: *"MFE impl-fe **12/13 = 92%** (**S172/S173 = 85%** ⇒ hướng TỐT LÊN)"* · signal-10 lặp lại *"(S172: 85%), refine đừng đọc ngược"*.

Đối chứng ĐĨA (nguồn sơ-cấp, không dùng trí nhớ):
| phiên | số | neo |
|---|---|---|
| S172 | **11/13 = 85%** | `…S172-bookend-close/sub-harness-audit-close-S172.md:120` |
| **S173** | **12/13 = 92%** | `…S173…/harness-eval-return.md:203` · `run.md:28` · `harness-audit-return.md:132,142` |
| S185 | **12/13 = 92%** | `script-arm-output.md` |

⇒ **S173 KHÔNG phải 85% — nó đã là 92%.** Chính `sub-tooling-auditor-open-S173.md:223` gắn nhãn *"SỐ ĐÃ STALE — đo tươi phiên này 12/13 = 92%"*, và eval S173 `:399` xếp hạng **MIXED** (*"hồi 1, chưa về 13/13"*).

**Verdict:** con số **12/13 = 92% ĐẠT** · mệnh-đề **"S173 = 85%" TRƯỢT** · nhãn **"hướng TỐT LÊN" TRƯỢT theo** — đúng thật là **ĐỨNG YÊN 12 phiên** (S173→S185, 92%→92%), và **mục MISS vẫn chưa ai gọi tên**. Đọc "tốt lên" làm **giảm** áp-lực lên đúng chỗ đang tắc.
🔴 Hệ quả **NGƯỢC hướng eval nghĩ**: sự đứng-yên này **CỦNG CỐ E1 của refine** (lane ① mù vì không ai chạy `-Detail`), chứ không làm E1 yếu đi. Refine **không** nhại lại chữ "tốt lên" ⇒ refine giữ đúng nấc.

---

## 5. VERDICT PER-CLAIM — 44 claim: **40 ĐẠT / 4 TRƯỢT**

### 5A. harness-eval — 24 claim: **22 ĐẠT / 2 TRƯỢT**

| # | claim | verdict | bằng-chứng tao tự dựng |
|---|---|---|---|
| E1 | §0 PIN-vs-LIVE 4/4 + control đĩa 8/8 | **ĐẠT** | 8/8 stat khớp; `pull-cach` lệch hôm nay do đồng-hồ, KHÔNG phải lỗi eval |
| E2 | §1 tự-cộng 12+9+8+4+1+2 = 36 | **ĐẠT** | cộng lại = 36 |
| E3 | T1/T4 roster 28 vai đo đủ | **ĐẠT** | re-run: `n_agents 28` |
| E4 | **T5** 5 vai > 25.600 (5 số %) | **ĐẠT** | re-run: OVER_25600 = 5, cả 5 tên + % khớp |
| E5 | **T6** 4 vai > 30.720 | **ĐẠT** | re-run: OVER_30720 = 4 |
| E6 | **T7** impl-be 99,7% còn **85 B** · 10/28 ≥80% cap | **ĐẠT** | 25.600−25.515 = **85** ✓; đếm ≥20.480 = **10** ✓; 4 số cận-cap còn lại khớp |
| E7 | **T9** baseline `measured` **16/17** lệch + top-5 % | **ĐẠT** | 19 row − 2 seed-0 = 17; khớp đúng 1 (office-document 3323) ⇒ 16/17 ✓; +998,6/+899,9/+836,0/+825,9/+556,8 **cả 5 EXACT** |
| E8 | **T10** 17 số-thật + 2 seed-0 + 9 vai 0-row = 28 | **ĐẠT** | 9 tên thiếu **trùng khít** danh sách eval |
| E9 | **T11** hẹn re-sync 2026-08-01 trễ 8 ngày · row harness-eval `1547` + "first-run pending" | **ĐẠT** | `measured['harness-eval'].l1_hot = 1547`; rollout chứa cả 2 chuỗi |
| E10 | **T12** l2_index MAIN-only max **68,1%** · cicd split 9.682+13.906=23.588 | **ĐẠT** | cap 20.480; reviewer 1 file 13.941 = 68,07%; cicd đúng 2 file cộng khít |
| E11 | **T13** A7 **429/429** PASS | **ĐẠT** | re-run gate: `total pointers 429, resolved 429, failed 0` |
| E12 | **T16** 1 PROPOSE (ring2 strike-2 ~23.102) + 4 WARN | **ĐẠT** | re-run DRY in y hệt 5 dòng |
| E13 | T22 FIT 2,71% worst-case | **ĐẠT** | `script-arm:247` |
| E14 | T23 per-role **22/23 = 100%** + 5 N/A | **ĐẠT** | đếm tay: 28 dòng − 5 N/A = 23; đúng 1 dòng < 100% |
| E15 | T24 số hiện-tại impl-fe **12/13 = 92%** | **ĐẠT** | khớp |
| E16 | **T24 "S172/S173 = 85%" ⇒ hướng TỐT LÊN** | 🔴 **TRƯỢT** | §4 — S173 **đã là 92%**; thật = **đứng yên 12 phiên** |
| E17 | **T27** hotload **736.281** + 6 file | **ĐẠT** | tao **tự stat 6 file**: 6/6 EXACT, tổng EXACT |
| E18 | **T28** headroom **134.573**, thiếu **75.427** | **ĐẠT** | tự dựng: 380.000 − ⌈736.281/3,0⌉ = **134.573** ✓; 210.000−134.573 = **75.427** ✓ |
| E19 | T31 deep **19/15** OVERDUE | **ĐẠT** | re-run probe |
| E20 | T32 run-chua-gom **1** | **ĐẠT** | re-run probe |
| E21 | T34 vế-5 `so-yc treo 5 / nhac2+ 2` | **ĐẠT** | re-run probe; **+bổ**: `nhip-no-probe.ps1:22` (SYNOPSIS) **chỉ khai 4 vế** còn code `:264` in vế 5 ⇒ "brief nói 4" có **nguồn máy**, không phải brief sai |
| E22 | §4 erratum: `nhip-no-probe.ps1:115` đọc `autoinject_cap_bytes` 25.600, bản `c2d01f0d` y hệt | **ĐẠT** | `:115` khớp **nguyên văn**; `git show c2d01f0d` khối 110-120 **byte-identical** ⇒ eval tự bắt lỗi diary mình = ĐÚNG |
| E23 | §3 chuỗi **đơn-điệu giảm, chưa đảo chiều** | **ĐẠT** | giữ trên **cả 8** mốc |
| E24 | **§3 "7 MỐC — liệt đủ (luật sau erratum S173)"** | 🔴 **TRƯỢT** | §3 — đĩa có **8**; sót **S154 = 176.696** |

### 5B. harness-refine — 20 claim: **18 ĐẠT / 2 TRƯỢT**

| # | claim | verdict | bằng-chứng |
|---|---|---|---|
| R1 | **A1** dòng `:104` = **431 B đo tươi** | **ĐẠT** | đo byte thật: `L104 = 431 B` **EXACT** |
| R2 | **A1** `:103`=S152 · `:106`=S182 · `:108`=S185, span chạy tới EOF | **ĐẠT** | 4/4 vị-trí đúng; span cuối L103→EOF |
| R3 | A1 caveat "còn ≈98,0%" | **ĐẠT** | 25.515−431 = 25.084 ⇒ **97,98%** |
| R4 | **A2** `## 📅 Runs` lead-stale = **8.463 B**, 27,4% file | **ĐẠT** | đo thật **8.463 EXACT**; 8.463/30.852 = **27,43%** |
| R5 | A2 neo `:201` máy tự in "SPLIT/condense by hand" | **ĐẠT** | `:201` khớp nguyên văn |
| R6 | **A3** diary harness-refine "59% cap, an toàn" | **ĐẠT** | 15.126/25.600 = **59,1%** |
| R7 | **span ≠ nhãn 4/4 file** | **ĐẠT** | đọc ruột: impl-be→**S185** · lead-stale→**S185** · ring2→**S182** · tooling→**S182**. 4/4 |
| R8 | khối TRÊN heading đầu, **6 file** | **ĐẠT** | **6/6 BYTE-EXACT** (15.309/17.505/16.008/13.713/11.398/10.183); % làm tròn **xuống** ⇒ bảo thủ |
| R9 | parser `:153` cắt `^#{2,3}\s` · `:159` span cuối tới EOF | **ĐẠT** | 2/2 khớp nguyên văn |
| R10 | `keep_floor` giả định **bottom=newest** (`:177`) | **ĐẠT** | `:177` comment **verbatim** *"bottom = newest, append-to-end convention"* |
| R11 | **"8.679 = đúng 2 span … khớp máy TỪNG BYTE"** | 🔴 **TRƯỢT** | §2 — thật **8.638** (Δ−41); và phép là **tautology** (`:186` định nghĩa `afterEst = bytes − moved`) |
| R12 | `30.852 − 638 (Role baseline) = 30.214` | 🔴 **TRƯỢT** | span thật **634 B** ⇒ sau-drain **30.218**. Kết-luận ">cap" **vẫn ĐẠT** |
| R13 | **E5** 2 span = `Role baseline`+`Runs`, là 2 span DUY NHẤT ngoài last-5 vì file chỉ **7 span** | **ĐẠT** | 7 heading ✓ (cột `entries`=7); keep_floor 5 ⇒ floorStart = 7−5 = **2** ✓ |
| R14 | **E5** `Role baseline` ring2 chứa nội-dung tới **S182** ⇒ **value-scan lead bác ĐÚNG** | **ĐẠT** | span1 chứa token **S182** (dòng FLAG-SÓT) + trọn hợp-đồng vai |
| R15 | **E1** `-Detail` **0 call-site**, `:32`, comment `:285-286`, **12 phiên** sau S173 | **ĐẠT** | `:32` + `:285-286` khớp **nguyên văn** (comment nêu đích danh *"reinject lane"*); 185−173 = 12 ✓. Grep repo: hit **duy nhất** = `eval/mfe/README.md:25` — **doc-home, KHÔNG phải call-site** (đúng "1 home" chốt @S152) ⇒ claim ĐỨNG |
| R16 | **E2** `measure-agent-memory.ps1` print-only 0-writer ⇒ là **phép CHÉP** | **ĐẠT** | đọc trọn 41 dòng: chỉ `ConvertTo-Json` ra stdout, 0 `Set-Content` |
| R17 | **E3(i)** 36-60% byte nằm trên heading đầu ⇒ **ngoài pool** | **ĐẠT** | vòng lặp chỉ chạy từ `headIdx[0]` ⇒ byte trước đó **không thuộc span nào**. Dải đo: 36,3%→60,0% ✓ |
| R18 | **E3(ii)** keep_floor ngược corpus | **ĐẠT** | = R10 |
| R19 | caveat 2: `low_watermark_bytes` nay đọc **None** | **ĐẠT** | key **KHÔNG tồn tại**; key thật `low_watermark_ratio` 0.85 ⇒ 25.600×0,85 = **21.760** (giá-trị diary vẫn đúng, TÊN KHÓA thì chết) |
| R20 | BÁC (2)(5)(9)(10) — reviewer vừa harvest · tự-bác "S185=0" · nhường lead-gap · nhường deep | **ĐẠT** | reviewer mtime **22:16** ngay trước PIN 22:17 ✓; (5) tự bác suy-luận CỦA CHÍNH MÌNH + nhường lane H2 = đúng ranh; (9)(10) nhường đúng vai |

---

## 6. FALSIFY-LOG — 17 phép: **12 HELD / 5 BROKE**

| # | phép thử (cố BẺ) | kết |
|---|---|---|
| F1 | "5 vai >25.600" — re-chạy instrument độc-lập, so 140 ô | **HELD** |
| F2 | "impl-be còn 85 B" — 25.600−25.515 | **HELD** |
| F3 | "span ≠ nhãn 4/4" — mở ruột từng file, quét token phiên | **HELD** (4/4) |
| F4 | **"8.679 = đúng 2 span, khớp TỪNG BYTE"** — đo span thật trên đĩa | 🔴 **BROKE** (8.638) |
| F5 | "keep_floor giả định bottom=newest `:177`" — đọc source | **HELD** (verbatim) |
| F6 | "2 span đó là 2 span duy nhất drain được" — dựng lại floorStart | **HELD** |
| F7 | **"chuỗi 7 mốc — liệt đủ"** — grep MỌI `measured_headroom` trên đĩa | 🔴 **BROKE** (8 mốc; sót S154) |
| F8 | "đơn-điệu giảm, chưa đảo chiều" — chèn mốc bỏ sót rồi thử phá | **HELD** (vẫn đơn-điệu) |
| F9 | **T24 "S172/S173 = 85%"** — tra artifact S172 + S173 | 🔴 **BROKE** (S173 = 92%) |
| F10 | refine "0 call-site `-Detail`" — grep toàn repo | **HELD** (README = doc-home ≠ call-site) |
| F11 | **"638 B = Role baseline lead-stale"** — đo span thật | 🔴 **BROKE** (634 B) |
| F12 | **F14@S162 tái phát?** cây agent-memory trượt giữa lượt ⇒ tao báo sai cho cả 2 con | **HELD** (`git diff 93173099 HEAD` **RỖNG**, `git status` rỗng ⇒ đóng băng từ 22:18) |
| F13 | "trio chạy song song ⇒ tao chấm bản cũ" | **HELD** (mtime-chain 22:17→22:30→01:33→tao) |
| F14 | **"eval bịa `pull-cach 4`"** (tao đo ra 5) | **HELD** — `:207` dùng `[datetime]::Now.Date` ⇒ **đồng-hồ**, không phải bịa. Eval **trong sạch** |
| F15 | 🔴 **TỰ NGHI: "tao bịa mốc S154 để bắt lỗi oan?"** | **HELD** — S154 là **stdout máy** `harness-eval-return.md:163`, chính phiên đó tự xác nhận **byte-exact 6/6** `:169`; và **không tiêu-chí nào** loại S154 mà vẫn giữ S163/S169 |
| F16 | "`value_protect` che chở `Role baseline`" (⇒ máy sai khi đề-xuất move) | 🔴 **BROKE** — **0/10** pattern khớp (`gotcha #`,`anti-pattern`,`recurring`,`guard`,`root-cause`,…). Máy **đúng luật của nó**; luật **mù** với span hợp-đồng-vai ⇒ **củng cố E5** |
| F17 | 🔴 **TỰ NGHI: "verdict tổng của tao gộp để che TRƯỢT lẻ?"** | **HELD** — liệt **từng dòng** 44 claim, 4 TRƯỢT nêu **đích danh**, không tuyên "ĐẠT tổng" |

---

## 7. RE-CHẠY SỐ — 5 instrument · **183 ô đối-chứng · 180 khớp byte-exact**

| # | instrument / phép | ô | kết |
|---|---|---|---|
| I1 | `measure-agent-memory.ps1` (exit 0) vs khối JSON trong PIN | **140** | **140/140 EXACT** |
| I2 | `nhip-no-probe.ps1` (exit 0) vs PIN dòng `:422` | 5 vế | 4 char-exact · **1 lệch đồng-hồ** (`pull-cach 4→5`, truy `:207`) — **không tính lỗi vai** |
| I3 | `memory-archive-gate.ps1` DRY (exit 0) | ~20 | 5 dòng over-cap + after-est + strike + **A7 429/429** đều khớp |
| I4 | tự stat 6 file hotload + dựng lại số-học headroom | 8 | **8/8 EXACT** (736.281 · 134.573 · 75.427) |
| I5 | đo tay span/khối trên đĩa (python byte-exact) | 10 | **8 EXACT** (6 khối + `:104`=431 + Runs=8.463) · **2 LỆCH** = `8.679→8.638`, `638→634` |

🔴 Kết: **nấc ĐO không bịa số nào** (mọi số eval cite đều tái dựng được). **2 số lệch duy nhất đều thuộc nấc ĐỀ-XUẤT**, cùng **một cơ-chế** (`+1 B/dòng` do gate giả định CRLF trên file thuần LF), **cùng chiều**, **biên độ nhỏ**, **không lật kết-luận nào**.

---

## 8. NGOÀI-TRỤC / NHƯỜNG (nêu verbatim, KHÔNG tự chấm)

1. **NHƯỜNG `harvest-curator` (H2):** eval §6 chênh "13 file mtime hôm nay vs 6 chứa S185" + refine BÁC (4)(5) — **thao-tác harvest, không chấm lại**.
2. **NHƯỜNG `lead-gap`/`lead-stale` (H24):** T27/T28 hot-feed + target 210.000 = số OWNER; tao chỉ **tái dựng số học**, không phán chính sách.
3. **NGOÀI TRỤC → lead:** `nhip-no-probe.ps1:22` SYNOPSIS khai **4 vế** trong khi code `:264` in **vế 5** (`so-yc`) ⇒ **doc-trong-script stale**, không phải brief sai. Sửa doc = lane tooling.
4. **NGOÀI TRỤC → OWNER (tao KHÔNG đề-xuất đổi):** `archive_gate.value_protect.patterns` (10 mẫu) toàn hướng **bug/lesson**; **0 mẫu** phủ **hợp-đồng-vai / Role baseline**. Vì vậy máy hợp-lệ đề-xuất drain đúng phần **không được phép mất**. Đây là **quyết định CHÍNH SÁCH** (tiền-lệ S173: đổi quy-ước hình-dạng diary = quyền owner).
5. **Cảnh báo Goodhart (nhắc lại từ S173, vẫn sống):** MFE khớp theo "token có mặt BẤT KỲ ĐÂU trong file" ⇒ **file dài thì dễ khớp hơn**; đẩy 92%→100% bằng cách nhồi chữ = **Goodhart thuần**. CẤM "vá" mục MISS bằng nhồi nội dung.

## 9. CONTAINMENT (khai thẳng)

- Vai không Write/Edit lên `agent-memory`; file này nằm ở **run-folder** (run-trace), KHÔNG phải agent-memory.
- Lệnh tao chạy: **4 read-only** (`measure`, `nhip-probe`, `gate` DRY mặc định `-Apply:$false` `:30`, `git`) + đo python read-only. **0 lệnh ghi** vào `.claude/agent-memory`.
- 🔴 Lead soát `git status` **và** `git log` wal-commit sau lượt (Stop-hook auto-commit agent-memory — caveat S173 còn hiệu lực).
- Tao **PHÁN**, lead **single-writer** ghi verdict.

END


