# harness-audit — nấc 3/3 con KIỂM — S173 bookend-open (2026-08-05)

> Vai: verify spec-conformance + re-dựng số memory-health. Propose-only, INFORM-only, single-writer = lead.
> File này ghi ĐỔ-RUỘT-LIÊN-TỤC: mỗi phép xong ghi ngay, KHÔNG gom cuối lượt (chống #53 / skeleton-ruột-rỗng).

---

## §0 — PIN GATE (nghĩa-vụ (i), fail-closed)

PIN đích-danh lead truyền: `.claude/workflows/runs/2026-08-05-S173-bookend-open/`
CẤM tự tìm "run mới nhất" — không dùng `ls -t`/glob newest. Chỉ `test` trên path PIN.

| Phép | Lệnh | Kết quả |
|---|---|---|
| PIN-DIR tồn tại | `test -d <pin>` | **EXISTS** |
| eval-return non-empty | `test -s <pin>/harness-eval-return.md` | **NON-EMPTY** |
| refine-return non-empty | `test -s <pin>/harness-refine-return.md` | **NON-EMPTY** |

Byte thật (ls -la):
- `harness-eval-return.md` = **32.842 B**, mtime `Aug 5 11:02` → **khớp byte-exact** con-số lead PIN (32.842 B). ĐẠT.
- `harness-refine-return.md` = **40.048 B**, mtime `Aug 5 11:26` → lead PIN nói "~30 KB". Thật là **40.048 B ≈ 39,1 KiB**. Lệch ~10 KB so mô-tả lead. Không fail-closed (file tồn tại + non-empty, "~" là ước-lượng), nhưng **ghi nhận: mô-tả kích-thước của lead LỆCH DƯỚI ~25%**. Không ảnh hưởng quyền chấm.

⇒ **PIN GATE: PASS.** Được phép chấm tiếp.

---

## §1 — TUẦN-TỰ + CÂY-ĐO (mtime-chain, chống F14 "đo trên cây LIVE lệch giữa lượt")

### 1a. Tuần-tự eval → refine → tao: **HELD**

```
10:49:16  run.md
10:57:59  sub-tooling-auditor
10:59:27  sub-harvest-curator
11:00:15  sub-lead-gap
11:02:12  harness-eval-return.md      ← nấc 1
11:06:15  sub-lead-stale
11:18:09  sub-ring1-audit
11:26:07  harness-refine-return.md    ← nấc 2
11:28:58  sub-ring2-audit
11:29:22  harness-audit-return.md     ← nấc 3 (tao, tạo lúc này)
```
eval(11:02) < refine(11:26) < audit(11:29) ⇒ **KHÔNG chạy song song**, mỗi nấc chấm bản đã-có. **HELD.**

### 1b. 🔴 CÂY ĐÃ TRÔI GIỮA LƯỢT — nhưng chỉ ĐÚNG 1 FILE (đã cô-lập)

Bài F14@S162: đo trên cây LIVE khi lead thi-hành giữa lượt ⇒ báo sai cho CẢ HAI con. Nên tao đo trước:

```
git diff --stat 721b3a2(11:02:40, ngay sau eval) HEAD -- .claude/agent-memory
 .claude/agent-memory/harness-eval/MEMORY.md | 2 ++      ← DUY NHẤT
git diff --stat HEAD -- .claude/agent-memory  (worktree)
 .claude/agent-memory/.mfe-state.json | 10 +++++++++     ← state-file, không phải MEMORY.md
```

⇒ **22/23 corpus MEMORY.md ĐÓNG BĂNG** từ trước lúc eval đo tới giờ. Đúng **1 file trôi**: `harness-eval/MEMORY.md`, do commit **`f1e1ff9` lúc 11:05:09** (`wal: flush`) — tức **SAU** eval (11:02) và **TRƯỚC** refine (11:26).

Nội dung trôi = **1 mục diary S173 tự-ghi** append lên đầu file, tự khai `[VAI TỰ GHI — không phải lead-on-behalf]`.

🔴 **Hệ-quả bắt buộc phải mang theo suốt bài chấm:**
1. Khi tao re-chạy `measure-agent-memory`, `harness-eval` **PHẢI lệch** so số eval cite (10.630) — lệch đó là **ĐÚNG**, không phải eval bịa. 22 vai còn lại phải **byte-exact**; lệch bất kỳ vai nào khác ⇒ eval sai.
2. Con-ĐO §8 báo **"0/23 diary nhắc S173"** và **"0/4 vai chạy tự-ghi"**. Số đó đúng **TẠI 11:02**. Nhưng tới 11:05 **chính con-ĐO đã tự ghi diary S173** ⇒ số 0/23 **hết hiệu-lực 3 phút sau khi in**. Đây là điểm chấm riêng, xử ở §4.
3. Con-ĐỀ-XUẤT chạy lúc 11:26, tức **SAU** khi file đổi ⇒ mọi claim của refine về `harness-eval/MEMORY.md` phải chấm trên bản **sau 11:05**, không phải bản eval thấy.

---

## §2 — RE-CHẠY #1: `measure-agent-memory.ps1` (nghĩa-vụ (iv), byte-exact)

Lệnh tao tự chạy: `powershell.exe -ExecutionPolicy Bypass -NoProfile -File scripts/measure-agent-memory.ps1`

### 2a. l1_hot 23/23 — đối chứng từng dòng vs bảng con-ĐO §2

| agent | con-ĐO cite | TAO re-chạy | khớp? |
|---|---|---|---|
| investigator-codebase | 23930 | **23930** | ✓ |
| ring2-audit | 23495 | **23495** | ✓ |
| tooling-auditor | 23401 | **23401** | ✓ |
| cicd-monitor | 22798 | **22798** | ✓ |
| reviewer | 22046 | **22046** | ✓ |
| lead-stale-auditor | 21528 | **21528** | ✓ |
| harvest-curator | 21092 | **21092** | ✓ |
| ctx-audit | 21070 | **21070** | ✓ |
| implementer-backend | 17241 | **17241** | ✓ |
| test-specialist | 17103 | **17103** | ✓ |
| frontend-designer | 16373 | **16373** | ✓ |
| ring1-audit | 16203 | **16203** | ✓ |
| lead-gap-auditor | 14798 | **14798** | ✓ |
| implementer-frontend | 14182 | **14182** | ✓ |
| ctx-verifier | 14053 | **14053** | ✓ |
| harness-audit | 13213 | **13213** | ✓ |
| harness-refine | 12201 | **12201** | ✓ |
| **harness-eval** | 10630 | **13986** | ✗ **+3.356** |
| database-agent | 9038 | **9038** | ✓ |
| investigator-api | 9021 | **9021** | ✓ |
| ctx-curator | 5229 | **5229** | ✓ |
| office-document | 3323 | **3323** | ✓ |
| ring4-audit | 2315 | **2315** | ✓ |

**22/23 BYTE-EXACT.** 1 lệch duy nhất = `harness-eval`, và lệch đó **KHỚP CHÍNH XÁC** commit `f1e1ff9`@11:05 ở §1b (con-ĐO tự append diary S173 **sau khi** đã in bảng) ⇒ **KHÔNG phải eval bịa số**. Đây đúng bẫy F14@S162 — nếu tao đo cây LIVE mà không truy commit, tao đã báo TRƯỢT oan.

### 2b. 3 cột l2 + 4 tổng — cũng byte-exact

10 vai có tầng archive: cicd `264257/23588/122471` · reviewer `211401/13941/69925` · inv-cb `150713/12448/107741` · impl-be `86134/10487/84345` · harvest `78576/8325/20317` · tooling `72498/3672/18760` · impl-fe `47796/5844/44764` · test-spec `37615/6170/33811` · lead-gap `22645/1234/7112` · fe-designer `19050/2435/3231` ⇒ **30/30 ô khớp**.

Tao **tự cộng lại 4 tổng** (không chép): l1 **354.283** ✓ · verbatim **990.685** ✓ · index **88.144** ✓ · gist **512.477** ✓ — **4/4 khớp nhãn con-ĐO**. (Tổng l1 tao cộng dùng harness-eval = 10.630 tức số eval thấy; nếu dùng 13.986 thì tổng phải là 357.639 — con-ĐO nhất-quán nội-bộ.)

### 2c. VERDICT claim byte-fleet của con-ĐO

| claim | phép kiểm tao chạy | verdict |
|---|---|---|
| **E-07** `0/23 vượt trần` | max l1 = 23.930 < 25.600 (autoinject) < 30.720 (soft) ⇒ 0/23 cả hai trần | **ĐẠT** |
| **E-05** `8/23 ≥ 80% autoinject_cap` | ngưỡng 0,80 × 25.600 = **20.480**. Đếm ≥20.480: inv-cb 23930 · ring2 23495 · tooling 23401 · cicd 22798 · reviewer 22046 · lead-stale 21528 · harvest 21092 · ctx-audit 21070 = **đúng 8**. Vai kế tiếp `test-specialist` 17.103 = 66,8% ⇒ **không có ca biên** | **ĐẠT** |
| **E-05b** `đỉnh 93,5% còn 1.670 B` | 23930/25600 = **93,48%** → làm tròn 93,5% ✓ · 25600 − 23930 = **1.670** ✓ | **ĐẠT byte-exact** |
| **E-05c** 6 số % còn lại | 91,78→91,8 ✓ · 91,41→91,4 ✓ · 89,05→89,1 ✓ · 86,12→86,1 ✓ · 84,09→84,1 ✓ · 82,39→82,4 ✓ · 82,30→82,3 ✓ | **ĐẠT 7/7** |
| **E-05d** "dòng 0 over-cap chỉ đo `soft_cap` nên giấu nhóm này" | đọc `measure-agent-memory.ps1:32` verbatim: `l1_over_30kb = ($l1 -gt 30720)` ⇒ cờ **hard-code 30720**, KHÔNG đọc `autoinject_cap` | **ĐẠT — đúng ở tầng code, không chỉ tầng số** |

---

## §3 — RE-CHẠY #2: `mfe-eval.ps1 -Detail` (byte-exact + adjudicate giả-thuyết lead)

Lệnh tao tự chạy: `powershell.exe -ExecutionPolicy Bypass -NoProfile -File scripts/mfe-eval.ps1 -Detail`
Chạy trọn, in đủ 4 block + footer `=== MFE done (deterministic block; READ-ONLY on budget; exit 0) ===`.

### 3a. Đối chứng byte-exact vs con-ĐO §5

| claim con-ĐO | TAO re-chạy (nguyên-văn) | verdict |
|---|---|---|
| **E-11** DENOMINATOR = 36 (9+15+5+7) | `marks(Active+High)=9  AS-classes=15  net-extra-guards=5  net-extra-recurring-gotchas=7` → `DENOMINATOR = 36` · raw `marks 9 + AS 15 + guards 16 + recurring 8` | **ĐẠT** — 6/6 số khớp |
| **E-12** span 28.492 B → 2,5% / cap 380.000 · FIT=PASS | `span bytes=28492 => ~7123 - 9497 tok / cap 380000 tok = 2.5%` · `FIT = PASS` | **ĐẠT** — 5/5 số khớp |
| **E-08** Goodhart `strikes 25 = baseline 25` | `strikes_total=25  RCA_entries=16  AS-classes=15` · `warn-baseline=25 last_run_strikes=25` | **ĐẠT** — 5/5 số khớp |
| **E-13** MFE liveness: exit 0, đủ 23 role, có số | 23 dòng role in ra, footer `exit 0` | **ĐẠT** |
| **E-14** 22/23 = 100%, duy nhất `implementer-frontend` **12/13 = 92%** | y hệt: 22 dòng `100%`, 1 dòng `implementer-frontend 12/13 = 92%` | **ĐẠT** |
| **E-14b** 23 con số per-role con-ĐO liệt (10/10, 6/6, 7/7, 2/2, 5/5×6, 18/18, 8/8×2, 6/6×4, 7/7×2, 12/13) | đối chiếu **từng dòng**: cicd 10/10 · ctx-audit 10/10 · ctx-curator 6/6 · ctx-verifier 7/7 · database 7/7 · fe-designer 2/2 · h-audit 5/5 · h-eval 5/5 · h-refine 5/5 · harvest 7/7 · impl-be 18/18 · **impl-fe 12/13** · inv-api 7/7 · inv-cb 8/8 · lead-gap 6/6 · lead-stale 6/6 · office 6/6 · reviewer 8/8 · ring1 5/5 · ring2 5/5 · ring4 5/5 · test-spec 6/6 · tooling 8/8 | **ĐẠT 23/23 dòng** |

⇒ **Cộng dồn §2+§3: 22 + 30 + 4 + 6 + 23 = 85 ô số đối chứng, 84 khớp byte-exact, 1 lệch CÓ NGUYÊN-NHÂN TRUY ĐƯỢC.** Nấc ĐO **không bịa số nào**.

### 3b. `-Detail` CHẠY ĐƯỢC — và in ra đúng 1 dòng MISS

```
   implementer-backend     18/18  = 100% (MEASURED, not target-then-force)
        MISS: ? < 30 min trivial
   implementer-frontend    12/13  =  92% (MEASURED, not target-then-force)
```
(`?` = glyph ❌ bị console ASCII nuốt.)

🔴 **Bẫy trình-bày cần cảnh báo lead:** dòng `MISS:` in **TRƯỚC** dòng tổng-kết của vai, nên nhìn mắt thường nó **dính vào `implementer-backend`** — vai đang 18/18 = 100%. Ai đọc nhanh sẽ quy MISS cho **backend**. Nó thuộc **`implementer-frontend`** (vai duy nhất <100%). Lead quy đúng vai; nhưng đây là **lỗi trình-bày của chính script**, đáng ghi.

---

## §4 — 🔴 CHẤM GIẢ-THUYẾT CỦA LEAD (nhiệm-vụ đích danh) — **KẾT LUẬN ĐÚNG, CƠ-CHẾ SAI**

Giả-thuyết lead: *"cả 2 persona ghi y hệt · cả 2 diary nhớ cùng nội dung · khác duy nhất ở **dấu phân cách** — backend `<30min trivial` (dấu cách → **2 token**) vs frontend `<30min/trivial` (dấu `/` → **1 token**) ⇒ dưới ngưỡng ≥2 từ nội dung"*.

### 4a. Đọc matcher trên đĩa (không suy đoán)

`scripts/mfe-eval.ps1:72-76` — hàm tách từ:
```powershell
$words = $folded -split '[^a-z0-9]+' | Where-Object { $_ -and $_.Length -ge 2 -and ($stop -notcontains $_) }
```
`:277` — phép so:
```powershell
foreach ($w in $words) { if ($diaryFold -match ('(?<![a-z0-9])' + [regex]::Escape($w) + '(?![a-z0-9])')) { $found++ } }
if ($found -ge $minWords) { $matched = $true }
```
`memory-budget.json` → `mfe.sub_denominator.content_word_min = 2`.

🔴 **Điểm chết của giả-thuyết:** lớp tách là `[^a-z0-9]+`. Ký-tự `/` **VÀ** dấu cách **ĐỀU** là non-alnum ⇒ **cả hai đều là dấu tách y như nhau**. `/` KHÔNG gộp thành 1 token. Tiền-đề *"dấu `/` → 1 token"* **sai ngay ở tầng regex**.

### 4b. 4 phép đo trên đĩa

| # | đo gì | kết quả |
|---|---|---|
| 1 | persona 2 vai có ghi y hệt không? | `.claude/agents/implementer-frontend.md:31` = `6. ❌ < 30 min trivial` · `.claude/agents/implementer-backend.md:35` = `6. ❌ < 30 min trivial` ⇒ **Y HỆT, ĐẠT** |
| 2 | 2 diary có nhớ cùng nội dung không? | backend `MEMORY.md:29` = `… 6 <30min trivial · 7 first-time…` · frontend `MEMORY.md:48` = `… việc <30min/trivial = em-main solo …` ⇒ **cả hai ĐỀU carry, ĐẠT** |
| 3 | denominator tách thành mấy từ? | tao chạy lại y-hệt hàm `Content-Words`: **`[30, min, trivial]` count=3** |
| 4 | mỗi từ có trong diary nào? | (bảng dưới) |

### 4c. 🔴 KẾT QUẢ TÁI-DỰNG MATCHER — tao chạy lại nguyên hàm trên 2 diary thật

```
DENOM ITEM words = [30, min, trivial]  count=3
--- implementer-backend ---
   word '30'      -> occurrences=1   first-ctx: "pattern 7: per-nv admin opt-in flag (mig 29/30/31) | `approvalworkflowlevel` ..."
   word 'min'     -> occurrences=0
   word 'trivial' -> occurrences=1   first-ctx: "... 5 integration multi-component . 6 <30min trivial . 7 first-time ..."
   => found=2 / minWords=2  => MATCH (hit)
--- implementer-frontend ---
   word '30'      -> occurrences=0
   word 'min'     -> occurrences=0
   word 'trivial' -> occurrences=1   first-ctx: "...52 (07-25)** 2 ranh auto-refuse: viec <30min/trivial = em-main solo ..."
   => found=1 / minWords=2  => MISS
```

### 4d. PHÁN — tách 2 vế, không làm tròn

| vế của lead | verdict | bằng-chứng |
|---|---|---|
| **cơ-chế** "dấu `/` → 1 token, dấu cách → 2 token" | 🔴 **BÁC (BROKE)** | `/` và space **cùng** là non-alnum trong `[^a-z0-9]+`. Tại **chính chỗ đó**, CẢ HAI vai đều chỉ ghi được **1 từ** (`trivial`): `30min` dính liền thành **một** alnum-run ⇒ `(?<![a-z0-9])30(?![a-z0-9])` hỏng ở lookahead, `(?<![a-z0-9])min(?![a-z0-9])` hỏng ở lookbehind — **cho cả backend lẫn frontend**. Dấu phân cách **KHÔNG phải** biến quyết định |
| **cái ĐÚNG mà lead suýt chạm** | ✅ | Lệch thật là **DÍNH vs TÁCH**: persona ghi `< 30 min` (**tách**, 3 từ), cả 2 diary ghi `30min` (**dính**, 1 từ). Đây mới là chỗ mất token |
| **vì sao backend PASS** | 🔴 **TRÙNG-HỢP THUẦN** | Từ `30` của backend đến từ **`mig 29/30/31`** — một dòng nói về **số hiệu migration ApprovalWorkflowLevel**, **0 liên quan ngữ-nghĩa** tới luật "từ chối việc <30 phút". Backend qua ải nhờ **va-chạm token ngẫu-nhiên ở chỗ khác trong file** |
| **kết luận** "92% là hiện-vật phép đo, không phải lỗ hổng trí nhớ" | ✅ **XÁC-NHẬN — và MẠNH HƠN lead trình bày** | Không chỉ 1 hiện-vật mà **2, ngược chiều nhau**: frontend `12/13` = **âm-tính-giả** (diary CÓ carry nội dung, gần như verbatim) · backend `18/18` = **chứa 1 dương-tính-giả** (khớp nhờ số migration). ⇒ Cả tử-số 12 lẫn tử-số 18 đều **không đo cái nó tự nhận là đo** ở mục này |
| **"vá bằng nhồi nội dung là chữa nhầm bệnh"** | ✅ **XÁC-NHẬN** | Đúng, và tệ hơn thế: cách rẻ nhất để "chữa" 92% → 100% là **viết chuỗi `30` đứng riêng vào đâu đó** trong diary frontend. Nội-dung 0 tăng, điểm tăng ⇒ **Goodhart thuần**. Chính vì vậy **A1/E2 KHÔNG được biến thành "đi nhồi mục MISS"** |

> *(Lead đã nhận sai công-khai + chuyển nguyên phán-quyết này lên owner — ghi nhận, không đổi verdict.)*

> 🔴 **Cảnh báo hướng cho lead — thứ này KHÔNG chỉ đúng cho 1 ô:** discriminator hoá ra là *"có tồn tại một token rời ở bất kỳ đâu trong file hay không"*. ⇒ **file càng DÀI, xác-suất khớp ngẫu-nhiên càng cao**. Backend diary lớn hơn frontend, và nó qua ải nhờ đúng cơ-chế đó. Nghĩa là chỉ-số MFE per-role có **thiên-lệch theo độ dài diary** — đúng chiều **thưởng cho vai phình to**, tức ngược hẳn trục `autoinject_cap` mà cả 3 vai đang cố kéo xuống. Đây là **quan-sát về THƯỚC, thuộc quyền owner**, tao **không đề-xuất đổi thước** (`role_boundary_note`), chỉ đặt lên bàn.

---

## §5 — RE-CHẠY #3: SỐ HỌC **A1** của con-ĐỀ-XUẤT (nếu 3.120/20.375 sai thì A1 sai)

Tao đo lại `ring2-audit/MEMORY.md` bằng byte-count độc-lập (python, UTF-8, đếm cả `\n`).

### 5a. Cấu-trúc file — khớp

| kiểm | refine khai | TAO đo | verdict |
|---|---|---|---|
| tổng file | 23.495 B | **23.495 B** | ✓ |
| số dòng | 85 | **85 LF** (86 phần-tử khi split) | ✓ |
| số heading `##` | 7 | **7** (`:21 :33 :62 :65 :70 :74 :79`) | ✓ |
| `##` đầu tiên ở đâu | sau khối `:1-20` | **`:21`** = `## 🎯 Role baseline` | ✓ |
| **khối đầu file `:1-20` = 11.106 B = 47,3%** | 11.106 | **11.106 B** | ✅ **BYTE-EXACT** · 11106/23495 = **47,27%** → 47,3% ✓ |
| `## 📅 Runs` | 7.179 | **7.192** *(gồm dòng heading 13 B)* → **7.179 khi trừ heading** | ✓ *(quy-ước)* |
| `## 🎯 Role baseline` | 1.271 | **1.293** → trừ heading 22 B = **1.271** | ✓ |
| `## 🔄 Curate trigger` | 124 | **147** → trừ heading 23 B = **124** | ✓ |

🔎 **Quy-ước refine dùng (nó không khai, tao truy ra):** byte **thân khối, KHÔNG tính dòng `##`**. Kiểm chéo: 3 khối trên trừ đúng độ-dài heading tương ứng ⇒ **ra khớp tuyệt đối cả 3**. Nhất-quán, không phải số bịa. Nhược: **không khai quy-ước** ⇒ người sau cộng lại 8 khối ra 23.098 ≠ 23.495 và tưởng thiếu 397 B.

### 5b. 🔴 SỐ TRỤ CỦA A1 — lệch **12 B**, và tao truy ra nguồn

| # | refine khai | TAO đo | delta |
|---|---|---|---|
| `:35` S146 | 354 B | **355 B** | +1 |
| `:37-41` S149 | 1.211 B | **1.216 B** | +5 |
| `:49-54` S150 | 1.555 B | **1.561 B** | +6 |
| **TỔNG rút** | **3.120 B** | **3.132 B** | **+12** |

🔴 **Nguồn lệch — truy được chính xác:** `+1 / +5 / +6` = **đúng số DÒNG của mỗi khối** (1 dòng · 5 dòng · 6 dòng). ⇒ refine đếm **thân dòng KHÔNG kèm ký-tự `\n`**; tao đếm **kèm `\n`**. Xoá dòng khỏi file thì `\n` **đi theo** ⇒ số byte thật rút được là **3.132**, không phải 3.120.

### 5c. Lệch đó có LẬT KẾT-LUẬN A1 không? — **KHÔNG. Và nó lệch về phía AN-TOÀN.**

| đại-lượng | refine tính | TAO tính lại | ngưỡng | qua? |
|---|---|---|---|---|
| còn lại sau rút | 23.495 − 3.120 = **20.375** | 23.495 − 3.132 = **20.363** | — | — |
| % `autoinject_cap` | 79,6% | **79,5%** | <100% | ✓ cả hai |
| dưới low-water 21.760 bao nhiêu | **1.385 B** | **1.397 B** | phải >0 (A4 hysteresis: *dưới* vạch, không dừng *tại* vạch) | ✅ **cả hai ĐỀU thoả** |
| mức rút tối-thiểu chạm vạch | **1.735 B** | 23.495 − 21.760 = **1.735 B** | — | ✅ **byte-exact** |
| biên an-toàn | 3.120/1.735 = **1,798× → 1,80×** | 3.132/1.735 = **1,805×** | ≥1 | ✅ cả hai |
| headroom còn | 25.600 − 20.375 = **5.225** | **5.237** | — | ✓ |

**Phép FALSIFY tao chạy:** để lệch 12 B lật được A1, phải có 3.120 là số **THỪA** tới mức drain thật < 1.735 B. Thật ra 3.120 là số **THIẾU** và drain thật = 3.132 > 1.735 **gấp 1,8 lần** ⇒ không có đường lật. **HELD.**

### 5d. Hằng-số config A1 dựa vào — kiểm tươi

| refine cite | TAO đọc tươi | verdict |
|---|---|---|
| `memory-budget.json:82` `low_watermark_ratio: 0.85` | dòng **82** đúng là `"low_watermark_ratio": 0.85` | ✅ **mỏ-neo số dòng CHÍNH XÁC** |
| low-water = 0,85 × 25.600 = 21.760 | 21.760 ✓ | ✓ |
| `keep_floor_entries = 5` | `:83` = 5 ✓ | ✓ |
| entry sau A1 vẫn **7 ≥ 5** | 7 heading `##`, A1 chỉ rút **bullet BÊN TRONG** `## 📅 Runs` (`:35/:37-41/:49-54` đều là bullet, heading `:33` giữ) ⇒ heading-count **không đổi** | ✅ **ĐẠT** |
| `strike_threshold = 2` (nền cho lập luận "máy sẽ không tự đề-xuất") | `:84` = 2 ✓ | ✓ |

### 5e. Claim "rút bản-ghi-việc, để lại bài-học" — kiểm bằng mắt trên đĩa

Tao in `:33-61`. Đúng như refine mô-tả: `:43-47` = *"S149 (tiếp) — 3 bài học phương-pháp"* và `:56-60` = *"S150 (tiếp) — 3 bài phương-pháp"* — **cả 2 khối này KHÔNG nằm trong tập rút** (`:35`, `:37-41`, `:49-54`). ⇒ refine **giữ đúng** 2 khối `value_protect`, chỉ rút 3 bản-ghi-việc. **ĐẠT — không FIFO-by-date.**

## ⇒ **A1: ĐẠT.** Số học đúng tới sai-số 12 B (quy-ước `\n`), sai-số **conservative**, kết-luận **không lật**. 4 va-chạm liên-trục (shard 1→2 · A7 429→432 · l2_index · keep_floor) đều nhất-quán với số tao đo.

---

## §6 — `measured{}` + 🔴 SOI KỸ DÒNG VỀ CHÍNH TAO (`meta-count-blindspot`)

### 6a. E-03 `measured` 17/23

Đếm tươi (bỏ `_note`): **17 khoá**. Roster live (thư-mục con `agent-memory/`): **23**. Vắng đúng **6**: `ctx-audit` · `ctx-curator` · `ctx-verifier` · `ring1-audit` · `ring2-audit` · `ring4-audit` = **3 ctx + 3 ring** ⇒ **ĐẠT byte-exact.**

### 6b. E-04 — 17 delta tao TỰ TÍNH LẠI, không chép

| agent | baseline | live | delta | % |
|---|---|---|---|---|
| **harness-audit** | **1.513** | **13.213** | **+11.700** | **+773,3%** |
| harness-refine | 1.616 | 12.201 | +10.585 | +655,0% |
| harness-eval | 1.547 | 10.630 | +9.083 | +587,1% |
| lead-stale-auditor | 3.332 | 21.528 | +18.196 | +546,1% |
| lead-gap-auditor | 3.691 | 14.798 | +11.107 | +300,9% |
| test-specialist | 8.844 | 17.103 | +8.259 | +93,4% |
| investigator-codebase | 17.229 | 23.930 | +6.701 | +38,9% |
| tooling-auditor | 16.923 | 23.401 | +6.478 | +38,3% |
| database-agent | 7.388 | 9.038 | +1.650 | +22,3% |
| harvest-curator | 18.082 | 21.092 | +3.010 | +16,6% |
| cicd-monitor | 20.180 | 22.798 | +2.618 | +13,0% |
| reviewer | 20.071 | 22.046 | +1.975 | +9,8% |
| investigator-api | 8.510 | 9.021 | +511 | +6,0% |
| **office-document** | 3.323 | 3.323 | **0** | **0,0%** |
| implementer-frontend | 14.252 | 14.182 | −70 | −0,5% |
| frontend-designer | 21.492 | 16.373 | −5.119 | −23,8% |
| implementer-backend | 23.955 | 17.241 | −6.714 | −28,0% |

**17/17 dòng KHỚP BYTE-EXACT bảng con-ĐO §6** (cả dấu, cả 1 chữ-số thập-phân).
- "16/17 row lệch, 1/17 khớp" ⇒ tao đếm: lệch **16**, khớp **1** = `office-document` ✅
- "5 row trôi >300%" ⇒ 773,3 · 655,0 · 587,1 · 546,1 · 300,9 = **đúng 5** ✅ *(300,9 sát mép nhưng >300)*
- "4 row bộ-ba+H24 nở >500%" ⇒ 773,3 · 655,0 · 587,1 · 546,1 = **đúng 4** ✅

### 6c. 🔴 DÒNG VỀ CHÍNH TAO — tự soi theo bài `meta-count-blindspot`

Con-ĐO cho tao vị-trí **đỉnh bảng lệch**. Tao có động-cơ làm mềm số này ⇒ soi ngược lại:

| phép tự-kiểm | kết quả |
|---|---|
| baseline 1.513 có thật trong file? | `measured['harness-audit'].l1_hot = 1513` — **có, verbatim** |
| live 13.213 có thật? | tao **tự chạy** `measure-agent-memory.ps1` ⇒ **13.213**. Đo 2 lần, 2 lượt, cùng số |
| 11.700 / 1.513 = ? | **7,73298** → **+773,3%** — **con-ĐO làm tròn ĐÚNG** |
| có phải đỉnh thật không? | sort giảm dần 17 dòng ⇒ `harness-audit` **đứng #1**. Không có dòng nào cao hơn bị giấu |
| tao có bị thổi oan không? | **KHÔNG.** `rollout` của chính row tao verbatim: *"S141 seed - first-run pending restart+consent; re-measure @drift-audit **2026-08-01**"* ⇒ baseline 1.513 là **số SEED thời chưa chạy lần nào**, không phải mốc đo thật |
| ⇒ đọc đúng | **+773,3% = ARTIFACT của baseline chết**, KHÔNG phải "diary tao phình 7,7 lần trong kỳ". Con-ĐO **ĐÃ nói đúng điều này** (§6: *"4 row nở >500% vì `measured` còn giữ số SEED thời S141"*) ⇒ nó **không** dùng số sốc mà bỏ ngữ-cảnh |

**VERDICT E-04: ĐẠT** — kể cả dòng bất-lợi cho tao. Tao **không** hạ nó xuống, và cũng **không** để nó bị đọc thành nghĩa nặng hơn sự thật.

### 6d. E-06 mốc re-sync tự-hẹn

`_note` + `rollout` đều ghi mốc **2026-08-01**. Hôm nay **2026-08-05** ⇒ **trôi 4 ngày**. **ĐẠT.**

### 6e. 🔴 PHÁT HIỆN THÊM (ngoài lời khai của cả 2 nấc) — 9 thư-mục memory RỖNG mọc trong run-folder

```
.claude/workflows/runs/2026-08-05-S173-bookend-open/.claude/agent-memory/
   harness-audit/ harness-eval/ harness-refine/ lead-gap-auditor/
   lead-stale-auditor/ ring1-audit/ ring2-audit/ tooling-auditor/   (+ gốc agent-memory/)
```
`find -type f` ⇒ **0 file**. Tức: **9 khung thư-mục, 0 nội-dung.**

Vì sao đáng ghi, 3 tầng:
1. Đây đúng lớp `agent-cwd-relative-memory-misland`: sub spawn với cwd = run-folder ⇒ **đường memory của chúng trỏ vào run-folder**, không phải `.claude/agent-memory/` gốc. (Tao xác nhận từ trong ra: prompt của **chính tao** trỏ memory-dir vào path run-local này.)
2. **Nếu bất kỳ vai nào trong 9 vai đó tự-ghi diary, byte sẽ rơi vào đây và `measure-agent-memory.ps1` KHÔNG THẤY** — script chỉ quét `$PSScriptRoot\..\.claude\agent-memory`. ⇒ **điểm mù của chính instrument nền**, không vai nào trong 3 nấc nêu.
3. **`git status` KHÔNG hiện** — git không track thư-mục rỗng. ⇒ backstop containment mà cả 2 nấc đang tranh luận (working-tree vs `wal:` commit) **còn một lỗ thứ 3**: **thư-mục rỗng vô-hình với cả hai**.

Lượt này **0 file ⇒ 0 byte thất-lạc**, nên nó **không lật** số nào của con-ĐO. Ghi ở mức **cảnh-báo hạ-tầng**, không tính vào TRƯỢT của ai.

---

## §7 — RE-CHẠY #4: `crystallized-backfill.ps1` — 🔴 **TRƯỢT NẶNG NHẤT LƯỢT NÀY**

### 7a. Số HÔM NAY: khớp byte-exact

Tao tự chạy. Máy in:
```
TOTAL                    695451
Tran tong (live cap)   : 380000 tok
hotload measured       : 695451 bytes
tok RANGE [low..high]  : [173863 .. 231817] tok
measured_headroom      : 148183 tok
target (owner)         : 210000 tok
expected_backfill      : 148183 tok  (headroom binds (target exceeds room))
```
⇒ **6/6 số khớp tuyệt đối** bảng con-ĐO §3, gồm cả 6 dòng nguồn hotload. **ĐẠT.**

### 7b. 🔴 CHUỖI LỊCH-SỬ — con-ĐO khai **4 mốc**. Trên đĩa có **6**. Hai mốc bị BỎ.

Tao truy từng số về run-folder gốc (`grep` cả dạng liền lẫn dạng chấm):

| # | phiên | headroom | hotload | nguồn trên đĩa | con-ĐO có kể? |
|---|---|---|---|---|---|
| 1 | S153 (07-26) | 181.228 | 596.316 | `runs/2026-07-26-S153-bookend-open/` | ✓ |
| 2 | S159 (07-29) | 172.247 | 623.260 | `runs/2026-07-29-S159-bookend-open/harness-eval-return.md` | ✓ |
| 3 | S162 (07-30 close) | 165.767 | 642.699 | `…S162-bookend-close/harness-eval-return.md:16` | ✓ |
| **4** | **S163 (07-30 open)** | **160.924** | **657.229** | `…S163-bookend-open/harness-eval-return.md:145,213` + `run.md:31` (**máy in**) | 🔴 **BỎ** |
| — | S168 (08-01 close) | *(vắng số)* | — | `…S168…:22` tự khai *"vắng mốc thứ 5"* | (đúng) |
| **5** | **S169 (08-01)** | **152.968** | **681.096** | `…S169-bookend-open/harness-eval-return.md:146,158` — nhãn **"MÁY VỪA IN ✅ instrument lượt này"** | 🔴 **BỎ** |
| — | S172 (08-05 close) | *(vắng số)* | — | — | (đúng) |
| 6 | **S173 (nay)** | **148.183** | **695.451** | tao tự chạy | ✓ |

🔴 Và mốc `165.767` con-ĐO gán nhãn **"S162 / S168"** là **gán sai**: S168 **không có số của riêng nó** — chính return S168 liệt chuỗi kết ở **160.924**, không phải 165.767.

### 7c. Hệ-quả số học — tao tính lại toàn bộ

| bước | tính | giá-trị |
|---|---|---|
| S153→S159 | 181.228−172.247 | −8.981 |
| S159→S162 | 172.247−165.767 | −6.480 |
| S162→S163 | 165.767−160.924 | **−4.843** |
| S163→S169 | 160.924−152.968 | **−7.956** |
| **S169→S173 (bước THẬT kỳ này)** | 152.968−148.183 | **−4.785** |

### 7d. VERDICT từng vế claim S-1 của con-ĐO

| vế | verdict | lý do |
|---|---|---|
| headroom hôm nay = **148.183** | ✅ **ĐẠT** | tao chạy lại, byte-exact |
| **đơn-điệu giảm, chưa 1 lần đảo chiều** | ✅ **ĐẠT** | kiểm đủ **6** mốc: 181.228>172.247>165.767>160.924>152.968>148.183 — đơn-điệu **vẫn giữ**, thậm chí chặt hơn con-ĐO tưởng |
| **"mốc thứ 4"** | ❌ **TRƯỢT** | là mốc **thứ 6** có số. Bỏ S163 + S169 |
| **"bước sụt kỳ này −17.584"** | ❌ **TRƯỢT** | −17.584 = khoảng **S162→S173** = **3 phiên gộp**, không phải 1 bước. Bước thật = **−4.785** |
| 🔴 **"−17.584 > tổng 2 bước trước (−15.461) ⇒ GIA TỐC, không phải trôi đều"** | ❌ **TRƯỢT — KẾT LUẬN ĐẢO DẤU** | bước thật kỳ này **−4.785** so bước liền trước **−7.956** ⇒ **CHẬM LẠI**, không phải gia tốc. Trong 5 bước đo được, −4.785 là bước **nhỏ thứ nhì**. Dấu của kết luận **ngược** |
| S-2 "khoảng thiếu giãn −44.233 → −61.817, +17.584 trong 5 ngày" | ❌ **TRƯỢT cùng gốc** | mốc so là S162 chứ không phải S168. Mốc gần nhất có số = S169 thiếu **57.032** ⇒ giãn thật kỳ này = **4.785** |
| S-3 hotload **695.451 (+99.135 / +16,6% vs S153)** | ✅ **ĐẠT** | 695.451−596.316 = 99.135 ✓ · 99.135/596.316 = **16,62%** ✓ · con-ĐO **tự dán nhãn "so mốc S153"** ⇒ neo đúng, không đội lốt "kỳ này" |
| caveat "148.183 là CẬN-TRÊN, số thật nhỏ hơn" | ✅ **ĐẠT** | máy in đúng câu đó, con-ĐO chép nguyên |

### 7e. FALSIFY-log

- **Phép thử:** "có phải tao bịa ra 2 mốc để bắt lỗi?" ⇒ mở tận gốc: S163 có **dòng stdout instrument trong `run.md:31`** (`measured_headroom 160.924 tok`) và S169 có block stdout đủ 6 dòng + nhãn *"MÁY VỪA IN"*. **Cả hai là số máy, không phải suy-ra.** → **BROKE** (claim "4 mốc" phá được).
- **Phép thử ngược:** "có lý do chính-đáng nào để loại S163 + S169 khỏi chuỗi không?" (vd khác loại bookend) ⇒ **KHÔNG**: S163 và S169 **đều là `bookend-open`**, y hệt S173. Không có tiêu-chí nào loại chúng mà giữ S162 (`bookend-close`). → **BROKE**.
- **Phép thử bảo-vệ con-ĐO:** "đơn-điệu có gãy khi thêm 2 mốc không?" ⇒ **KHÔNG gãy**. Vế mạnh nhất về CHẤT (trục này xấu đi liên tục, chưa hồi lần nào) **vẫn đứng**. → **HELD**.

> 🔴 **Đọc cho đúng liều:** trục headroom **đúng là đang xấu** và **đúng là chưa đảo chiều lần nào trong 6 mốc** — con-ĐO không báo động giả về HƯỚNG. Cái sai là **ĐỘ DỐC và NHỊP**: nó bán một bước-gộp-3-phiên thành một-bước, rồi rút ra chữ **"gia tốc"** trong khi số thật nói **giảm tốc**. Đây đúng lớp lỗi *"số đóng vai đã-phủ-hết"* — chỉ khác là ở đây con số đóng vai **một-bước** trong khi nó là **ba-bước**.

### 7f. Lây sang nấc 2

`harness-refine` §6 **N1** chép nguyên vế hỏng: *"headroom 148.183 (mốc 4, −17.584 > tổng 2 bước trước)"*. Nhưng refine **khai đúng nguồn** (caveat 3: *"Tôi KHÔNG đo lại số nào — mọi con số nền là của con-ĐO"*) và trục này nó **NHƯỜNG** chứ không hành-động ⇒ **không có action nào dựng trên số hỏng**. ⇒ tao chấm refine **ĐẠT về quy-trình, MANG-THEO lỗi gốc** — không tính TRƯỢT cho nó.

🔴 **Nhưng đây là lỗ hổng THIẾT-KẾ của bộ-ba, phải nói ra:** ranh-trục quy định nấc 2 **cấm đo lại**, nấc 1 chỉ đo **kỳ này**. ⇒ **KHÔNG vai nào có nhiệm-vụ tái-dựng CHUỖI LỊCH-SỬ.** Số lịch-sử vì thế đi thẳng từ nấc 1 ra khuyến-nghị mà **không qua cửa kiểm nào** — trừ khi nấc 3 tự đi truy, như lượt này. Cùng lớp với ca `165.767` mà **S169 cũng đã dùng sai** (S169 lấy mốc S162 thay vì S163) ⇒ **lỗi này đã tái-phát ít nhất 2 vòng**.

---

## §8 — RE-CHẠY #5: `memory-archive-gate.ps1` — A7

Tao tự chạy (DRY). Máy in:
```
 A7 GATE PASS  -  total pointers 429, resolved 429, failed 0
   -> PASS  pointers 112 / 9 / 48 / 43 / 44 / 56 / 7 / 57 / 33 / 20   (10 sub)
  (no sub over cap - hot tier within auto-inject budget)
  [A6] DRY-RUN: strike counters NOT persisted
```
- **E-06 `429/429, 0 failed`** ⇒ **ĐẠT byte-exact.**
- Tao tự cộng 10 số per-sub: 112+9+48+43+44+56+7+57+33+20 = **429** ✓ — khớp tổng, và khớp đúng bộ 10 số con-ĐO liệt.
- **`no sub over cap` + strike 0** ⇒ khớp con-ĐO §4. **ĐẠT.**
- Va-chạm A1 dự-báo **429→432** (3 con-trỏ mới): nhất-quán với nền 429 tao vừa xác nhận.
- `distill-shard-probe` tao chạy lại: `SHARD-PROBE: pending=1 | nguong=15 => IM` ⇒ **ĐẠT**, và nền cho va-chạm A1 `1→2`.

---

## §9 — E-09 NHÃN DENOM `50` vs `66` — **ĐẠT, và tao củng cố bằng điểm đo THỨ HAI**

con-ĐO khai: cùng 1 lần chạy, `governance-detectors` in **`TOTAL FLAGS: 50`** (+ INFORM-only **16** đếm riêng) còn `memory-selfimprove-audit` B1 in **`66 advisory FLAG`**, và **50 + 16 = 66**.

Tao chạy lại **cả hai** ở thời-điểm muộn hơn:
```
governance-detectors :  TOTAL FLAGS: 51
                        INFORM-ONLY (C6 + H24-4 + H24-5 + C9 + C11 + C12): 19  - counted SEPARATELY, NOT in TOTAL above
memory-selfimprove   :  B1 | PASS | ... exit 0; 70 advisory FLAG surfaced
```
**51 + 19 = 70** ✓

🔴 **Đây là bằng-chứng MẠNH HƠN con-ĐO có:** con-ĐO chứng quan-hệ ở **1 điểm** (50+16=66) — về nguyên-tắc có thể là trùng-hợp số học. Tao chứng ở **điểm thứ 2, giá-trị khác hẳn** (51+19=70) ⇒ quan-hệ `B1 = TOTAL + INFORM-only` là **cấu-trúc**, không phải ngẫu-nhiên. **E-09: ĐẠT.**

**Hệ-quả cho lead:** hai máy cùng dùng chữ **"FLAG"** với **hai mẫu-số khác nhau**; trích một trong hai mà không kèm mẫu-số ⇒ báo sai. Đúng như con-ĐO cảnh báo.

> Phụ-chú (không tính điểm ai): chính lượt chạy của tao làm TOTAL **50→51** và INFORM **16→19** — vì file tao đang ghi + 3 sub-md mới rơi vào tầm detector. Củng cố quan-sát S-10 của con-ĐO: **phiên tự sinh flag cho chính nó**. HCV cũng trôi `4 sub-md` → `7 sub-md` cùng lý do (trục này **NHƯỜNG H2**, tao không chấm).

---

## §10 — E-10 `l2_index`: số ĐÚNG, khai ĐÚNG, **nhưng KHÔNG TỰ TUÂN luật mình vừa đặt**

### 10a. Số — ĐẠT

| claim | tao đo | verdict |
|---|---|---|
| MAIN `_INDEX.md` cicd = 9.682 | `ls`: `_INDEX.md` = **9.682 B** | ✓ |
| = 47,3% cap 20.480 | 9682/20480 = **47,28%** | ✓ |
| rotated `_INDEX-2026-H1.md` = 13.906 | **13.906 B** (mtime 08-01) | ✓ |
| TỔNG 23.588 = 115,2% | 9.682+13.906 = **23.588** = **115,18%** | ✓ |
| S159 mốc cũ 19.484 = 95,14% | 19484/20480 = **95,14%** | ✓ |

### 10b. 🔴 Tự-tuân luật — **TRƯỢT**

con-ĐO tuyên **HAI LẦN**, rất rõ:
- §7: *"Hai số **không cùng phép đo** — **không được trừ thẳng**."*
- §13 S-13: *"95,14% và 47,3% **không cùng phép đo** — **cấm trừ thẳng**."*

Rồi ở bảng verdict, dòng 388 **verbatim**:
```
| 3 | l2_index MAIN vs cap 20480 | cicd-monitor 9.682 = 47,3% | S159 19.484 = 95,14% | −47,8 điểm % | HEALTHY |
```
🔴 `95,14 − 47,28 = **47,86** → “−47,8 điểm %”`. Đó **chính xác là phép trừ thẳng** nó vừa cấm — và **verdict `HEALTHY` của dòng đó được rút ra từ chính con số ấy**.

**FALSIFY:** thử cứu nó — "có thể −47,8 là delta của một trục khác?" ⇒ **KHÔNG**: cột `baseline` của chính dòng đó ghi `S159 19.484 = 95,14%`, tức nó tự khai đang so với mốc S159. → **BROKE.**

**Phán tách 2 vế (không gộp):**
- **E-10a số + E-10b khai (disclosure)**: **ĐẠT** — nó *có* nêu bẫy, nêu sớm, nêu đậm, và còn tự khai tổng byte **TĂNG** 19.484→23.588. Trung thực.
- **E-10c tự-tuân**: **TRƯỢT** — luật đặt ra rồi vi phạm ở đúng chỗ quan-trọng nhất (ô verdict). Cùng lớp lỗi với §7: *nói đúng ở phần văn, làm sai ở phần bảng*.

---

## §11 — E4: con-ĐỀ-XUẤT sửa **3 dữ-kiện của LEAD** — 🔴 **ĐÚNG CẢ 3. LEAD SAI CẢ 3.**

| # | LEAD nói | refine sửa | TAO đo | phán |
|---|---|---|---|---|
| 1 | mỏ-neo `:23` | **`:27`** | `sed -n '27p'` ⇒ `- S141 (2026-07-20) seed khi adopt khuôn hub 58e28bae — CHƯA chạy lần nào; first-run chờ restart-CLI + spawn-probe + anh consent.` — **khớp verbatim câu refine trích**. `:23` là dòng **khác hẳn** (`- 🔴 MỖI action neo số con-ĐO cụ-thể; CHỐT-DỪNG per-đối-tượng…`) | ✅ **refine ĐÚNG — LEAD SAI** |
| 2 | **11** return trên đĩa | **12** | `find … -name harness-refine-return.md` ⇒ **13** file, trong đó **1 là của chính phiên S173** ⇒ **12 return TRƯỚC ĐÓ** ✓. Tao đối chiếu **cả 12 byte-size** refine liệt: S144 14321 · S151 9050 · S152 7740 · S153 9792 · S154 20585 · S158 14075 · S159 16550 · S162 8140 · S163 34623 · S168 8573 · S169 26596 · S172 11219 — **12/12 BYTE-EXACT** | ✅ **refine ĐÚNG — LEAD SAI** |
| 3 | thiếu **S163+S168+S169** (đóng băng từ S162) | thiếu thật = **S144·S154·S158·S163·S169** (5), còn **S168 + S172 ĐÃ CÓ** | Tao liệt entry thật trong diary: bullet `:3` **S168** · `:5` **S172** · `:7` S162 · `:8` S153 · `:27` S141 · heading `## S151` `:29` · `## S152` `:33` · `## S159` `:37` ⇒ **đúng 8 mục**, và **S168 CÓ THẬT**. 12 return − 7 phiên được phủ = **S144·S154·S158·S163·S169** | ✅ **refine ĐÚNG — LEAD SAI** |

🔴 **Ghi thẳng, không nể:** lệnh giao của lead sai **3/3 dữ-kiện** ở món E4 — và đây là **lần leo-thang thứ 3** của cùng món, tức 3 vòng liền lệnh giao mang dữ-kiện chưa chạm đĩa. Con-ĐỀ-XUẤT **chạm đĩa trước khi thi-hành** và **từ chối thi-hành nguyên văn một lệnh sai hiện-trạng** (nếu làm theo sẽ **nhân bản mục S168 đang đúng**). Đó là hành-vi **ĐÚNG**, không phải né việc.

### 11b. Một số của refine KHÔNG tái-dựng được — **TRƯỢT**

refine viết: *"61.219 B / **195.244 B** tổng công-việc = **31,4%**"*.
Tao cộng 12 return: **181.264 B**. ⇒ mẫu-số lệch **+13.980 B**; tỉ-lệ thật = **33,8%**, không phải 31,4%.
- Tử-số **61.219** (S163 34.623 + S169 26.596) ⇒ **ĐẠT byte-exact**. "2 return lớn nhất lịch-sử vai" ⇒ **ĐẠT** (34.623 > 26.596 > 20.585).
- Mẫu-số ⇒ **TRƯỢT**. Hướng lệch làm claim của chính nó **NHẸ ĐI** (33,8% > 31,4%) ⇒ không phải thổi phồng. (Giả-thuyết khả dĩ: nó gộp cả file đang-viết của chính nó ~13.980 B lúc đó — tao **không chứng được**, nên chỉ ghi là **không tái-dựng được**.)

---

## §12 — KIỂM TỪNG ZERO (① ② ④) — zero-có-lý-do ⟂ zero-vì-lười

| lớp | refine khai | TAO kiểm độc-lập | phán |
|---|---|---|---|
| **① reinject = 0** | ứng-viên duy nhất `impl-fe` bị chốt-dừng khoá → E2; ledger `:12` cấm reinject khi chưa phân-loại floor-rot/build-gap; tên mục cần `-Detail` chưa ai chạy | `reinject-ledger.md` = 57 dòng khung, `:34` = `_(chưa có floor-rot nào được reinject — ledger khởi-tạo trống S95)_` ⇒ **0 dòng thật, ĐÚNG**. `-Detail`: grep `scripts/` ⇒ **0 nơi truyền**; `commands/session-end.md:68,164` gọi `mfe-eval.ps1` **vô-điều-kiện** nhưng **không có `-Detail`** ⇒ **built-but-never-invoked ĐÚNG**. 🔴 **VÀ §4 của tao chứng zero này KHÔNG chỉ có-lý-do mà là ĐÚNG THỰC-CHẤT:** mục MISS là **hiện-vật phép đo**, reinject vào đó = nhồi rác | ✅ **ZERO CÓ LÝ-DO — và đúng** |
| **② promote = 0** | 3 "nhà đúng" đều khoá: sổ mình (S154 chưa land) · `harness-eval` (S172 chưa land) · `ring4-audit` (S172 chưa land) | (a) `harness-refine/MEMORY.md:27` câu sai **còn nguyên** ✓ (§11). (b) `harness-eval/MEMORY.md` `## Luật cứng` `:23` ⇒ đếm bullet: `:24` `:25` `:26` = **đúng 3 bullet**, **không có bullet-4 control-dương** ✓ — 🔴 tao kiểm trên bản **SAU commit 11:05** (bản mới nhất), nên đây **không phải số cũ**. (c) `grep -c "S170" ring4-audit/MEMORY.md` = **0** ✓ | ✅ **ZERO CÓ LÝ-DO — 3/3 tiền-đề đúng trên đĩa hôm nay** |
| **④ distill = 0** | máy in `pending=1 \| nguong=15 => IM`, dư địa 14 | tao chạy lại `distill-shard-probe.ps1` ⇒ `SHARD-PROBE: pending=1 | nguong=15 => IM` ✓ | ✅ **ZERO CÓ LÝ-DO — máy nói IM** |

⇒ **3/3 zero là zero-CÓ-LÝ-DO**, mỗi cái neo vào **vật đo được trên đĩa**, không cái nào là zero-vì-lười. Và refine **không** dùng zero để trốn: nó vẫn nộp **15 ứng-viên đã-bác** + **5 escalate có payload**.

---

## §13 — Khai "A1 KHÔNG chữa `:25`" có TRUNG THỰC không — **CÓ**

refine tự khai (§8): *"A1 rút bullet bên trong `## 📅 Runs` và cố ý GIỮ NGUYÊN `## 🎯 Role baseline` ⇒ hai việc không đè nhau… thi-hành A1 xong mà tưởng `:25` đã sạch là sai. Cần **cả hai**."*

Tao kiểm:
- `## 🎯 Role baseline` ở **`:21`**; dòng ring1 bắt ở **`:25`** = `- Input = OUTPUT của lead-stale-auditor (**5 class view-***) + lead-gap-auditor (6 class gap-*).` ⇒ **`:25` NẰM TRONG khối `:21-32`** ✓
- Tập A1 rút = `:35`, `:37-41`, `:49-54` — **tất cả ≥ :35**, đều dưới `## 📅 Runs` (`:33`) ⇒ **KHÔNG chạm `:25`** ✓
- `## 🎯 Role baseline` nằm trong danh-sách **GIỮ** của A1 ✓

⇒ **ĐẠT — khai trung thực.** Nó **chủ động tự trừ điểm cho action của chính mình** thay vì để A1 trông như đã dọn sạch file. Đây là hành-vi đúng chiều với luật *"vắng-mặt trông giống ổn"*.

**Hội-tụ 4 vai trên cùng 1 file** — tao xác nhận cả 4 nhất-quán, không mâu thuẫn:
| vai | thấy gì ở `ring2-audit/MEMORY.md` | tao kiểm |
|---|---|---|
| `ring1-audit` | `:25` dạy **"5 class view-*"** trong khi enum nay 6 view-* + 6 gap-* = 12 | ✓ `:25` verbatim ghi `5 class view-*` — **stale thật** |
| `harness-refine` | **11.106 B = 47,3%** nằm TRÊN `##` đầu ⇒ planner đếm 7 entry mà không thấy gần nửa file | ✓ **byte-exact** (§5a) |
| `ring2-audit` (15Đ/3T) | tự đo lại ra **cùng 11.106 B / 47,3%** + bổ cơ-chế: dòng dạy sai **nằm trong vùng planner mù ⇒ không bị soát ⇒ sống mãi** | ✓ tao đo độc-lập ra **đúng 11.106 B**, 3 nguồn trùng nhau |
| `harness-audit` (tao) | 🔴 bổ vế 4: `:25` **KHÔNG** ở vùng mù — nó ở `:21-32`, **DƯỚI** heading đầu, tức **planner CÓ thấy** | — |

🔴 **Chỉnh lại cơ-chế của `ring2-audit` cho chính xác** (củng cố nhưng thu hẹp): dòng dạy sai `:25` sống dai **KHÔNG phải** vì nằm trong vùng planner mù. Nó nằm trong `## 🎯 Role baseline` = vùng **`value_protect` / spine**, tức vùng **CỐ Ý không bị archive đụng tới**. ⇒ **2 cơ-chế khác nhau, cùng một hậu-quả:**
- vùng **mù** (`:1-20`, 47,3%) ⇒ planner **không đếm** ⇒ byte trốn khỏi ngân-sách;
- vùng **bảo-hộ** (`:21-32`) ⇒ planner **thấy nhưng cấm đụng** ⇒ **nội-dung hết hạn được miễn-nhiễm vĩnh-viễn**.
`:25` thuộc loại **thứ hai**. Vá loại 1 (A1) **không** vá được loại 2 — đúng như refine cảnh báo. Và loại 2 **nguy hơn**: nó là vùng **luôn-nạp mỗi lần spawn**.

---

## §14 — CHƯA CHẠM (khai thẳng — CẤM đọc thành sạch)

| trục | vì sao không chấm |
|---|---|
| nhịp light `1/6` · deep `7/15` | **KHÔNG re-chạy** `nhip-no-probe.ps1` ⇒ **KHÔNG-CHẤM-ĐƯỢC**, không suy từ số người khác |
| detector INFORM `13→16` | số đã trôi tiếp (`19` ở lượt tao) ⇒ **không tái-dựng được điểm đo của con-ĐO**. Nhường `tooling-auditor` (N5) |
| độ-giữ diary `0/23` nhắc S173 | số đúng **tại 11:02**, nhưng **hết hiệu-lực lúc 11:05** (§1b). Tao **không chấm ĐẠT/TRƯỢT** — đo lại bây giờ là đo một cây khác |
| `class_repeat` 8/12 ≥4 vs `jump=3` | turf **H24 / `lead-gap-auditor`** (refine N4) — **NHƯỜNG** |
| HCV `4 sub-md / 0 synthesis` · `run-chua-gom` | turf **`harvest-curator` (H2)** — **NHƯỜNG**, cả 2 nấc trên cũng nhường |
| `.archive-strikes.json` 20/23 | turf **`tooling-auditor`** (refine N3) — **NHƯỜNG** |
| nội-dung 5 escalate payload (E1-E5) | là **đề-xuất**, chưa phải vật trên đĩa ⇒ không có gì để đo |

---

# §15 — BẢNG VERDICT PER-CLAIM (không có verdict-tổng gộp che dòng lẻ)

## 15a. Con-ĐO `harness-eval` — **24 ĐẠT / 5 TRƯỢT**

| # | claim | verdict |
|---|---|---|
| E-01a | headroom hôm nay **148.183** | ĐẠT |
| E-01b | đơn-điệu giảm, **chưa 1 lần đảo chiều** (tao kiểm đủ **6** mốc) | ĐẠT |
| E-01c | *"mốc thứ **4**"* | 🔴 **TRƯỢT** — mốc **thứ 6** |
| E-01d | *"bước sụt kỳ này **−17.584**"* | 🔴 **TRƯỢT** — bước thật **−4.785**; −17.584 = **3 phiên gộp** |
| E-01e | *"−17.584 > tổng 2 bước trước ⇒ **GIA TỐC**"* | 🔴 **TRƯỢT — DẤU ĐẢO** (−4.785 < −7.956 ⇒ **chậm lại**) |
| E-02a | hotload **695.451 B** | ĐẠT |
| E-02b | **+99.135 / +16,6%** vs S153, cùng 6 nguồn | ĐẠT |
| E-02c | *"khoảng thiếu giãn **17.584** trong 5 ngày (vs S168)"* | 🔴 **TRƯỢT** — neo nhầm mốc; giãn thật kỳ này **4.785** |
| E-03 | `measured` **17/23**, vắng đúng 3 ctx + 3 ring | ĐẠT |
| E-04a | **16/17 row lệch**, 1 khớp (`office-document`) | ĐẠT |
| E-04b | đỉnh **`harness-audit` +773,3%** *(dòng về chính tao)* | ĐẠT |
| E-04c | **5 row >300%** · **4 row >500%** | ĐẠT |
| E-04d | quy gốc về **baseline SEED S141**, không đọc thành "phình 7,7×" | ĐẠT |
| E-05a | **8/23 sub ≥ 80% `autoinject_cap`** | ĐẠT |
| E-05b | đỉnh **93,5%**, còn **1.670 B** | ĐẠT |
| E-05c | 7 số % còn lại (91,8 · 91,4 · 89,1 · 86,1 · 84,1 · 82,4 · 82,3) | ĐẠT |
| E-05d | *"0 over-cap chỉ đo `soft_cap` nên giấu nhóm này"* | ĐẠT *(đúng tới tầng code `:32`)* |
| E-06 | A7 **429/429, 0 hỏng**, 10/10 sub | ĐẠT |
| E-07 | byte-fleet **0/23 vượt trần** | ĐẠT |
| E-08 | MFE Goodhart `strikes 25 = baseline 25` | ĐẠT |
| E-09 | nhãn DENOM **50 vs 66 (=50+16)** cùng 1 lần chạy | ĐẠT *(tao củng cố: 51+19=70)* |
| E-10a | `l2_index` MAIN **9.682 = 47,3%** · tổng **23.588 = 115,2%** | ĐẠT |
| E-10b | **khai** đổi định-nghĩa + tuyên **CẤM trừ thẳng** | ĐẠT |
| E-10c | **TỰ TUÂN** luật đó | 🔴 **TRƯỢT** — bảng verdict `:388` trừ thẳng **−47,8 điểm %** rồi chấm **HEALTHY** |
| E-11 | MFE DENOMINATOR **36** (9+15+5+7) | ĐẠT |
| E-12 | Coverage-FIT **28.492 B / 2,5% / PASS** | ĐẠT |
| E-13 | MFE liveness **exit 0, 23 role** | ĐẠT |
| E-14 | **22/23 = 100%**, `impl-fe` **12/13 = 92%** (23/23 dòng) | ĐẠT |
| E-15 | bảng byte-fleet: **22/23 l1 + 30/30 l2 + 4/4 tổng** | ĐẠT |
| E-16 | mốc re-sync tự-hẹn **2026-08-01**, trôi **4 ngày** | ĐẠT |
| E-17 | distill `pending=1 \| nguong=15 => IM` | ĐẠT |

*(E-04d gộp vào nhóm E-04; tổng dòng chấm = 29 ⇒ **24 ĐẠT / 5 TRƯỢT**.)*

## 15b. Con-ĐỀ-XUẤT `harness-refine` — **26 ĐẠT / 2 TRƯỢT**

| # | claim | verdict |
|---|---|---|
| R-01 | khối đầu file **11.106 B = 47,3%** | ĐẠT *(byte-exact, 3 vai trùng)* |
| R-02 | 3 khối rút = **3.120 B** → còn **20.375 B** | 🔴 **TRƯỢT-vi-mô** — thật **3.132 → 20.363** (lệch **12 B** = bỏ `\n`) |
| R-03 | kết quả **dưới low-water 21.760** (A4 hysteresis) | ĐẠT *(cả 2 cách tính đều thoả)* |
| R-04 | mức rút tối-thiểu chạm vạch **1.735 B** | ĐẠT byte-exact |
| R-05 | biên **1,80×** | ĐẠT *(1,798; thật 1,805)* |
| R-06 | entry vẫn **7 ≥ `keep_floor` 5** | ĐẠT |
| R-07 | A7 **429 → 432** | ĐẠT *(nền 429 tao xác nhận)* |
| R-08 | shard **1 → 2**, vẫn IM | ĐẠT *(nền pending=1 tao xác nhận)* |
| R-09 | giữ 2 khối bài-học `:43-47` + `:56-60`, **không FIFO-by-date** | ĐẠT |
| R-10 | `low_watermark_ratio 0.85` @ `memory-budget.json:82` | ĐẠT *(mỏ-neo số dòng chính xác)* |
| R-11 | `keep_floor_entries 5` · `strike_threshold 2` · cap 25.600 | ĐẠT |
| R-12 | E2: `mfe-eval.ps1:32` có `[switch]$Detail` | ĐẠT |
| R-13 | E2: grep repo **0 nơi truyền `-Detail`** | ĐẠT *(scripts/ = 0; `session-end.md` gọi nhưng không cờ)* |
| R-14 | E2: **built-but-never-invoked** | ĐẠT |
| R-15 | E4: mỏ-neo **`:27` không phải `:23`** | ✅ ĐẠT — **LEAD SAI** |
| R-16 | E4: **12** return không phải 11 | ✅ ĐẠT — **LEAD SAI** *(12/12 byte-exact)* |
| R-17 | E4: thiếu thật **S144·S154·S158·S163·S169** | ✅ ĐẠT — **LEAD SAI** |
| R-18 | diary có **đúng 8 mục** | ĐẠT |
| R-19 | S163+S169 = **61.219 B**, 2 return lớn nhất | ĐẠT |
| R-20 | *"61.219 / **195.244** = **31,4%**"* | 🔴 **TRƯỢT** — mẫu-số thật **181.264** ⇒ **33,8%** |
| R-21 | E5(b) planner đếm **7 entry** mà không thấy 47,3% file | ĐẠT |
| R-22 | **A1 KHÔNG chữa `:25`** — "cần cả hai" | ✅ ĐẠT — **khai trung thực, tự trừ điểm mình** |
| R-23 | zero **①** có lý-do | ĐẠT *(+ §4 chứng nó đúng thực-chất)* |
| R-24 | zero **②** có lý-do (3 nhà khoá) | ĐẠT *(3/3 tiền-đề đúng trên đĩa hôm nay)* |
| R-25 | zero **④** có lý-do (`IM`) | ĐẠT |
| R-26 | `reinject-ledger` **0 dòng thật** | ĐẠT |
| R-27 | **Đ1** — 0/23 là lệch **PHA** (open vs close), không phải regression | ĐẠT |
| R-28 | **Đ2** — máy CÓ đo tuổi **MARK** (`age-band`), chỉ không đo tuổi **diary**, và là **cố ý** | ĐẠT *(block `age-band` in ra trong lượt tao chạy: `>30d old but still Active=4 -> KEPT (status-driven, age-blind)`)* |
| R-29 | **Đ3** — "+1" **không** đến từ can-thiệp nào (ledger 0 dòng) | ĐẠT *(và §4 củng cố: +1 là nhiễu matcher)* |

*(28 dòng chấm ⇒ **26 ĐẠT / 2 TRƯỢT**.)*

---

# §16 — FALSIFY-LOG (HELD / BROKE)

| # | phép thử **phủ-định** | kết |
|---|---|---|
| F-1 | *"3 nấc chạy song song ⇒ tao chấm bản cũ"* → mtime-chain 11:02 < 11:26 < 11:29 | **HELD** (tuần-tự thật) |
| F-2 | *"con-ĐO bịa bảng 23 dòng byte"* → re-chạy `measure-agent-memory` | **HELD** — 22/23 byte-exact |
| F-3 | *"vậy dòng lệch thứ 23 là bịa"* → truy `git log` ⇒ commit `f1e1ff9`@11:05 | **HELD** — lệch **có nguyên-nhân**, không phải bịa |
| F-4 | *"tao đo cây LIVE nên báo TRƯỢT oan cả cụm"* (bẫy F14@S162) → `git diff --stat` 2 mốc | **HELD** — chỉ **1 file** trôi, đã cô-lập |
| F-5 | *"cơ-chế `/` vs dấu-cách của lead đúng"* → đọc regex `[^a-z0-9]+`; cả 2 đều là separator | **BROKE** — cơ-chế lead **sai** |
| F-6 | *"vậy kết-luận 'hiện-vật phép đo' của lead cũng sai"* → tái-dựng matcher trên 2 diary | **HELD** — kết-luận **đúng**, còn mạnh hơn (2 hiện-vật ngược chiều) |
| F-7 | *"backend PASS vì nhớ tốt hơn"* → truy nguồn token `30` ⇒ `mig 29/30/31` | **BROKE** — PASS nhờ **va-chạm ngẫu-nhiên**, 0 liên quan ngữ-nghĩa |
| F-8 | *"chuỗi headroom 4 mốc là đủ"* → grep 5 giá-trị về run-folder gốc | **BROKE** — thiếu **2 mốc có stdout máy** (S163, S169) |
| F-9 | *"có phải TAO bịa 2 mốc để bắt lỗi?"* → mở `S163 run.md:31` + `S169:146` thấy block stdout | **HELD** — 2 mốc **là số máy**, tao không dựng |
| F-10 | *"có lý do chính-đáng loại S163+S169 (khác loại bookend)?"* → cả 2 đều `bookend-open` như S173 | **BROKE** — không có tiêu-chí loại |
| F-11 | *"thêm 2 mốc thì đơn-điệu gãy ⇒ con-ĐO sai cả trục"* → so 6 mốc | **HELD** — đơn-điệu **vẫn giữ**; con-ĐO đúng về HƯỚNG |
| F-12 | *"lệch 12 B của A1 lật kết-luận"* → drain thật 3.132 > ngưỡng 1.735 gấp 1,8× | **HELD** — không lật; lệch về phía **an-toàn** |
| F-13 | *"refine bịa số khối vì cộng 8 khối ≠ file"* → trừ đúng độ-dài heading ⇒ khớp cả 3 | **HELD** — quy-ước nhất-quán *(nhưng không khai)* |
| F-14 | *"quan-hệ 50+16=66 chỉ là trùng-hợp số học"* → đo điểm thứ 2 ⇒ 51+19=70 | **BROKE** — là **cấu-trúc**, không trùng-hợp |
| F-15 | *"con-ĐO tuyên CẤM trừ thẳng thì chắc nó tuân"* → đọc `:388` | **BROKE** — nó **tự vi phạm** |
| F-16 | *"3 đính-chính của refine là bắt bẻ vặt / sai"* → `sed 27p`, `find`, liệt entry | **HELD** — **đúng cả 3**, lead sai cả 3 |
| F-17 | *"zero ①②④ là zero-vì-lười"* → kiểm 3 tiền-đề trên đĩa hôm nay (post-11:05) | **HELD** — **3/3 có vật neo** |
| F-18 | *"A1 dọn xong thì `:25` sạch"* → tập rút ≥`:35`, `:25` ở `:21-32` | **HELD** — refine khai **đúng**, cần cả hai |
| F-19 | *"`:25` sống dai vì nằm vùng planner mù (theo ring2)"* → `:25` ở **dưới** `##` đầu | **BROKE (một phần)** — cơ-chế thật là **vùng `value_protect`**, không phải vùng mù |
| F-20 | *"git status là backstop đủ"* → 9 thư-mục memory **rỗng** trong run-folder, git không track dir rỗng | **BROKE** — lỗ thứ **3**, ngoài cả working-tree lẫn `wal:` commit |

---

# §17 — 3 điều lead cần mang đi (ngoài verdict)

1. 🔴 **Chuỗi LỊCH-SỬ không có ai canh.** Ranh-trục hiện tại: nấc 1 đo **kỳ này**, nấc 2 **cấm đo lại**, ⇒ số lịch-sử đi thẳng ra kết-luận **không qua cửa kiểm nào**, trừ khi nấc 3 tự truy. Lỗi này **đã tái-phát ≥2 vòng** (S169 cũng neo nhầm mốc S162 thay vì S163). Không phải lỗi của một con — là **khe giữa các vai**.
2. 🔴 **Hai lớp "sống dai" khác nhau trong diary**: vùng **mù** (trên `##` đầu — planner không đếm) và vùng **bảo-hộ** (`value_protect` — planner thấy nhưng cấm đụng). A1 vá lớp 1. `:25` thuộc lớp 2 và **ở vùng luôn-nạp mỗi spawn** ⇒ nguy hơn. Cần **2 đường vá khác nhau**.
3. 🔴 **MFE per-role thiên-lệch theo ĐỘ DÀI diary** (§4): khớp nhờ token rời bất kỳ đâu ⇒ **file càng to càng dễ 100%**. Ngược chiều trục `autoinject_cap` mà cả 3 nấc đang kéo xuống. **Thước = quyền owner**, tao **không đề-xuất đổi**, chỉ đặt lên bàn.

---

# §18 — CAVEAT (khai thẳng)

1. 🔴 **"read-only" = thiếu tool, KHÔNG phải sandbox.** Lượt này tao **CÓ ghi**: (a) **duy nhất** file này; (b) `.claude/agent-memory/.mfe-state.json` +1 dòng history do chạy `mfe-eval` (state riêng của mfe). Tao **KHÔNG** chạm `.claude/agent-memory/*/MEMORY.md`, `memory-budget.json`, `reinject-ledger.md`.
2. 🔴 **Backstop có 3 lỗ, không phải 1:** working-tree (`git status`) · Stop-hook `wal:` commit nuốt dấu (ring1 đã chứng) · **thư-mục rỗng vô-hình với cả hai** (§6e, tao mới bắt). Soát tao bằng `git show --stat` các commit `wal:` **và** `find <run>/.claude -type f`.
3. **Verdict của tao chỉ phủ cái tao ĐO.** 7 trục ở §14 = **KHÔNG-CHẤM-ĐƯỢC / NHƯỜNG** — **cấm đọc thành sạch**.
4. **Tao chấm số + spec-conformance, KHÔNG chấm diff-code** (turf `reviewer`), **KHÔNG soi lead-surface** (turf H24), **KHÔNG harvest-op** (turf H2).
5. Tao **PHÁN**, lead **single-writer** ghi. File này là **đề-xuất verdict**, không phải hành-động.

---

**Tổng: 50 ĐẠT / 7 TRƯỢT** trên 57 claim *(con-ĐO 24Đ/5T · con-ĐỀ-XUẤT 26Đ/2T)* — cộng từng dòng §15a+§15b, **không dùng số tổng đóng vai đã-phủ-hết**.
7 TRƯỢT tập trung ở **2 cụm**: chuỗi headroom (4 dòng, cùng 1 gốc **mốc bị bỏ**) · tự-tuân-luật `l2_index` (1) · số học vi-mô của refine (2, cả 2 **conservative**, không lật kết-luận).

END

HARNESS-AUDIT: 50Đ/7T

