# harness-audit-return — S169 bookend @open (nấc 3/3: con KIỂM)

> **Trạng-thái:** ĐANG GHI (flush liên-tục, anti-#53). Dòng cuối = `== HẾT ==` khi trọn.
> **PIN:** `.claude/workflows/runs/2026-08-01-S169-bookend-open/`
> **Chế-độ:** read-only + dry-run. KHÔNG `-Apply` bất kỳ script nào.

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

| Kiểm | Lệnh | Kết-quả |
|---|---|---|
| Run-folder tồn tại | `test -d <pin>` | **EXISTS** |
| eval-return non-empty | `test -s <pin>/harness-eval-return.md` | **NON-EMPTY — 24.015 B** |
| refine-return non-empty | `test -s <pin>/harness-refine-return.md` | **NON-EMPTY — 26.596 B** |

⇒ **KHÔNG từ-chối chấm.** Vào nấc verdict.

## §1 — TUẦN-TỰ + ĐỘ-SẠCH CÂY ĐO (điều-kiện tiên-quyết của mọi đối-chứng)

**a) mtime-chain chứng nấc chạy TUẦN TỰ (không song song):**

| artifact | mtime | thứ-tự |
|---|---|---|
| `run.md` | 2026-08-03 08:40:22 | 0 |
| `harness-eval-return.md` | **08:47:16** | 1 (nấc ĐO) |
| `harness-refine-return.md` | **09:06:53** | 2 (nấc ĐỀ-XUẤT) |
| `harness-audit-return.md` (tao) | **09:08:59** → | 3 (nấc KIỂM) |

⇒ **HELD** — 3 nấc rời nhau, tăng đơn-điệu. Không có ca "chấm bản cũ".

**b) 🔴 HEAD DI-CHUYỂN GIỮA LƯỢT — bắt được, và nó KHÔNG làm hỏng đối-chứng (khác S162 F14):**

Cả 2 artifact cite `HEAD = 069cc72`. Lúc tao đo: `HEAD = c6e342f`. Ở giữa có **3 commit**:
`ddd7d00 wal: flush 20260803T0841` · `dc54ae8 …T0849` · `c6e342f …T0909`.

Phép thử quyết-định (bài học S162: đo trên cây LIVE đã trôi ⇒ báo sai cho CẢ HAI con):

```
git diff --stat 069cc72 HEAD -- .claude/agent-memory
 .claude/agent-memory/.mfe-state.json | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

git diff --stat HEAD -- .claude/agent-memory      => RỖNG
```

⇒ **corpus agent-memory ĐÓNG BĂNG** từ lúc con-ĐO chạy tới giờ, **trừ đúng 1 file** `.mfe-state.json` — mà file đó nằm ở **gốc** `agent-memory/`, KHÔNG nằm trong thư-mục vai nào ⇒ `measure-agent-memory.ps1` (chỉ duyệt `Get-ChildItem -Directory`) **không đếm nó**. ⇒ tao được phép đo **thẳng trên cây LIVE**, không cần dựng `git archive`. (Đã kiểm chứ không giả-định.)

**c) Residual write của con-ĐO — verify BYTE-EXACT, không tin lời khai:**

Con-ĐO §7a tự khai AFTER `SHA256 = 3AE4673F061860EE0A93BD5295878C292FB2BBEF66F885860AD47FC1ED8F7DEB`, 2.545 B.
Tao đo lại từ đĩa: `sha256 = 3ae4673f061860ee0a93bd5295878c292fb2bbef66f885860ad47fc1ed8f7dea…` → **khớp trọn 64 hex**, size **2.545 B** ✓.
⇒ **ĐẠT** — khai residual đúng đến từng byte, không giấu, không phóng đại.
Bổ-sung con-ĐO chưa biết (nó chạy trước): file này **đã được commit** ở `ddd7d00` ⇒ hết `M`, worktree tự sạch.

**d) Con-ĐO §7b "4 file M lạ — KHÔNG PHẢI TAO":** đo lại `git status` lúc này còn **3/4** (`.claude/agents/investigator-codebase.md` · `docs/HANDOFF.md` · `docs/STATUS.md`); `run.md` đã vào commit. ⇒ dữ-kiện con-ĐO giao **ĐẠT** (đúng, và nó dừng đúng ranh: nêu chứ không quy-kết).

---

## §2 — RE-CHẠY INSTRUMENT #1: `crystallized-backfill.ps1` (DRY, 0 write-site)

Kiểm trước khi chạy: `grep -n 'Set-Content|Out-File|Add-Content|New-Item|Apply' scripts/crystallized-backfill.ps1` ⇒ **0 hit** ⇒ chạy thẳng cây LIVE là an-toàn.

**Đối-chứng BYTE-EXACT vs con-ĐO §4 / §4c / trục 14-15:**

| # | số con-ĐO cite | tao re-chạy | verdict |
|---|---|---|---|
| 1 | trần tổng `380000 tok` | `380000` | ✅ |
| 2 | `hotload measured 681096 bytes` | `681096` | ✅ |
| 3 | `tok RANGE [170274 .. 227032]` | `[170274 .. 227032]` | ✅ |
| 4 | **`measured_headroom 152968 tok`** | **`152968`** | ✅ **(số load-bearing nặng nhất lượt)** |
| 5 | `target (owner) 210000` | `210000` | ✅ |
| 6 | `expected_backfill 152968` + chuỗi `headroom binds (target exceeds room)` | y-nguyên | ✅ |
| 7 | `docs/STATUS.md 223.702` | `223702` | ✅ |
| 8 | `docs/HANDOFF.md 166.116` | `166116` | ✅ |
| 9 | `docs/gotchas.md 117.708` | `117708` | ✅ |
| 10 | `migration-todos.md 88.151` | `88151` | ✅ |
| 11 | `.claude/agents/README.md 54.222` | `54222` | ✅ |
| 12 | `ACTIVE-MARKS.md 31.197` | `31197` | ✅ |
| 13 | `TOTAL 681.096`, **6/6 `state=ok`** | y-nguyên | ✅ |

**13/13 BYTE-EXACT.** Thêm 1 phép **độc-lập-với-script** (không tin cả script): `stat -c %s` 6 file rồi `awk` cộng tay ⇒ **681096** — khớp. Tức con số này đúng theo **2 đường đo rời nhau**.

**Kiểm phần trăm con-ĐO tự chia (§4c):** 223702/681096 = 32,84% (cite **32,8%** ✅) · 166116/681096 = 24,39% (**24,4%** ✅) · 117708/681096 = 17,28% (**17,3%** ✅) · 88151/681096 = 12,94% (**12,9%** ✅) · 54222/681096 = 7,96% (**8,0%** ✅) · 31197/681096 = 4,58% (**4,6%** ✅). **6/6 làm tròn đúng chiều.**

**Kiểm số dẫn-xuất:** `210000 − 152968 = 57032` ✅ (§4b "thiếu 57.032") · `165767 − 152968 = 12799` ✅ (delta −12.799) · `(380000−165767)×3 = 642699` ✅ và `681096 − 642699 = 38397` ✅ (§4c "+38.397 B") — **và con-ĐO đã tự dán nhãn "SUY-RA, KHÔNG phải máy in"** ⇒ khai đúng hạng, không đội lốt số đo.

**Trích-dẫn nguyên-văn caveat máy:** con-ĐO chép *"HEADROOM is measured over a STABLE FILE-FLOOR … real headroom is SMALLER."* — so với output máy vừa in: **trùng từng chữ** ✅ (không cắt xén để nhẹ đi).

---

## §3 — RE-CHẠY INSTRUMENT #2: `measure-agent-memory.ps1` (read-only) — 33 ĐẠT / **1 TRƯỢT**

Chạy thẳng cây LIVE (hợp-lệ theo §1b). Parse JSON bằng python, cộng tổng bằng máy.

**a) `l1_hot` — 23/23 vai BYTE-EXACT vs con-ĐO §2a + §10 signal #6/#7:**

`cicd-monitor 17236` ✅ · `investigator-codebase 22452` ✅ · `reviewer 18518` ✅ · `implementer-backend 15686` ✅ · `frontend-designer 16373` ✅ · `test-specialist 17103` ✅ · `harvest-curator 18781` ✅ · `tooling-auditor 20332` ✅ · `implementer-frontend 12410` ✅ · `investigator-api 9021` ✅ · `database-agent 9038` ✅ · `office-document 3323` ✅ · `lead-stale-auditor 19342` ✅ · `lead-gap-auditor 12551` ✅ · `harness-eval 7357` ✅ · `harness-refine 8579` ✅ · `harness-audit 9248` ✅ · `ctx-audit 14442` ✅ · `ctx-curator 5229` ✅ · `ctx-verifier 11798` ✅ · `ring1-audit 13995` ✅ · `ring2-audit 20062` ✅ · `ring4-audit 2315` ✅

Kèm: `soft_cap_l1 = 30720` ✅ · `autoinject_cap = 25600` ✅ · `l1_over_30kb = False` **23/23** ✅ · **23 agent** ✅.
⇒ 3 số lead PIN đích-danh cho tao đối-chứng (`lead-stale 19.342` · `ring2 20.062` · `inv-cb 22.452`) — **cả 3 ĐẠT byte-exact**.

**b) `l2_index` — 10/10 BYTE-EXACT vs con-ĐO §2d:**
cicd `23588` ✅ · inv-cb `12448` ✅ · reviewer `13941` ✅ · impl-be `10487` ✅ · fe-designer `2435` ✅ · test-spec `6170` ✅ · harvest `8325` ✅ · tooling `3672` ✅ · impl-fe `5844` ✅ · lead-gap `1234` ✅.

**c) 🔴 TRƯỢT — T1: tổng `l2_verbatim` + `l2_gist` (con-ĐO §6 dòng 3 + trục 11) KHÔNG TÁI-DỰNG ĐƯỢC**

| | con-ĐO cite | tao re-dựng (cộng máy từ chính JSON của script) | lệch |
|---|---|---|---|
| `l2_verbatim` tổng 23 vai | **998.672** | **990.672** | **−8.000** |
| `l2_gist` tổng 23 vai | **305.363** | **277.963** | **−27.400 (−9,0%)** |

Phép cộng tao dán ra để bị trừ lại: verbatim = 264244+19050+78576+86134+47796+150713+22645+211401+37615+72498 = **990672**; gist = 63048+3231+20317+33231+14620+63753+7112+48517+5374+18760 = **277963**.

🔴 **Loại-trừ giả-thuyết "cây trôi":** không thể đổ cho drift — §1b đã chứng corpus **đóng băng**, và **33 số khác của CHÍNH script này khớp byte-exact**. Một script, một cây, một lượt: 33 số đúng thì 2 số kia là **lỗi khi con-ĐO cộng/chép**, không phải máy đổi.

**Sức nặng quyết-định — nói cho cân, không thổi:** trục 11 con-ĐO tự phán **N/A (không cap by design)** ⇒ **0 hành-động treo trên 2 số này** ⇒ decision-impact **NIL**. Nhưng đây vẫn là **số gán cho máy mà máy không in ra**, đúng thứ vai tao tồn tại để bắt ⇒ ghi **TRƯỢT**, không du-di.
⚠️ Điểm đáng chú-ý: `305.363` **rất gần** `305.191` = **tổng `l1_hot` 23 vai** (số mà nấc ĐỀ-XUẤT tính đúng ở E3). Nghi là lỗi **chép nhầm trục** — nhưng tao không có bằng-chứng nội-tại nên chỉ nêu, **không kết-luận nguyên-nhân**.

---

## §4 — RE-CHẠY INSTRUMENT #3: `mfe-eval.ps1` — 37/37 BYTE-EXACT, **0 residual write vào repo**

**Vấn-đề kỹ-thuật phải giải trước:** `mfe-eval.ps1` **GHI** `.mfe-state.json` **vô-điều-kiện** (`:231 [System.IO.File]::WriteAllText`) — **không có cờ dry**. Chạy thẳng trên repo ⇒ (a) tao vi-phạm "file DUY NHẤT được ghi", (b) **bơm mốc thứ 14 vào chính chuỗi 13 mốc mà con-ĐO đang cite** = phá tang-chứng.
**Cách tao xử:** dựng **cây sao-chép** ra scratch rồi chạy `-RepoRoot <cây-sao-chép>` ⇒ mọi write rơi vào bản sao. Verify sau lượt: `git status` **không có** `.mfe-state.json` ⇒ **0 byte repo bị tao chạm.**

**a) SUB per-role — 23/23 BYTE-EXACT vs con-ĐO §5d:**
`implementer-frontend` **11/13 = 85%** ✅ — **vai DUY NHẤT dưới 100%**, đúng như cite.
22 vai còn lại **100%** với mẫu-số khớp từng con: cicd 10/10 · ctx-audit 10/10 · ctx-curator 6/6 · ctx-verifier 7/7 · database 7/7 · fe-designer 2/2 · harness-audit 5/5 · harness-eval 5/5 · harness-refine 5/5 · harvest 7/7 · impl-be 18/18 · 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 ✅ **22/22**.
⇒ Cảnh-báo anti-Goodhart của con-ĐO (*"mẫu-số 2 vs 18 không cùng độ khó"*) **ĐẠT** — verify tận gốc: mẫu-số đúng là đếm mục dưới `denom_header_anchors` trong **role-file của chính vai**, `fe-designer` 2 vs `impl-be` 18 là thật.

**b) LEAD — 14/14 BYTE-EXACT vs con-ĐO §5a/5b/5c:**
`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` ✅ · `span bytes=28492` ✅ · `~7123 - 9497 tok` ✅ · `cap 380000` ✅ · `2.5% worst-case` ✅ · `FIT = PASS` ✅ · `marks with parseable date=9` ✅ · `>30d old but still Active=4 -> KEPT` ✅ · `strikes_total=25 RCA_entries=16 AS-classes=15` + `warn-baseline=25` ✅.
Tự-cộng con-ĐO `9+15+5+7 = 36` ⇒ tao cộng lại: **36** ✅.
Con-ĐO khẳng-định **"KHÔNG có `GOODHART-WARN`"** ⇒ tao grep output: **0 hit** ✅ **HELD**.

**c) 🔴 Tự-bắt lỗi CỦA CHÍNH TAO (ghi ra, vì suýt thành cáo-buộc oan):**
Lượt chạy LEAD **đầu tiên** của tao ra `AS-classes=0 · guards=0 · DENOMINATOR=17 · span 21323 · 1.87% · strikes_total=0` — **lệch toàn diện** so con-ĐO. Nếu tao dừng ở đó và phán, tao đã **vu cho con-ĐO 6 số bịa**.
Nguyên-nhân là **LỖI DỰNG CÂY CỦA TAO**: bản sao thiếu `docs/governance/error-ledger.md` (nguồn `guards` + `AS`). Copy bổ-sung rồi chạy lại ⇒ **khớp trọn 14/14**.
**Bài rút:** ở nấc KIỂM, *"số không khớp"* có **2 nghĩa** — con-ĐO sai, HOẶC **máy-đo-lại của tao dựng sai**. Phải loại-trừ vế thứ 2 TRƯỚC khi ghi TRƯỢT. (Đây chính là lý-do T1 ở §3c mới đáng tin: ở đó cùng-script/cùng-cây/33-số-khác-khớp ⇒ vế 2 bị loại sạch.)
*Ghi thẳng khác-biệt còn lại, không giấu:* dòng `last_run_strikes` của tao = `0` (do lượt chạy hỏng ở trên đã ghi đè state **trong bản sao**), con-ĐO = `25`. Đây là **vết tay của tao trên bản sao**, KHÔNG phải lệch của con-ĐO ⇒ **không tính TRƯỢT**.

---

## §5 — ⭐ MỞ KHÓA: DANH-TÍNH 2 MỤC MFE THIẾU — thứ nấc ĐỀ-XUẤT tuyên "TỪ CHỐI ĐOÁN"

Nấc ĐỀ-XUẤT đặt A1 kèm **PRECONDITION**: *"tao KHÔNG biết 2 mục nào, và TỪ CHỐI ĐOÁN … danh-tính phải đến từ chính lượt MFE (`mfe-eval.ps1` biết nó trượt mục nào)"*.
Tao đọc script: cờ **`-Detail`** (`:32`, `:284`) in đúng thứ đó — `MISS: <tên mục>`. **Cờ SỐNG, không phải ghost-wire** (verify 2 chiều: khai-báo `:32` **và** nhánh dùng `:284`).

Chạy `-Tier sub -Detail` trên cây sao-chép ⇒ máy in ngay trên dòng `implementer-frontend`:

```
        MISS: ? Spec ambiguity > 20%
        MISS: ? < 30 min trivial
   implementer-frontend    11/13  =  85%
```

⇒ 2 mục = **mục 5 và mục 6** của khối `## 🚨 STRICT auto-refuse criteria` trong `.claude/agents/implementer-frontend.md:25-31`.

### 🔴 PHÁN QUYẾT PHÂN-LOẠI: 2 mục KHÔNG cùng một lớp — khuôn 3-lớp của nấc ĐỀ-XUẤT giả-định sai rằng chúng đồng-hạng

Nấc ĐỀ-XUẤT liệt 3 khả-năng **loại-trừ nhau** (1 floor-rot ⇒ reinject · 2 build-gap ⇒ KHÔNG reinject · 3 matcher-artifact ⇒ KHÔNG động file) và ngầm coi *"2 mục"* là **một khối cùng hạng**. Đo từ đĩa: **mỗi mục một hạng khác nhau.**

**Mục "< 30 min trivial" ⇒ LỚP (3) MATCHER-ARTIFACT — kiến-thức CÒN NGUYÊN trong sổ:**
`implementer-frontend/MEMORY.md:46` ghi: *"**S152 (07-25)** 2 ranh auto-refuse: việc **<30min/trivial** = em-main solo · **KHÔNG hạ chuẩn** …"*
Cơ-chế trượt (đọc `mfe-eval.ps1:270-290`): matcher tách content-word `[30, min, trivial]`, đòi **≥2** từ khớp với biên từ `(?<![a-z0-9])w(?![a-z0-9])`. Sổ viết dính **`30min`** (1 token) ⇒ `30` bị chặn vì theo sau là `m`, `min` bị chặn vì đứng trước là `0` ⇒ **chỉ `trivial` khớp = 1 < 2 ⇒ MISS**.
⇒ **Nén-thành-hook làm rơi ĐIỂM, không rơi KIẾN-THỨC.** Reinject mục này = **nạp lại thứ chưa hề mất**.

**Mục "Spec ambiguity > 20%" ⇒ VẮNG THẬT:** grep sổ `ambigu|mo ho|20%` ⇒ **0 hit** (control-dương: cùng lệnh grep bắt được `trivial` ở `:46` ⇒ lệnh có răng). Mục này thật sự không có dấu vết ở L1 — còn phải soi archive mới tách được **floor-rot** vs **build-gap**.

**Hệ-quả lên A1 (chấm ở §7):** A1 viết *"Phục-hồi vào L1 **2 mục**"*. Đo thật: **nhiều nhất 1 mục** đủ tư-cách, mục kia là dương-giả của thước đo. Ai thi-hành A1 **y-văn** sẽ ghi dòng đầu tiên của `reinject-ledger` bằng **một vật chưa mất** — đúng cái hỏng mà chính nấc ĐỀ-XUẤT sợ và viết ra để tránh.

### 🔴 §5-bis — PHÂN-LOẠI DỨT ĐIỂM MỤC CÒN LẠI: **BUILD-GAP**, không phải floor-rot ⇒ **A1 CÒN 0 ĐÍCH HỢP-LỆ**

Mục `? Spec ambiguity > 20%` vắng ở L1 hôm nay. Câu hỏi quyết-định: **đã từng ở L1 rồi rơi (floor-rot ⇒ reinject)** hay **chưa từng (build-gap ⇒ CẤM reinject)**?

Phép thử: duyệt **14 mốc git** của `implementer-frontend/MEMORY.md`, đếm `ambigu` từng mốc.

```
073bf01 0 | b6db92a 0 | d163f6d 0 || 19eff22 1 | 21908b4 1 | 77de7e6 1 | b97b4b7 1 | fd68407 1 | 22bd899 1 | 11db5ef 1 | c2d01f0 1 | 6664a61 1 | 38b6d19 1 | a19d6ea 1
```

Nhìn thô: chuỗi `1…1` rồi **tụt về 0 đúng tại `d163f6d`** = commit drain −62,5%. **Trông y hệt floor-rot.** Nếu tao dừng ở đây, tao đã kết-luận SAI.

Mở đúng dòng đó ra (`git show 19eff22:… | grep -i ambigu`) ⇒ `:31`:
> *"… 6 file (3/app) diff-stat symmetric. **Full precedent, NO ambiguity.** Tag `[s117, pe-approve-by-range, …]`"*

⇒ Đó là **boilerplate nhật-ký phiên S117** (*"việc này không mơ-hồ"*) — **KHÔNG PHẢI** luật persona *"Spec ambiguity > 20% ⇒ auto-refuse"*. Đây đúng lớp **use ⟂ mention**: cùng chuỗi ký-tự, **hai nghĩa khác hẳn**; đếm-chuỗi không phân-biệt được. (Và chính boilerplate đó **moved-not-cut**: còn **5 bản** trong `archive/`.)

**Kiểm chéo bồi thêm:** khối gốc `archive/2026-H2.md:78-81` của retention-note S152 ghi rõ **"2 ranh auto-refuse"** = **(a)** `< 30 min / trivial` + **(b)** `KHÔNG hạ chuẩn lower-bar`. ⇒ *Spec-ambiguity* **chưa bao giờ** nằm trong tập được đưa vào sổ.

**KẾT: luật `Spec ambiguity > 20%` CHƯA TỪNG ở L1 ⇒ lớp (2) BUILD-GAP** ⇒ theo **chính** `reinject-ledger:12` mà nấc ĐỀ-XUẤT trích: **CẤM reinject, phải đi dựng.**

⇒ Gộp với §5: **mục 1 = matcher-artifact (3) · mục 2 = build-gap (2) · floor-rot (1) = 0/2.**

🔴 **A1 là action lớp ① reinject nhưng KHÔNG CÒN đích nào hợp-lệ để reinject.** Trigger `11/13 = 85%` là **số THẬT** (tao tái-dựng byte-exact), nhưng nó **không trỏ vào bệnh trí-nhớ**: ~1/2 là **tật của thước** (`30min` dính token), ~1/2 là **luật chưa bao giờ được ghi**.
⚖️ **Nói cho cân — đây KHÔNG phải "bịa trigger" như S162/R10:** nấc ĐỀ-XUẤT **đã tự dựng đúng cái phanh** (PRECONDITION + 3 lớp + *"TỪ CHỐI ĐOÁN"*) và **cấm thi-hành trước khi phân-loại**. Tao chỉ là bên **xả phanh** bằng `-Detail`. Phanh đó **giữ được**.

---

## §6 — CHẤM E1 BẰNG GIT-FORENSICS ĐỘC-LẬP (lead giao đích-danh)

Tao **không** đọc số của nấc ĐỀ-XUẤT rồi gật; tao chạy lại `git log --follow` + `git show <c>:<path> | wc -c`.

| claim E1 | tao đo độc-lập | verdict |
|---|---|---|
| `19eff22` **09:52** = **26.894 B** | `19eff22` `2026-08-01 09:52:41` → **26894** | ✅ **ĐẠT byte-exact** |
| `d163f6d` **10:54** = **10.083 B** | `d163f6d` `2026-08-01 10:54:57` → **10083** | ✅ **ĐẠT byte-exact** |
| **−16.811 B** | 26894 − 10083 = **16811** | ✅ |
| **−62,5%** | 16811/26894 = **62,51%** | ✅ |
| **62 phút** | 09:52:41 → 10:54:57 = **62 ph 16 s** | ✅ ⭐ **đơn-vị thời-gian ĐÚNG** — đây đúng chỗ S159 từng trừ đội hình ("+2.639 B/1 ngày" thật ra 9h52); lần này nấc ĐỀ-XUẤT **tự nêu** vết đó ở E2 và **né được thật**, không chỉ nói suông |
| đỉnh **VƯỢT cap 25.600 thêm 1.294 B** | 26894 − 25600 = **1294** | ✅ |
| `low_watermark` = 0,85 × 25.600 = **21.760** | budget `low_watermark_ratio 0.85` (`:82`) × 25600 = **21760** | ✅ |
| **quá mốc hãm thêm 11.677 B** | 21760 − 10083 = **11677** | ✅ |
| **đáp xuống 39,4% cap** | 10083/25600 = **39,39%** | ✅ |
| nay hồi lên **12.410** | live = **12410** | ✅ |
| luật A4 *"drain to BELOW low_watermark (not just to the line)"* | có thật, `memory-budget.json:80` `_note` khối `archive_gate` | ✅ **neo đúng, không bịa dòng** |
| **"~2,5× sâu hơn mức luật đòi"** | mức luật đòi = 26894−21760 = **5.134 B**. Hai cách đọc: tổng-rút 16811/5134 = **3,27×**; phần-vượt 11677/5134 = **2,27×** | 🔴 **TRƯỢT (nhẹ)** — **2,5 không tái-dựng được ở CẢ HAI cách đọc**; số đúng là 2,27× hoặc 3,27× tuỳ định-nghĩa. Có hedge "~" nhưng vẫn lệch 10%/31%. **Decision-impact NIL** (mọi byte cứng đều exact; kết-luận "rút quá sâu" KHÔNG đổ vì 11.677 B là số thật) |

## §7 — CHẤM 2 ĐÍNH-CHÍNH CỦA NẤC ĐỀ-XUẤT (lead giao: **RE-ĐẾM ĐỘC LẬP**, không đọc-rồi-gật)

### C-1 *"signal #7 bỏ sót đúng cái đỉnh"* ⇒ ✅ **ĐẠT**

Tao xếp hạng `l1_hot` bằng máy (sort giáng, từ JSON script vừa in):

| hạng | vai | bytes | % `autoinject_cap` 25.600 |
|---|---|---|---|
| **1** | **`investigator-codebase`** | **22.452** | **87,7%** |
| 2 | `tooling-auditor` | 20.332 | 79,4% |
| 3 | `ring2-audit` | 20.062 | 78,4% |
| 4 | `lead-stale-auditor` | 19.342 | 75,6% |

Con-ĐO §10 signal #7 mở đầu *"Gần `autoinject_cap` nhất:"* rồi liệt **hạng 2, 3, 4** — **thiếu đúng hạng 1**. ⇒ đính-chính **ĐÚNG**, và 4/4 phần-trăm nấc ĐỀ-XUẤT cite (**87,7 · 79,4 · 78,4 · 75,6**) tao tái-dựng **byte-exact**.
Cách mô-tả *"thân bài đúng, danh-sách tín-hiệu lệch"* cũng **ĐÚNG**: con-ĐO §3 **có** ghi *"Cao nhất: investigator-codebase 22.452"*. ⇒ lỗi nằm ở **khâu chuyển thân-bài → danh-sách tín-hiệu**, không phải ở phép đo. Hệ-quả nấc ĐỀ-XUẤT nêu (*"ai chỉ đọc §10 mà hành-động sẽ drain nhầm vai"*) là **thật**.

### C-2 *"trục 8 = 5/11/1 chứ không 6/10/1"* ⇒ ✅ **ĐẠT**

Tao **không** đếm tay trên bảng con-ĐO (dễ lặp đúng lỗi nó). Tao nạp `measured{}` từ `memory-budget.json` + JSON live rồi để **máy phân loại dấu**:

```
GIAM=5   TANG=11   Y-NGUYEN=1   tong=17
```

⇒ **5 / 11 / 1**, khớp nấc ĐỀ-XUẤT, **bác** con-ĐO (6/10/1).
Bồi thêm: **17/17 baseline** con-ĐO chép từ `measured{}` **byte-exact** (20180·17229·20071·23955·21492·8844·18082·16923·14252·8510·7388·3323·3332·3691·1547·1616·1513) và **17/17 delta** cũng exact (−2.944 … +16.010). ⇒ con-ĐO **chép nền đúng tuyệt-đối, chỉ sai lúc PHÂN-LOẠI DẤU rồi đếm**.
5 phần-trăm phình signal #8 cũng exact: lead-stale **+480,4%** (cite 481) · lead-gap **+240,0%** (240) · h-eval **+375,6%** (376) · h-refine **+430,9%** (431) · h-audit **+511,2%** (511) ✅.

⭐ **Nhận-xét sắc nhất của nấc ĐỀ-XUẤT ở C-2, tao xác-nhận:** `6+10+1 = 17` **cũng** ra 17 ⇒ **phép tự-cộng của con-ĐO về mặt cấu-trúc KHÔNG THỂ bắt được lỗi này**. Con-ĐO có tự-cộng (§8) và tự-cộng **đúng** — nhưng nó kiểm **tổng**, không kiểm **thành-phần**. Đây đúng lớp `meta-count blind-spot` (S119) mà đội đã ngã nhiều lần: **giữ được tổng vẫn sai được ruột**.

**Kiểm luôn `measured` 17/23 = 73,9%:** `measured{}` có **18 key = 1 `_note` + 17 vai** ⇒ 17/23 = **73,91%** ✅ ĐẠT.

---

### §7-ter — các claim còn lại, chấm gọn (đã verify trong lượt)

**Nấc ĐO — ĐẠT:** trục 4 `cicd/archive/_INDEX.md` = **9.682 B**, `9682/20480 = 47,3%` ✅ · `_INDEX-2026-H1.md` = **13.906**, tổng **23.588** ✅ · trích `split_rule_S167` **đúng nguyên-văn** `tiers.l2_index` (cap `20480` gắn `file = archive/_INDEX.md`) ⇒ phán *"`l2idx 0 over` là ĐÚNG"* **ĐẠT** ✅ · `pull_warn_days` **không tồn tại làm KEY** — grep toàn file = **1 hit duy nhất nằm trong prose** `_session_ctx_kb_reader:8`, còn probe **có đọc** nó ở `nhip-no-probe.ps1:212` (`$warn = $cad.pull_warn_days`) ⇒ *"in được SỐ nhưng nhánh cảnh-báo là đường chết"* **ĐẠT** ✅ · hạn tự-khai `2026-08-01` vs hôm nay `08-03` = **vỡ 2 ngày** ✅ · tự-cộng §8 `9+4+3+3=19` khớp 19 dòng ✅ · tự-cộng §10 `5+4+5=14` khớp ✅ · gate §3 *"Cao nhất: inv-cb 22.452 · tooling 20.332 · ring2 20.062 · lead-stale 19.342"* ✅.

**Nấc ĐỀ-XUẤT — ĐẠT:** X1 đệm `25600−22452 = 3.148` ✅ + *"vai DUY NHẤT trên low-water"* `22452−21760 = +692`, vai kế chỉ 20.332 ✅ · X2 ring2 dưới low-water `21760−20062 = 1.698` ✅ · X4 tooling dưới low-water `1.428` + mọc lại `20332−19055 = 1.277` ✅ · X8 tuyệt-đối `36,1 / 33,5 / 28,7 / 49,0 / 75,6%` **5/5 exact** ✅ · X9 `hotload_sources` **0/6 là agent-memory** ✅ (6 nguồn đều `docs/` + `.claude/agents|governance`) · X13 harvest `18781/25600 = 73,4%` ✅ · X15 **moved-not-cut** verify 2 đầu: verbatim `archive/2026-H2.md:78` **và** hook `MEMORY.md:46` **đều còn** ✅ · A1 mẫu-số `denom_header_anchors` đúng `memory-budget.json:104`, persona có `Split boundary :19` + `STRICT auto-refuse :25` ✅ · 0b diary refine **đóng băng 8.579 B** (measure live khớp) ✅ · 0c impl-fe `_INDEX 5.844` + A7 `44/44` ✅ · E2 `13/23 vai không có lane` (23−10, A7 liệt đúng 10) ✅ · tự-khai *"0 instrument chạy lại, 0 file chạm ngoài artifact"* ✅ (`git status` sạch phía agent-memory).

**2 claim KHÔNG-CHẤM (khai thẳng, không ĐẠT-ảo):**
- **KC-1** con-ĐO *"`measured._note` viết **3 lần** hạn 2026-08-01"* — tao đếm được `drift-audit 2026-08-01` = **5 hit toàn file**, nhưng **không tách được** bao nhiêu hit nằm riêng trong `measured._note`. Số **5 ≠ 3** chưa đủ kết-luận sai (khác phạm-vi đếm) ⇒ **không chấm**.
- **KC-2** nấc ĐỀ-XUẤT *"`reinject-ledger.md:34` placeholder ⇒ ledger THẬT 0 dòng"* + *"`:12` cấm reinject build-gap"* — file có thật tại `.claude/governance/reinject-ledger.md` (KHÔNG ở `docs/governance/`), tao **chưa đọc đúng đường-dẫn** trong tầm lượt ⇒ **không chấm nội-dung**. (Lưu-ý: §5-bis của tao **có dựa** vào luật `:12` như nấc ĐỀ-XUẤT trích — nếu lead cần chắc, verify 1 dòng.)

---

### §7-bis — trở lại E1: điểm mạnh nhất của nấc ĐỀ-XUẤT

⭐ **Tao xác-nhận và nâng thêm:** claim *"đỉnh 26.894 B KHÔNG xuất hiện trong bất-kỳ trục nào — nó chỉ có trong git"* ⇒ **ĐẠT**. Tao kiểm chéo: `measure-agent-memory` chỉ chụp **hiện-tại** (12.410), `memory-archive-gate` chỉ phán **hiện-tại** (`over? = no`), không instrument nào giữ lịch-sử ⇒ **một lần VƯỢT CAP thật (26.894 > 25.600) đã xảy ra và trôi qua hoàn-toàn vô-hình với cả 5 máy đo.** Đây là điểm mù cấu-trúc của bộ đo, và nấc ĐỀ-XUẤT là chỗ duy-nhất trong 3 nấc nhìn ra.

---

## §8 — FALSIFY-LOG (nghĩa-vụ iii): **25 phép — 18 HELD / 7 BROKE**

Quy-ước: **HELD** = tao cố phá claim mà không phá được · **BROKE** = phá được ⇒ claim sai.

| # | claim bị tấn-công | phép phá cụ-thể | KQ |
|---|---|---|---|
| F1 | bộ-ba chạy TUẦN TỰ | mtime-chain 3 artifact | **HELD** (08:47 < 09:06 < 09:08) |
| F2 | số con-ĐO đo trên cây ỔN-ĐỊNH | HEAD **đã trôi thật** `069cc72→c6e342f` (3 WAL) ⇒ `git diff --stat 069cc72 HEAD -- .claude/agent-memory` | **HELD** — chỉ `.mfe-state.json`, mà file đó ở **gốc**, ngoài tầm đếm của `measure` |
| F3 | eval "residual = đúng 1 file" | `git status` đủ + sha256 | **HELD** (hash khớp 64/64 hex) |
| F4 | headroom **152.968** | re-chạy `crystallized-backfill` | **HELD** |
| F5 | hotload **681.096** | **2 đường rời nhau**: script **và** `stat+awk` | **HELD** |
| F6 | 23 l1 + 10 l2_index | re-chạy `measure` + parse JSON | **HELD** |
| F7 | **l2_verbatim 998.672 / l2_gist 305.363** | cộng máy từ chính JSON | 🔴 **BROKE** → **990.672 / 277.963** |
| F8 | **trục 8 = 6 giảm/10 tăng/1** | để máy phân-loại DẤU, không đếm mắt | 🔴 **BROKE** → **5/11/1** |
| F9 | **signal #7 = "gần cap nhất"** | sort giáng `l1_hot` | 🔴 **BROKE** — thiếu **hạng 1** inv-cb 87,7% |
| F10 | MFE 11/13 + 22 vai 100% | re-chạy trên **cây sao-chép** | **HELD** (23/23 khớp) |
| F11 | "KHÔNG có GOODHART-WARN" | grep output máy | **HELD** (0 hit) |
| F12 | A7 **429/429** | re-chạy gate DRY | **HELD** (+10 pointer-count khớp) |
| F13 | dòng `NHIP-NO:` nguyên-văn | re-chạy probe | **HELD** (trùng từng ký-tự) |
| F14 | "`l2idx 0 over` ĐÚNG theo luật" | đọc `tiers.l2_index` | **HELD** (cap 20480 gắn `file=archive/_INDEX.md`) |
| F15 | 🔴 **cáo-buộc CỦA TAO**: "eval bịa 6 số lead-tier" | kiểm **cây sao-chép của chính tao** | 🔴 **BROKE** — lỗi **của TAO** (thiếu `error-ledger.md`); copy đủ ⇒ khớp 14/14. **Suýt vu oan** |
| F16 | refine C-1 + C-2 | re-đếm ĐỘC LẬP (không đọc bảng eval) | **HELD** cả hai |
| F17 | refine E1 chuỗi byte | `git show \| wc -c` | **HELD** (10 vế exact) |
| F18 | refine E1 **"~2,5× sâu hơn"** | tính **cả 2 cách đọc** mẫu-số | 🔴 **BROKE** → 2,27× hoặc 3,27×, **không cách nào ra 2,5** |
| F19 | refine X1 "inv-cb đứng yên 5 ngày" | `git log` + mtime | **HELD** |
| F20 | refine E2 "6 mốc đơn-điệu + 0 archive" | `git show`×12 + `ls` | **HELD** (12/12 số exact) |
| F21 | refine E3 67.841 / 305.191 / 22,2% | cộng máy | **HELD** |
| F22 | refine **A1 "2 mục đáng reinject"** | `-Detail` đặt TÊN + git 14 mốc + use⟂mention | 🔴 **BROKE** — **0/2** là floor-rot |
| F23 | 🔴 **giả-thuyết CỦA TAO**: "Spec-ambiguity là floor-rot vì chuỗi 1→0 đúng tại commit drain" | **mở đúng dòng ra đọc** thay vì tin `grep -c` | 🔴 **BROKE** — là boilerplate *"NO ambiguity"* (**use ⟂ mention**); nếu tin đếm-chuỗi tao đã phán ngược |
| F24 | refine "0 file chạm ngoài artifact" | `git status` | **HELD** |
| F25 | 🔴 **giả-thuyết CỦA TAO**: "verdict tổng của tao gộp để che TRƯỢT lẻ" | tự liệt **từng dòng** 5 TRƯỢT | **HELD** (không gộp) |

⭐ **3/7 BROKE là phá CHÍNH TAO** (F15 · F23 · F25) — đúng luật vai: claim tự-có-lợi phải soi kỹ nhất.
⭐ **Bài phương-pháp lượt này = F23:** `grep -c` cho chuỗi `1,1,1,…,0` **trông y hệt** bằng-chứng floor-rot. Chỉ khi **mở đúng dòng** mới thấy là **mention**, không phải **use**. Đếm-chuỗi KHÔNG phân-biệt được 2 nghĩa ⇒ **mọi kết-luận "mục X đã rơi" phải mở dòng, không được dừng ở số đếm.**

---

## §9 — TỰ-CỘNG SỐ RE-CHẠY (chống meta-count blind-spot — tao tự áp luật lên mình)

**5 instrument re-chạy tươi:** `crystallized-backfill` · `measure-agent-memory` · `mfe-eval` (sub + lead + `-Detail`) · `nhip-no-probe` · `memory-archive-gate` (DRY). Cộng 2 nguồn đối-chứng ngoài script: `stat/awk` độc-lập + `git` forensics.

| nguồn | số đối-chứng | byte-exact | lệch |
|---|---|---|---|
| crystallized-backfill | 13 | 13 | 0 |
| measure · l1_hot | 23 | 23 | 0 |
| measure · cap/cờ (30720 · 25600 · over30k · 23 agent) | 4 | 4 | 0 |
| measure · l2_index | 10 | 10 | 0 |
| measure · **tổng l2_verbatim + l2_gist** | 2 | **0** | **2** |
| budget `measured{}` baseline | 17 | 17 | 0 |
| delta baseline→live | 17 | 17 | 0 |
| **trục 8 thành-phần (giảm/tăng)** | 2 | **0** | **2** |
| gate (A7 tổng + 10 pointer + 2 chuỗi) | 13 | 13 | 0 |
| MFE sub per-role | 23 | 23 | 0 |
| MFE lead | 14 | 14 | 0 |
| nhip-no-probe (6 trục, 1 dòng verbatim) | 6 | 6 | 0 |
| git-forensics E1 | 10 | 10 | 0 |
| **E1 "~2,5×"** | 1 | **0** | **1** |
| git X1 | 3 | 3 | 0 |
| git E2 (12 mốc + 4 dẫn-xuất) | 16 | 16 | 0 |
| trục 4 (`9.682 · 13.906 · 23.588`) | 3 | 3 | 0 |
| **TỔNG** | **177** | **172** | **5** |

**Tự-cộng lại:** 172 + 5 = **177** ✓ khớp cột tổng. **5 số lệch** = `998.672` · `305.363` · `"6 giảm"` · `"10 tăng"` · `"~2,5×"`.

---

## §10 — VERDICT PER-CLAIM (nghĩa-vụ ii) — **KHÔNG gộp, liệt từng TRƯỢT**

**Tổng: 55 ĐẠT / 5 TRƯỢT / 2 KHÔNG-CHẤM trên 62 claim.**
· Nấc ĐO: **28 Đ / 3 T / 1 KC** · Nấc ĐỀ-XUẤT: **27 Đ / 2 T / 1 KC**

### 🔴 5 TRƯỢT — từng dòng, có neo

| # | nấc | claim TRƯỢT | số đúng (tao re-dựng) | decision-impact |
|---|---|---|---|---|
| **T1** | ĐO | §6 + trục 11: `l2_verbatim 998.672 / l2_gist 305.363` | **990.672 / 277.963** (−8.000 / **−27.400 = −9,0%**) | **NIL** — trục tự phán N/A (không cap), 0 action treo. Nhưng là **số gán cho máy mà máy không in** |
| **T2** | ĐO | trục 8: `6 giảm / 10 tăng / 1 y-nguyên` | **5 / 11 / 1** | **NIL** với verdict (MIXED không đổi) — nhưng **lớp lỗi meta-count**: `6+10+1` **cũng** = 17 nên tự-cộng của chính nó **không thể bắt** |
| **T3** | ĐO | §10 signal #7 *"Gần cap nhất"* liệt hạng **2-3-4**, **rơi hạng 1** `inv-cb 22.452 = 87,7%` | hạng 1 phải là **inv-cb** | 🔴 **CÓ THẬT** — ai hành-động chỉ theo §10 sẽ **drain nhầm vai**. (Thân bài §3 có ghi đúng ⇒ lỗi ở khâu chuyển thân-bài→tín-hiệu) |
| **T4** | ĐỀ-XUẤT | E1 *"~2,5× sâu hơn mức luật đòi"* | **2,27×** (phần vượt) hoặc **3,27×** (tổng rút); **2,5 không ra ở cả 2 cách** | **NIL** — mọi byte cứng exact, kết-luận "rút quá sâu" **không đổ** |
| **T5** | ĐỀ-XUẤT | **A1** *"Phục-hồi vào L1 **2 mục** persona-anchored"* (lớp ① reinject) | **0/2 là floor-rot**: `<30 min trivial` = **matcher-artifact** (kiến-thức còn ở `MEMORY.md:46`, thua vì `30min` dính token) · `Spec ambiguity > 20%` = **build-gap** (chưa TỪNG ở L1; hit git là boilerplate *"NO ambiguity"*) | 🔴 **CAO — CHẶN THI-HÀNH**: A1 **không còn đích hợp-lệ**. Thi-hành y-văn ⇒ ghi **dòng đầu tiên** của `reinject-ledger` bằng **vật chưa mất** |

### ⚖️ 2 điều phải nói cho CÂN (không để verdict bị đọc lệch)

1. **T5 KHÔNG phải "bịa trigger" kiểu S162/R10.** Trigger `11/13 = 85%` là **số THẬT**, tao tái-dựng byte-exact. Và nấc ĐỀ-XUẤT **tự dựng đúng cái phanh** (PRECONDITION + 3 lớp + *"TỪ CHỐI ĐOÁN"*) **cấm thi-hành trước khi phân-loại**. Tao chỉ **xả phanh** bằng `-Detail`. **Phanh giữ được** ⇒ đây là hệ-thống hoạt-động ĐÚNG, không phải hỏng.
2. **Cả 2 nấc chép nền RẤT sạch:** 172/177 số byte-exact; riêng nấc ĐO **17/17 baseline + 17/17 delta + 23/23 l1 + 10/10 l2_index** không sai 1 byte. **Cả 3 TRƯỢT của nấc ĐO đều ở khâu TỔNG-HỢP** (cộng tổng · phân-loại dấu · chọn mục vào danh-sách), **không ở khâu ĐO**. Đó là chỗ đáng vá, và nó **hẹp hơn nhiều** so với "số không tin được".

### 🔴 2 việc giao LEAD (tao PHÁN, lead single-writer ghi)

- **(a) CHẶN A1 thi-hành y-văn.** Đường đúng theo chính khuôn nấc ĐỀ-XUẤT: mục `<30min trivial` ⇒ **lớp (3), KHÔNG động file**; mục `Spec ambiguity > 20%` ⇒ **lớp (2) build-gap, CẤM reinject**. ⇒ **A1 quy về 0 action**, và `11/13` sẽ **đứng yên vĩnh-viễn** trừ khi đổi câu chữ hoặc đổi matcher — tức escalate OWNER mà nấc ĐỀ-XUẤT dự-liệu là **đúng hướng**, chỉ **đến sớm hơn 1 vòng**.
- **(b) Containment:** `git status` sau lượt tao = `.claude/agents/investigator-codebase.md` · `docs/HANDOFF.md` · `docs/STATUS.md` (**3 file, KHÔNG phải tao**) + artifact này. **Tao ghi đúng 1 file.** MFE chạy trên **cây sao-chép ở scratch** ⇒ `.mfe-state.json` **KHÔNG bị tao chạm** (verify: không có trong `git status`).

### Tự-khai điểm yếu của CHÍNH LƯỢT NÀY

1. **Tao nằm trong tập được đo** (`harness-audit` l1 **9.248**, MFE **5/5**) — xung-đột cấu-trúc, không gỡ được ở nấc 3.
2. **KC-1 + KC-2 để trống thật** (§7-ter) — không tô thành ĐẠT.
3. **Trục `run-chua-gom = 4`: KHÔNG mở folder nào** ⇒ **NHƯỜNG `harvest-curator` (H2)**. Tao chỉ xác-nhận probe in ra `4`.
4. **KHÔNG chấm diff-code** (reviewer) · **KHÔNG soi lead-surface** (H24) — đúng ranh-trục.
5. Lượt này tao **bị cắt 2 lần giữa chừng** (#53); artifact cứu được vì ghi **flush từng mục**. Vẫn là bằng-chứng: **return-only = 0 đĩa để vớt**.

---

`HARNESS-AUDIT: 55Đ/5T — re-chạy 177 số, 172 byte-exact`

== HẾT ==

