# harness-audit — S154 (con KIỂM, nấc 3/3) · bookend-open · 2026-07-26

> 🔴 Ghi-đĩa-trong-lúc-làm. File LUÔN hợp-lệ giữa chừng; dòng END chỉ xuất-hiện khi TRỌN.
> Trích END của file khác thì **bọc backtick** (lead đã dính bẫy grep-bắt-mention ×3 phiên này).

## §0 PIN-GATE (nghĩa-vụ i) — verify TỒN-TẠI trước khi chấm

PIN đích-danh (lead truyền, **KHÔNG tự tìm run mới nhất**): `.claude/workflows/runs/2026-07-26-S154-bookend-open/`

| check | lệnh | kết-quả |
|---|---|---|
| `test -d <pin>` | dir tồn-tại | **OK** |
| `test -s harness-eval-return.md` | non-empty | **OK** |
| `test -s harness-refine-return.md` | non-empty | **OK** |
| byte eval | `wc -c` | **24889** — lead khai 24.889 ⇒ **KHỚP byte-exact** |
| byte refine | `wc -c` | **20585** — lead khai 20.585 ⇒ **KHỚP byte-exact** |
| dòng eval / refine | `wc -l` | **264 / 109** — khớp lead khai |
| END eval (dòng cuối) | `tail -1` | `` <!-- END harness-eval-S154 · TOTAL=12 SIGNAL · VERDICT=MIXED --> `` ⇒ ĐÓNG |
| END refine (dòng cuối) | `tail -1` | `` <!-- END harness-refine-S154 · TOTAL=3 ACTION · BÁC=8 --> `` ⇒ ĐÓNG |

**mtime-chain (chứng TUẦN-TỰ, không song-song):** synthesis 18:36:32 → eval 18:45:58 → refine 19:03:59 → audit (sau 19:03).
⇒ refine ghi SAU eval 18 phút; audit sau cả hai. **Tuần-tự HELD.** PIN-GATE **PASS** ⇒ được phép chấm.

---

## §1 RE-CHẠY ĐỘC-LẬP (nghĩa-vụ iv) — 5 instrument, đối-chứng BYTE-EXACT

🔴 Tao KHÔNG tin số con-ĐO cite. Dưới đây là số **máy tao tự chạy lượt này**.

### [R1] `scripts/measure-agent-memory.ps1` — re-chạy TƯƠI

**23/23 row l1_hot BYTE-IDENTICAL** với bảng [I1] của con-ĐO:
`tooling-auditor 23464 · implementer-backend 21987 · frontend-designer 21492 · reviewer 21281 · lead-gap-auditor 19792 · harvest-curator 19456 · cicd-monitor 19281 · implementer-frontend 18435 · lead-stale-auditor 14078 · ring2-audit 13964 · test-specialist 13189 · investigator-codebase 12154 · investigator-api 9021 · ring1-audit 7884 · database-agent 7388 · harness-refine 4813 · harness-audit 4530 · harness-eval 4492 · office-document 3323 · ctx-audit 3288 · ctx-curator 2940 · ctx-verifier 2663 · ring4-audit 2315`

**10/10 l2_index BYTE-IDENTICAL:** cicd 19322 · reviewer 13780 · inv-cb 12384 · impl-be 10105 · harvest 7986 · impl-fe 5844 · test-spec 5404 · tooling 3672 · fd 1622 · lead-gap 963. Header `soft_cap 30720` / `autoinject_cap 25600` khớp.

**Số dẫn-xuất tao cho SCRIPT cộng (không cộng tay — đúng lane tao ngã S151/S153):**
```
live rows  = 23        base rows = 17        coverage = 73.9%
MISSING baseline (6): ctx-audit, ctx-curator, ctx-verifier, ring1-audit, ring2-audit, ring4-audit
ORPHAN  baseline (0):
SUM l1 all 23                       = 271230
SUM l1 rows-with-baseline (17)      = 238176
SUM baseline l1_hot (17 rows)       = 191948
over autoinject 25600 = 0 | over soft 30720 = 0 | l1_over_30kb TRUE = 0 | l2_index over 20480 = 0
```
⇒ **0 lệch** trên: 271230 · 238176 · 191948 · 73,9% · danh-sách 6 vai thiếu · 0/0/0/0.

### [R2] `scripts/memory-archive-gate.ps1` — re-chạy DRY

Tham-số máy in khớp: `cap 25600 · low-water 21760 (ratio 0.85) · keep-floor 5 · strike-need 2`.
`[A6] DRY-RUN: strike counters NOT persisted` ⇒ xác-nhận DRY (md5 `.archive-strikes.json` = `4160ee71…` không đổi).
**PASS1:** 0/23 over-cap, strike 0 toàn bảng — **cột `entries` khớp [I3] từng vai** (impl-be 24 · cicd 20 · impl-fe 20 · reviewer 18 · test-spec 17 · inv-cb 12 · inv-api 10 · tooling 10 · harvest 9 · lead-gap 8 · fd 7 · db-agent 6 · harness-audit 6 · harness-eval 6 · harness-refine 6 · ring2 6 · lead-stale 5 · ring1 5 · office-doc 3 · ring4 2 · ctx-audit 0 · ctx-curator 0 · ctx-verifier 0).
**PASS2 A7:** `total pointers 401, resolved 401, failed 0` trên 10 sub — **từng dòng khớp** (cicd 101 · fd 5 · harvest 46 · impl-be 41 · impl-fe 44 · inv-cb 55 · lead-gap 5 · reviewer 56 · test-spec 28 · tooling 20). ⇒ **0 lệch.**

### [R3] `scripts/crystallized-backfill.ps1` — re-chạy DRY

```
hotload measured : 609913 bytes | Tran tong (live cap) : 380000 tok
tok RANGE        : [152478 .. 203304] tok
measured_headroom: 176696 tok | target (owner): 210000 tok
expected_backfill: 176696 tok  (headroom binds (target exceeds room))
```
⇒ **6/6 số BYTE-EXACT** với [I4]. 0 lệch.

### [R4] `scripts/nhip-no-probe.ps1` — re-chạy

```
NHIP-NO: kiem light 1/6 deep 3/15 ok | tran-bo-nho 0 over-cap l2idx 0 over | run-chua-gom 0 | pull-cach 4 ngay
```
⇒ **BYTE-EXACT toàn dòng** với [I5]. 0 lệch.

### [R5] `scripts/mfe-eval.ps1` — re-chạy TRÊN CÂY CÁCH-LY (0 byte ghi vào repo thật)

🔴 Con-ĐO chạy thẳng trên repo và **ghi `.mfe-state.json`** (+5 dòng, git-TRACKED). Tao KHÔNG lặp lại vết ghi đó: tao dựng cây tạm rồi chạy `-RepoRoot <scratch>` (lane fault-injection `-RepoRoot` đã dùng từ S95).
Chứng cách-ly: md5 `memory-budget.json` + `harvest-curator/MEMORY.md` giữa repo thật ⟂ cây tạm **giống hệt** (`f53c8754…` / `9664baa7…`); sau khi chạy, md5 `.mfe-state.json` **repo thật KHÔNG đổi** (`54e111d975eff38bdd618ecb88d1e70b` trước = sau); `git status` repo thật chỉ còn `.session-counter.json` (có sẵn từ trước) + chính file này.

Số re-dựng vs [I2] — **toàn bộ khớp**: `cap 380000 / mem-sub 60000` · `marks 9 · AS 15 · guards 5 · gotchas 7` · `DENOMINATOR 36 (raw 9+15+16+8)` · `span 28492 → 7123-9497 tok → 2.5% · FIT PASS` · `age: 9 parseable, 4 >30d KEPT` · `strikes_total 25 · RCA 14 · AS 15 · warn-baseline 25 · last_run 25` · **23/23 vai = 100%**, từng mẫu-số khớp (cicd 10/10 · ctx-audit 10/10 · ctx-curator 6/6 · ctx-verifier 7/7 · db 7/7 · fd 2/2 · harness-audit 5/5 · harness-eval 5/5 · harness-refine 5/5 · harvest 7/7 · impl-be 18/18 · impl-fe 13/13 · inv-api 7/7 · inv-cb 8/8 · lead-gap 6/6 · lead-stale 6/6 · office-doc 6/6 · reviewer 8/8 · ring1 5/5 · ring2 5/5 · ring4 5/5 · test-spec 6/6 · tooling 8/8). ⇒ **0 lệch.**

### [R6] Tam-giác `harvest-curator` mà lead bắt soi — 3 số phải TỰ KHỚP

| số | nguồn tao tự dựng | khớp? |
|---|---|---|
| **19456** | `wc -c harvest-curator/MEMORY.md` = **19456** = `measure` [R1] = `archive-gate` [R2] (**3 nguồn độc-lập**) | ✅ |
| **17510** | `budget.json:192` rollout *"L1 over self-target 17.1K"* + `harvest-curator/MEMORY.md:9` *"L1 self-target ≤17.1KB"*; 17,1 × 1024 = **17510,4** | ✅ |
| **17655** | `harvest-curator/MEMORY.md:5` tự khai *"L1 **17.655B** > self-target 17.1KB"* | ✅ |
| 19456 − 17510 = **1946** · 19456 / 17510 = **111,1%** · 19456 − 17655 = **+1801** | tao tính lại từng phép | ✅ |

⇒ **Ba số TỰ KHỚP.** Không có số nào bịa.

**TỔNG RE-CHẠY: 5 instrument · ~60 số load-bearing đối-chứng · 0 LỆCH.** (Contract đòi ≥2 — tao chạy 5.)

---

## §2 VERDICT PER-CLAIM — con-ĐO (`harness-eval-return.md`)

| # | claim của con-ĐO | verdict | neo bằng-chứng |
|---|---|---|---|
| **E1** | [I1] bảng 23 row l1 + 10 l2_index + 2 cap header | **ĐẠT** | [R1] byte-identical 33/33 số |
| **E2** | Σ l1 (23) = **271230**, mean 11792.6 | **ĐẠT** | [R1] script-sum 271230; 271230/23 = 11792,6 |
| **E3** | Σ l1 có-baseline **238176** / baseline **191948** / delta **+46228** | **ĐẠT** | [R1] 238176 ✓ 191948 ✓; 238176−191948 = 46228 |
| **E4** | NO-BASELINE = **6 vai** (3 ctx + 3 ring), đích danh | **ĐẠT** | [R1] set-difference cho ĐÚNG 6 tên đó, **orphan 0** |
| **E5** | 0/23 > 25600 · 0/23 > 30720 · cờ `l1_over_30kb` TRUE = 0 | **ĐẠT** | [R1] 0/0/0 + [R2] 0/23 over-cap (2 máy độc-lập) |
| **E6** | TRIO l1 **13835** (base 4676, +9159, ×2,96) | **ĐẠT** | 4492+4813+4530=13835; `budget.json:200-202` 1547+1616+1513=4676; 13835/4676=2,959 |
| **E7** | ZERO-DELTA ×3 (db-agent 7388 · fd 21492 · office-doc 3323) khớp **từng byte** | **ĐẠT** | [R1] live = `budget.json:190/196/197` baseline y hệt |
| **E8** | `tooling-auditor` **23464 = 91,7%** cap, vai l1 ĐỈNH fleet; impl-be tụt **21987 = 85,9%** | **ĐẠT** | 23464/25600 = 91,66%; max(23 row) = 23464; 21987/25600 = 85,89% |
| **E9** | *"Baseline `measured._note` WATCH đang trỏ **sai vai**"* (S-A2) + signal #7 *"WATCH-vai-đỉnh trong cùng `_note` (impl-be 23955)"* | 🔴 **TRƯỢT** | Parse JSON: `measured._note` **KHÔNG chứa 23955** (`-match '23955'` = **False**). Chuỗi *"WATCH: gần autoinject-cap nhất 23955/25600"* nằm ở **`measured."implementer-backend".rollout`, dòng `:189`**. WATCH thật trong `_note` là *"cicd l2_index 18774/20480 (~92% cap)"* (`-match '18774'` = **True**) — và chuỗi đó **vẫn đúng hướng** (nay 94,3%). ⇒ con-ĐO gán sai toạ-độ VÀ vu cho `_note` một lỗi nó không có |
| **E10** | baseline phủ **17/23 = 73,9%**, thiếu 6 row | **ĐẠT** | [R1] 17 row non-underscore (parse JSON, không grep); 17/23 = 73,9% |
| **E11** | cicd l2_index **19322/20480 = 94,3%**, dư **1158**, **+548** vs 18774 | **ĐẠT** | [R1] 19322; 20480−19322=1158; `budget.json:186` l2_index 18774; 19322−18774=548 |
| **E12** | `budget.json:185 _note` vẫn khai trio *"SEED-STATE / vai chua chay lan nao / ~1.5KB"* | **ĐẠT** | đọc `_note` verbatim — có đúng mệnh-đề đó |
| **E13** | 3 field `rollout:200-202` vẫn *"S141 seed - first-run pending restart+consent"* | **ĐẠT** | `:200/:201/:202` đúng dòng, đúng chuỗi (con-ĐO cite chuẩn) |
| **E14** | harvest **19456** (+1374 vs baseline 18082) | **ĐẠT** | [R1] 19456; `budget.json:192` l1_hot 18082; 19456−18082=1374 |
| **E15** | tín-hiệu (a): **111,1%** self-target 17510, delta **+1801** vs 17655 H2 tự khai | **ĐẠT** | [R6] tam-giác 3 số tự khớp; cite `budget.json:192` **ĐÚNG** và `harvest-curator/MEMORY.md:9` **ĐÚNG** |
| **E16** | lead-gap **19792** (+16101, ×5,36) · lead-stale **14078** (+10746, ×4,23) | **ĐẠT** | 19792−3691=16101, ÷=5,362; 14078−3332=10746, ÷=4,225 (`budget.json:198/199`) |
| **E17** | [I2] toàn khối mfe verbatim (36 · 28492 · 2,5% · FIT PASS · 25/14/15 · 23 dòng per-role) | **ĐẠT** | [R5] re-dựng cây cách-ly, **mọi số khớp**, kể cả 23 mẫu-số per-role |
| **E18** | S-B4: 23/23 = 100%, **phương-sai 0**, mẫu-số lệch **9×** (fd 2 vs impl-be 18) | **ĐẠT** | [R5] fd **2/2**, impl-be **18/18**, 21 vai còn lại đều 100% |
| **E19** | S-B5: mfe biết **23** vai / `measured{}` biết **17** ⇒ 2 đồng-hồ lệch roster | **ĐẠT** | [R5] 23 dòng per-role ⟂ [R1] 17 row baseline |
| **E20** | [I3] params + 0 over-cap + strike 0 + bảng `entries` + A7 **401/401/0** trên 10 sub | **ĐẠT** | [R2] khớp từng dòng, kể cả 10 con số pointer |
| **E21** | S-C3: 3 vai ctx `entries=0` trong khi bytes>0; *"Mọi vai khác ≥ 2 entries"* | **ĐẠT** | [R2] ctx 0/0/0; min của 20 vai còn lại = `ring4-audit` **2** ⇒ mệnh-đề "≥2" đúng khít |
| **E22** | [I4] 6 số crystallized | **ĐẠT** | [R3] 6/6 byte-exact |
| **E23** | S-D2: tok_high **53,5%** cap; STATUS **32,0%** + HANDOFF **21,9%** = **53,9%** hotload | **ĐẠT** | 203304/380000=53,5%; 195194/609913=32,0%; 133759/609913=21,9%; tổng 53,93% |
| **E24** | [I5] dòng NHIP-NO | **ĐẠT** | [R4] byte-exact |
| **E25** | S-E1: `light_every=6` `deep_every=15`, single-source ăn đúng | **ĐẠT** | probe in `1/6` `3/15`, khớp key trong `memory-budget.json` |
| **E26** | 3 tín-hiệu lead giao: (a) XÁC-NHẬN · (b) XÁC-NHẬN **+MỞ RỘNG 3→6** · (c) XÁC-NHẬN | **ĐẠT** | (a) [R6] · (b) [R1] 6 vai thiếu, `ring2-audit` **13964** đúng là vai không-baseline nặng nhất · (c) E12+E13 |
| **E27** | Provenance: *"[I4]+[I5] byte-exact 100% vs số lead"* | **KHÔNG-CHẠM-ĐƯỢC** | Tao dựng lại được **số MÁY** ([R3]/[R4] 0 lệch) nhưng **không có log lượt lead** trong tầm ⇒ vế *"vs lead"* không kiểm được. **KHÔNG chấm ĐẠT** cho phần tao không đo được |
| **E28** | Caveat 1: có ghi `.mfe-state.json` (tracked), `.archive-strikes.json` không đổi | **ĐẠT** | md5 hiện tại `54e111d9…` = đúng POST con-ĐO khai; `.archive-strikes.json` `4160ee71…` = PRE=POST. `git ls-files`: `.mfe-state.json` **tracked**, `.archive-strikes.json` **untracked** — đúng khai |
| **E29** | Caveat 4: trục tuổi/độ-tươi gist = **N/A**, `budget.json:42` tự khai thiếu máy | **ĐẠT** | `:42` = `_residual_khai_that`, đúng nội-dung 6 cặp gist stale + khai chưa có máy |
| **E30** | VERDICT tổng **MIXED**, không in HEALTHY/REGRESSION tổng | **ĐẠT** | Có trục thật nói ngược (headroom −33304, l2idx dư 1158) ⟂ 8 trục sạch bằng máy độc-lập ⇒ MIXED đúng, **không gộp che** trục lẻ |

**Con-ĐO: 28 ĐẠT · 1 TRƯỢT (E9) · 1 KHÔNG-CHẠM-ĐƯỢC (E27) trên 30 claim.**

---

## §3 VERDICT PER-CLAIM — con-ĐỀ-XUẤT (`harness-refine-return.md`)

| # | claim của con-ĐỀ-XUẤT | verdict | neo bằng-chứng |
|---|---|---|---|
| **R1** | Fail-closed gate: eval 24889 B / 264 dòng / END verbatim | **ĐẠT** | tao đo lại y hệt (§0) |
| **R2** | [V1] `memory-archive-gate.ps1:153` = `^#{2,3}\s`; `:143` khai đó là **chủ-đích** | **ĐẠT** | `:153` verbatim `if ($lines[$hi] -match '^#{2,3}\s')`; `:143` verbatim *"LOGICAL entries = HEADING markers ONLY (^#{2,3}\s) -- NOT the '---' separators"* |
| **R3** | [V1] *"đối chiếu cột `entries` máy in… quy-tắc parser **xác nhận**, không phải suy đoán"* | 🔴 **TRƯỢT** | Cột `entries` **hiển-thị** đến từ **hàm KHÁC**: `Get-EntryMarkerLineNumbers` (`:77-83`) khớp `^(#{2,3}\s\|---\s*$)` = **heading HOẶC `---`**, in tại `:131`. `:153` (`$logCount`) chỉ chạy **bên trong nhánh over-cap**, in tại `:208`. ⇒ refine đối chiếu **output hàm A** với **luật hàm B** rồi tuyên "xác nhận" |
| **R4** | [V1] ring1 *"4 (`^## `) \| 5 \| ✅ (máy tính cả `^### `)"* | 🔴 **TRƯỢT (BROKE)** | `grep -n '^#'` trên `ring1-audit/MEMORY.md` = dòng **1, 10, 18, 33, 38**; 10/18/33/38 đều là `## `, dòng 1 là `# ` ⇒ **0 dòng `^### `**. PowerShell đúng regex `:153` cho **4**. Nguyên-nhân thật = **1 dòng `---`**: ring1 4+1=**5** ✓máy · harvest 8+1=**9** ✓máy · tooling 9+1=**10** ✓máy. 🔴 **Hệ-thống, không phải ngoại-lệ** — nhưng harvest/tooling **không nằm trong bảng mẫu 11 dòng** của refine nên quy-luật bị che, và refine bịa 1 lời-giải-thích cho cái nó tưởng là ca lẻ |
| **R5** | [V1] 3 diary ctx có **0** heading h2/h3 | **ĐẠT** | PowerShell đúng regex `:153` → ctx-audit **0** · ctx-curator **0** · ctx-verifier **0** (và 0 dòng `---` ⇒ **cả hai** hàm đếm đều = 0 ⇒ kết-luận A1 **không bị R3/R4 làm hỏng**) |
| **R6** | [V1] hệ-quả code `:172` (`$logCount -le $keepFloor`) → `:201` *"cannot auto-drain"* | **ĐẠT** | đọc code: `0 -le 5` → `$warnFloor=$true`; `:201` verbatim đúng |
| **R7** | [V1] `:164` value-protect chạy trên 0 entry ⇒ **D3 hard-skip vô-hiệu** | **ĐẠT** | vòng `:157-170` bị chặn bởi `$logCount=0` ⇒ `$entProt` rỗng |
| **R8** | [V2] `_INDEX.md` = **19322 B** = `l2_index`; vẫn khai `Total 78 records` vs A7 đếm **101** (lệch **23**) | **ĐẠT** | `wc -c` = 19456→ **19322** ✓; dòng `:11` verbatim *"Total **78 records**"*; [R2] A7 cicd **101**; 101−78=23 |
| **R9** | [V2] *"**0 BYTE ĐỔI** kể từ S153"* ⇒ A1@S153 chưa chạy | **ĐẠT** | `git log -- _INDEX.md`: chạm gần nhất = **c2d01f0** (S152 closeout). Sau đó **0 commit** nào chạm ⇒ mệnh-đề đúng, thậm chí mạnh hơn |
| **R10** | [V2] *"attempt-1 = D1 ĐÃ chạy: 22634→19322"* | **ĐẠT** (số) | chuỗi `22634` truy được trong 5 file `runs/2026-07-25-S151-trio-memory/` ⇒ không bịa. *(nhãn "attempt-1" sai — xem R21)* |
| **R11** | [V3] **5/19** `*.gist.md` có `COVERAGE-TOKENS`, đích danh 5 file | **ĐẠT byte-exact** | `find` = **19** gist; `grep -l COVERAGE-TOKENS` = **5**, đúng 5 tên đó (cicd/harvest/inv-cb/reviewer/tooling `2026-07`) |
| **R12** | [V4] A3@S151 20933→**17655**; dư **145**; tái-phình **19456** (+1801) | **ĐẠT** | `harvest-curator/MEMORY.md:5` verbatim *"L1 **17.655B** > self-target 17.1KB"*; 17655−17510=145; [R6] 19456 |
| **R13** | [V4] *"`budget.json:191` rollout ghi lời hứa từ S107"* | 🔴 **TRƯỢT (toạ-độ)** | `:191` = **`test-specialist`**. `harvest-curator` ở **`:192`**. Nội-dung trích đúng verbatim, chỉ sai dòng. *(con-ĐO cite `:192` — ĐÚNG)* |
| **R14** | [V4] *"47 phiên chưa đóng"* (S107 → nay) | **ĐẠT** | 154 − 107 = 47 |
| **R15** | [V5] `:185` cấm hand-edit + re-sync 2026-08-01 · `:2` *"never hand-edit measured_bytes"* · `measure-agent-memory.ps1:41` chỉ `ConvertTo-Json` **stdout, 0 write-back** | **ĐẠT (cả 3)** | `:2` verbatim chứa *"never hand-edit measured_bytes."*; `:41` = `} \| ConvertTo-Json -Depth 5`; `grep -c "Set-Content\|Out-File\|WriteAllText"` = **0** ⇒ 0 write-back xác-nhận |
| **R16** | [V6] chuỗi WATCH 23955 nằm ở **field `implementer-backend.rollout`**, KHÔNG ở `_note` | **ĐẠT** | parse JSON: `_note -match '23955'` = **False**; field rollout = *"done (WATCH: gần autoinject-cap nhất 23955/25600)"*. 🔴 Đây là chỗ refine **bắt đúng lỗi E9 của con-ĐO** |
| **R17** | [V6]/[A2(c)] toạ-độ *"`:187` implementer-backend.rollout"* | 🔴 **TRƯỢT (toạ-độ)** | `:187` = **`investigator-codebase`**. `implementer-backend` ở **`:189`**. 🔴 Nặng vì [V6] tự khai mục-đích là *"Ghi ra để lead Edit **đúng dòng**"* — sai đúng cái nó hứa; lead làm theo literal sẽ sửa nhầm row |
| **R18** | [V6] `_note` có WATCH **KHÁC** (cicd 18774/20480 ~92%) vẫn ĐÚNG HƯỚNG ⇒ **KHÔNG được sửa** | **ĐẠT** | `_note -match '18774'` = **True**; nay 19322/20480 = 94,3% ⇒ chuỗi vẫn đúng hướng. Cảnh-báo "đừng sửa" là **đúng và cần** |
| **R19** | [V7] S144 return dòng-1 tự khai **"FIRST-RUN THẬT"** | **ĐẠT verbatim** | `head -1` = `# harness-refine — RETURN S144 (2026-07-22) — con ĐỀ-XUẤT, FIRST-RUN THẬT` |
| **R20** | [V7]/[V8] S144 có **"9 action-row"** | 🔴 **TRƯỢT** | Đếm nhãn bảng: **A1·A2·A3·A4 = 4**. Chính file S144 tự khai **2 chỗ**: caveat 3 *"**A1–A4** propose-only"* và caveat 7 *"**A1–A4** đều attempt = 1"*. ⇒ 9 sai hơn gấp đôi |
| **R21** | [V8] *"cicd `_INDEX` đã **2 lần** (D1@S151, A1@S153)"* | 🔴 **TRƯỢT** | S144 **A1** nhắm CHÍNH đối-tượng đó: *"Nén tại chỗ `_INDEX.md` cicd xuống dưới cap"* ⇒ **3 lần** (A1@S144 · D1@S151 · A1@S153), và lượt này là ca thứ **4**. 🔴 Lệch này khiến ESCALATE **E1 CÀNG chính-đáng** (nặng hơn refine trình bày), không nhẹ đi |
| **R22** | [V8] *"S151 9 · S152 2 · S153 3 action"* | **KHÔNG-CHẠM-ĐƯỢC** | 3 return đó dùng khuôn bảng khác (0 hit trên mọi mẫu nhãn tao thử) ⇒ **hết ngân-sách lượt, KHÔNG gật cho đủ** |
| **R23** | [V7] persona `.claude/agents/harness-refine.md` khai *"chạy THẬT từ S151"* (bản sao thứ BA) | **ĐẠT verbatim** | `:58` = *"🧊 vế first-run … hết hiệu-lực: **bộ-ba chạy THẬT từ S151**, AUTO 1 vòng/phiên @S151"* |
| **R24** | [V7] diary `:22` *"CHƯA chạy lần nào; first-run chờ restart-CLI…"* | **ĐẠT verbatim** | `sed -n '22p'` khớp từng chữ |
| **R25** | [E3] `## Luật cứng` có đúng **3 bullet**, **0** dòng TRIAGE-3-ô / re-cộng-số | **ĐẠT** | `:16` heading; `:17/:18/:19` = 3 bullet; `grep -ci TRIAGE` = **0** |
| **R26** | [B1] `memory-archive-gate.ps1:205` *"propose only after 2 consecutive over-cap"* | **ĐẠT verbatim** | `:205` = `"WATCH (strike $cur<$strikeNeed): re-run; propose only after $strikeNeed consecutive over-cap"` |
| **R27** | [B2] `HANDOFF.md:10` ⑤ = drift-audit **2026-08-01** + full re-sync `measured{}` (**+3 row ctx** ngoài 3 row ring) | **ĐẠT** | `:10` verbatim ⑤ *"monthly drift-audit **2026-08-01 (5 ngày)** + full re-sync `measured{}` (**+3 row ctx** ngoài 3 row ring…"* (refine chỉ lược "(5 ngày)") |
| **R28** | [B2] `reinject-ledger.md:12` build-gap ≠ floor-rot · `:5` budget = quyền owner · `:34` ledger **TRỐNG** | **ĐẠT (cả 3)** | `:12` verbatim *"Item chưa-từng-dựng = **build-gap**"*; `:5` verbatim *"`memory-budget.json` = **quyền cấp-ngân-sách của anh**… MFE + audit chỉ **đọc**"*; `:34` verbatim *"(chưa có floor-rot nào được reinject…)"* |
| **R29** | [B3] *"`budget.json:189` rollout ghi đã curate S96 + H17 strike-1 CLEARED"* | 🔴 **TRƯỢT (toạ-độ)** | `:189` = **`implementer-backend`**. `frontend-designer` ở **`:190`** — nội-dung trích đúng verbatim (*"done (S96 first-overflow curate; H17 strike-1 CLEARED)"*), chỉ sai dòng. **Lỗi thứ 3 cùng lớp** (R13/R17/R29) |
| **R30** | [B5]/[B6] `budget.json:42` tự khai trục tuổi gist **chưa có máy** | **ĐẠT** | `:42` = `_residual_khai_that`; `grep -c "CHUA CO MAY"` = **1** |
| **R31** | caveat 5 — **8 phép tự cộng** (13835·4676·2136·1158·1946·145·1801·3197) | **ĐẠT 8/8** | tao tính lại độc-lập cả 8: đúng hết. *(Đây là chỗ refine làm TỐT: nó tự cộng lại thay vì chép — và 8/8 đứng vững)* |
| **R32** | caveat 1 — *"đúng **1 file** ghi = chính return này, 0 file khác bị chạm"* | **ĐẠT** | `git status` lúc tao vào: chỉ `.session-counter.json` (có sẵn) + file tao ⇒ refine **không để lại vết ghi lạ** |
| **R33** | caveat 2 — *"1/3 action S153 land, **2 cái kia 0 byte đổi**"* | **ĐẠT (vế đo được)** | 2 cái không-land đo trực-tiếp: [V2] `_INDEX` 0-byte-đổi (R9) + [V3] gist vẫn 5/19 (R11) |

**Con-ĐỀ-XUẤT: 25 ĐẠT · 7 TRƯỢT (R3·R4·R13·R17·R20·R21·R29) · 1 KHÔNG-CHẠM-ĐƯỢC (R22) trên 33 claim.**

🔴 **Cụm TRƯỢT có HÌNH-DẠNG, không rải đều — 2 lớp:**
1. **Toạ-độ dòng trong `memory-budget.json`** (R13 `:191`→192 · R17 `:187`→189 · R29 `:189`→190). **3/3 cite dòng của refine vào file này đều lệch 1-2 dòng**, trong khi **mọi** cite vào `.ps1` / `HANDOFF` / `reinject-ledger` / diary đều **ĐÚNG**. Mùi: refine đọc budget.json bằng một phép đánh-số **lệch hệ** (khả năng cao: đếm trên bản đã lọc/xén, hoặc suy dòng từ thứ-tự field thay vì đọc số dòng thật). 🔴 Đây là file mà A2 **đề-nghị lead Edit** ⇒ rủi ro sửa nhầm row là THẬT.
2. **Bookkeeping lịch-sử** (R20 9→4 · R21 2 lần→3 lần). Cả hai đều ở [V7]/[V8] = nền của toàn-bộ logic chốt-dừng. **Nhưng lệch theo hướng LÀM NHẸ quá-khứ** ⇒ kết-luận escalate vẫn đúng (thậm chí đúng hơn).

---

## §4 CHẤM 3 ESCALATE — chính-đáng hay né việc?

| # | escalate | phán | lý-lẽ (tao tự kiểm, không theo lời khai) |
|---|---|---|---|
| **ES1** | E1 `cicd-monitor/archive/_INDEX.md` → cửa **LEAD** | ✅ **CHÍNH ĐÁNG — và nhẹ hơn thực-tế** | Tiền-đề đo được: 19322 = 19322, `git log` xác-nhận **0 commit** chạm file sau S152-closeout. Đề-xuất đã bắn **3 lần** (không phải 2 — R21) ⇒ lần 4 đúng là lặp vô-ích. **KHÔNG né việc**: nó vẫn giao lead đủ để quyết NGAY — 2 lối ra rõ ({thực-thi nguyên-văn \| HỦY vì đã dưới cap 20480}), bối-cảnh cấp-thiết (dư **1158 B**, vai TĂNG-mỗi-run), và ràng *"nếu HỦY **phải ghi rõ**, không thì vòng sau lại đào lên"* = **đóng vòng**, đúng thuốc cho lặp-vô-hạn. Cửa LEAD đúng (0 số/policy đổi) |
| **ES2** | E2 `harvest-curator/MEMORY.md` → cửa **OWNER** | ✅ **CHÍNH ĐÁNG** | Đúng lớp "đã-thực-thi-mà-vẫn-không-đạt": cơ-chế drain **chứng minh chạy được** (20933→17655) nhưng **chưa bao giờ chạm đích** (dư 145 B) rồi tái-phình 19456 = 111,1% ([R6] 3 số tự khớp). 3 lối ra nó liệt (nâng target · đổi nhịp · đổi placement) **đều là SỐ/nhịp = quyền owner**, neo `reinject-ledger.md:5` (verbatim đúng) ⇒ **từ chối chọn hộ số là ĐÚNG RANH, không phải né**. Thêm điểm: nó tự khai counter-datum **bất-lợi cho mức khẩn của chính nó** — *"dưới cap hệ-thống (76,0%), strike 0 ⇒ 0 sức ép máy, chỉ vi-phạm ngưỡng vai TỰ đặt"* (tao xác-nhận: [R1] 19456 < 25600, [R2] strike 0). Khai đúng cái làm yếu case của mình = dấu hiệu không né |
| **ES3** | E3 N1+N2@S152 trong `harness-refine/MEMORY.md` → cửa **LEAD** | ✅ **CHÍNH ĐÁNG (có bảo-lưu)** | Đo đĩa đúng (R25: `## Luật cứng` **3 bullet**, `grep -ci TRIAGE` = **0**). ⚠️ Bảo-lưu: đối-tượng là **diary của CHÍNH NÓ** và cửa LEAD ⇒ về hình-thức có mùi tự-miễn. Nhưng nó **tự khai thẳng phần bất-lợi**: *"tao VẪN áp cả 2 luật trong lượt này… chúng sống trong **hành-vi**, chưa sống trong **file**; ai không đọc return S152 thì mất"* — tự tố rằng luật đang chạy bằng trí-nhớ chứ không bằng vật. 🔴 **Việc lead cần thấy**: ES3 (escalate) và **A3(ii)** (action mới) **cùng nhắm 1 file diary** đã có tiền-sự không-land ⇒ nếu A3(ii) cũng không land thì đó là **lỗi cơ-chế đặt-chỗ**, đúng như refine tự đoán |

⇒ **3/3 ESCALATE chính-đáng. 0 ca né việc.** Dấu hiệu chung: cả 3 đều **giao lại lối ra cụ-thể** + **neo được bằng đo**, không phải "đẩy lên trên cho xong".

---

## §5 CHẤM 8 BÁC + 4 NHƯỜNG

**8 BÁC — có lý-lẽ hay bác cho gọn?** ⇒ **8/8 có lý-lẽ neo được. 0 ca bác-cho-gọn.**

| # | phán | vì sao |
|---|---|---|
| **B1** tooling-auditor archive | ✅ **lý-lẽ MẠNH** | Neo **luật của MÁY**, không phải ý-thích: `:205` verbatim *"propose only after 2 consecutive over-cap"*, mà [R2] cho **strike 0 / 0 over-cap**. Phân-biệt sắc với E2 (H2 có ngưỡng TỰ-ĐẶT **ghi trong config** đang bị vượt; tooling **không có ngưỡng nào bị vượt**) — đúng, tao xác-nhận `budget.json:193` tooling **không** mang self-target. Và nó chuyển sang việc đúng (A2(c) sửa WATCH) thay vì bỏ trắng |
| **B2** bơm 6 row `measured{}` | ✅ **lý-lẽ** | 3 neo verbatim đúng hết: `HANDOFF:10 ⑤` (đã queue) · `budget.json:185`+`:2` (cấm hand-edit) · `reinject-ledger:12` (build-gap ≠ floor-rot ⇒ không được vào ledger). **Giữ vế nợ**: *"sau 2026-08-01 mà vẫn 17 row ⇒ lúc đó mới là nợ thật"* ⇒ **không xoá tín-hiệu**, chỉ hoãn đúng lịch |
| **B3** frontend-designer archive | ✅ **lý-lẽ** | 0-delta **tuyệt đối** — tao xác-nhận byte-exact 21492 = 21492 ⇒ 0 tăng-trưởng ⇒ archive một diary bất-động = 0 lợi đo được. *(cite `:189` sai dòng — đã trừ ở R29)* |
| **B4** trend Σ l1 +24,1% | ✅ **lý-lẽ SẮC NHẤT** | Nó **không cãi số**, nó cãi **tính so-sánh-được**: baseline là **HỖN-MỐC** (S107 + 2 row @S138 + 3 row @S141) ⇒ cộng delta xuyên 3 mốc rồi gọi "xu-hướng" = so lệch-mốc. Tao xác-nhận `_note` tự khai **đúng 3 mốc** đó. 🔴 Đây chính là lane *"số không có máy canh"* lead dặn soi — và refine đã tự soi ra. Nó vẫn công-nhận số con-ĐO **không sai**, chỉ **không neo action** lên nó ⇒ giữ được counter-datum |
| **B5** 14 gist COVERAGE-TOKENS | ✅ **lý-lẽ** | Đo được (5/19, R11) + chốt-dừng + khai thêm *"trục tuổi N/A ⇒ **không có số để neo cường-độ**"* — từ chối bịa mức khẩn |
| **B6** dựng máy đo tuổi gist | ✅ **đúng ranh** | Ngưỡng = quyền OWNER; dựng máy = lane **tooling**. Nêu-để-trỏ, **không nhân bản** |
| **B7** "sửa" mfe bão-hoà | ✅ **đúng ranh** | Chỗ sửa nằm **trong `mfe-eval.ps1`** ⇒ lane tooling. Vẫn **giữ 1 câu cảnh-báo** để không ai đọc lệch *"fd 2/2 và impl-be 18/18 không cùng nghĩa"* — tao xác-nhận [R5] đúng 2 vs 18 |
| **B8** sửa persona | ✅ **đúng ranh** | role-file ≠ agent-memory corpus. Và nó nêu để lead **vá CLASS** (bản sao thứ 3 của cùng mệnh-đề sai) — tao xác-nhận persona `:58` verbatim đúng như trích (R23) |

> Đáng ghi: **4/8** (B1·B2·B6·B7) bác bằng cách chỉ ra **luật/ngưỡng của người khác** (máy, HANDOFF, ledger, owner) chứ không bằng ý-thích ⇒ kiểu bác khó phản-bác nhất.

**4 NHƯỜNG — đúng turf?** ⇒ **4/4 ĐÚNG.**

1. **crystallized headroom → `lead-gap-auditor`/owner: ĐÚNG.** [R3] cho thấy headroom đo trên `hotload_sources` = STATUS · HANDOFF · ACTIVE-MARKS · migration-todos · gotchas · agents/README = **lead session hot-feed surface**, KHÔNG phải per-role agent-memory corpus ⇒ ngoài turf refine, đúng turf H24. Và nó **TRỎ** bookend 10 FLAG thay vì nhân bản.
2. **Instrument validity → `tooling-auditor`: ĐÚNG** (sửa nằm trong `.ps1`).
3. **Cửa-lật của A1 → `tooling-auditor`: ĐÚNG, và là NHƯỜNG TỐT NHẤT** — nó khai sẵn cửa để lead đảo hướng *"mà không cần chạy lại gì"*. 🔴 **Phát-hiện R3/R4 của tao khiến cửa này NÊN ĐƯỢC MỞ**: script có **HAI hàm đếm entry lệch nhau** (`:80` heading-hoặc-`---` ⟂ `:153` heading-only, dù `:143` khai `---` bị loại **có chủ-đích**) ⇒ có mùi **lỗi parser thật**, không chỉ lỗi diary. Chính refine đã để sẵn đường thoát mà không biết mình cần nó.
4. **harvest-op → `harvest-curator` H2: ĐÚNG** — E2 chỉ đưa ngưỡng lên owner, không tự curate. *(Tao cũng NHƯỜNG đúng chỗ này.)*

---

## §6 FALSIFY-LOG (nghĩa-vụ iii) — mỗi phép đều thử PHÁ

| # | phép thử phủ-định (tao cố phá) | kết |
|---|---|---|
| F1 | *"Lead pin sai folder / artifact chưa đóng"* → `test -d` + `test -s` + `wc -c` + `tail -1` cả 2 file | **HELD** — 24889/20585, 264/109, 2 END đúng dòng cuối |
| F2 | *"3 vai chạy SONG SONG ⇒ audit chấm bản cũ"* → đọc mtime-chain | **HELD** — 18:36 → 18:45 → 19:03 → tao. Tuần-tự thật |
| F3 | *"Con-ĐO chép số từ trí-nhớ / phiên trước"* → re-chạy **5 instrument** đối-chứng ~60 số | **HELD** — 0 lệch. Con-ĐO **không** bịa số nào |
| F4 | *"19456 là số H2 tự khai, không phải số đo"* → đo bằng **3 nguồn độc-lập** (`wc -c` + `measure` + `archive-gate`) | **HELD** — cả 3 ra 19456 |
| F5 | *"Tam-giác 19456/17510/17655 không tự khớp"* → tính lại 3 hiệu + 1 tỷ-lệ | **HELD** — 1946 · 111,1% · +1801 đều đúng; 17,1×1024 = 17510,4 |
| F6 | *"`measured{}` không phải 17 row — con-ĐO đếm bằng grep nên sai"* → **parse JSON** (không grep), loại key `_*`, làm set-difference | **HELD** — đúng 17, thiếu **đúng 6** tên đó, **orphan 0** |
| F7 | *"Cột `entries` máy in ĐÚNG là `$logCount` của `:153` như refine nói"* → truy code-path in bảng | 🔴 **BROKE** — cột hiển-thị đến từ `Get-EntryMarkerLineNumbers` (`:80`), khớp `^(#{2,3}\s\|---\s*$)`. Refine sai hàm |
| F8 | *"ring1 lệch 4-vs-5 vì máy đếm cả `^### ` (lời refine)"* → liệt **mọi** dòng bắt đầu `#` trong ring1 | 🔴 **BROKE** — 0 dòng `^###`. Thật là **1 dòng `---`**. Thử tiếp trên 2 vai refine KHÔNG tabulate: harvest 8+1=9 ✓ · tooling 9+1=10 ✓ ⇒ **quy-luật hệ-thống bị mẫu-nhỏ che** |
| F9 | *"R3/R4 vỡ ⇒ ACTION A1 cũng vỡ"* → kiểm xem ctx có khác 0 dưới **hàm kia** không | **HELD (A1 SỐNG)** — ctx có **0 heading VÀ 0 dòng `---`** ⇒ **cả hai** hàm đều = 0 ⇒ tiền-đề A1 đứng vững. **Phương-pháp sai, kết-luận đúng** |
| F10 | *"`_note` đúng là chỗ chứa WATCH impl-be như con-ĐO nói"* → `-match '23955'` trên `_note` | 🔴 **BROKE** (bắt lỗi con-ĐO E9) — False; nó ở `implementer-backend.rollout` `:189`. `_note` thật chứa 18774 và **vẫn đúng hướng** |
| F11 | *"Toạ-độ dòng của refine trong budget.json đúng"* → `sed -n '187p/189p/190p/191p/192p'` | 🔴 **BROKE ×3** — `:187`=inv-cb (không phải impl-be) · `:191`=test-spec (không phải harvest) · `:189`=impl-be (không phải fd). **3/3 cite budget.json lệch** |
| F12 | *"Refine cite dòng ẩu ở MỌI file"* (thử tổng-quát-hoá F11) | **HELD — KHÔNG tổng-quát-hoá được** | `.ps1` (`:143·:153·:164·:172·:201·:205`), `HANDOFF:10`, `reinject-ledger:5/12/34`, diary `:5/:9/:22`, `measure…ps1:41` — **đúng hết**. Lệch **chỉ** ở `memory-budget.json` ⇒ lỗi có **địa-chỉ**, không phải cẩu-thả toàn-cục |
| F13 | *"S144 thật có 9 action như refine khai"* → đếm nhãn bảng + đọc caveat tự-khai của S144 | 🔴 **BROKE** — **4** (A1–A4), chính S144 tự khai 2 chỗ |
| F14 | *"cicd `_INDEX` mới là đối-tượng 2 lần"* → mở S144 xem A1 nhắm gì | 🔴 **BROKE** — S144-A1 = *"Nén tại chỗ `_INDEX.md` cicd"* ⇒ **3 lần**, lượt này là ca **4** |
| F15 | *"R20/R21 sai ⇒ ESCALATE E1 sập"* → thử lật chiều kết-luận | **HELD (E1 MẠNH HƠN)** — lệch theo hướng **làm NHẸ** quá-khứ; sửa đúng thì E1 càng chính-đáng |
| F16 | *"refine để lại vết ghi lạ (Bash = kênh-ghi-mở)"* → `git status` + `git ls-files` | **HELD** — chỉ `.session-counter.json` (có sẵn) + file tao. Refine sạch |
| F17 | *"chính TAO để lại vết khi re-chạy 5 instrument"* → md5 `.mfe-state.json` + `.archive-strikes.json` trước/sau + `git status` | **HELD** — `54e111d9…` = `54e111d9…`; `4160ee71…` không đổi; `git status` không thêm dòng nào ngoài file tao. **mfe chạy trên cây cách-ly `-RepoRoot`** |
| F18 | *"8 phép tự-cộng của refine có cái sai"* → tính lại độc-lập cả 8 | **HELD 8/8** |
| F19 | *"Verdict MIXED của con-ĐO là gộp-che trục lẻ"* → soi §2 (14 trục) vs §4 (12 signal) vs END | **HELD (có 1 caveat)** — 12 = số item §4, 14 = số dòng bảng §2; END khai `TOTAL=12 SIGNAL` khớp §4. ⚠️ Nhưng §6 viết *"MIXED — 12 signal"* rồi liệt *"4 REG · 2 MIXED · 8 HEALTHY"* = **14**; đọc nhanh dễ tưởng 4+2+8 = 12. **Không sai**, nhưng lead nên bắt con-ĐO **tách rõ 2 mẫu-số** ở lượt sau |

**16 phép: 11 HELD · 5 BROKE** (F7·F8·F10·F11·F13·F14 — F11 tính **1 phép** dù bắt 3 ca).

---

## §7 KHÔNG-CHẤM (khai thẳng, CẤM gật cho đủ)

1. **E27** — vế *"[I4]+[I5] byte-exact **vs số lead**"*: tao dựng lại **số máy** (0 lệch) nhưng **không có log lượt lead** trong tầm ⇒ vế đối-chiếu-với-lead **không kiểm được**.
2. **R22** — *"S151 9 · S152 2 · S153 3 action"*: 3 return đó dùng khuôn bảng khác, hết ngân-sách lượt để bóc từng file.
3. **Ngoài trục — escalate lead, tao KHÔNG tự chấm:** `memory-archive-gate.ps1` có **2 hàm đếm entry lệch nhau** — `Get-EntryMarkerLineNumbers` `:80` = `^(#{2,3}\s|---\s*$)` (nuôi **cột hiển-thị**, mọi 23 vai) ⟂ `:153` = `^#{2,3}\s` (nuôi **planner**, chỉ nhánh over-cap), trong khi `:143` khai loại `---` là **có chủ-đích**. ⇒ Bảng người đọc và bảng máy-quyết-định **không cùng một định-nghĩa "entry"**. Đây là **code-defect**, thuộc `tooling-auditor` (đúng cửa-lật NHƯỜNG-3 của refine) — tao **nêu verbatim, không tự chấm**.

---

## §8 CAVEAT BẮT BUỘC (chống overclaim)

1. 🔴 **read-only = chặn-THIẾU-tool, KHÔNG phải sandbox.** Lượt này tao ghi **đúng 1 file** trong repo = chính return này (+ 1 cây tạm ngoài repo ở scratchpad). Chứng: `git status` sau lượt tao chỉ có `.session-counter.json` (**có sẵn từ trước lượt tao**) + file này. **Containment THẬT = lead soát `git status`** — đừng tin chữ "read-only". Tao **PHÁN**, lead single-writer **GHI**.
2. 🔴 **pin-based:** tao chấm ĐÚNG folder lead PIN, **không tự tìm run mới nhất**. Nếu lead pin sai, verdict này vô-giá-trị — nhưng tao đã verify byte/END khớp con số lead tự khai nên rủi-ro đó đã đóng.
3. 🔴 **Ranh giữ:** 0 chấm diff-code (reviewer) · 0 soi lead-surface (2 vai H24) · 0 thao-tác harvest (NHƯỜNG H2). §7.3 là **INFORM cho lead**, không phải verdict của tao.
4. 🔴 **Meta-count = lane tao từng ngã (S151/S153).** Mọi tổng ở đây tao **cho script cộng** hoặc tính lại tay **2 lần**; 78 = 30+33+3+8+4 và 68+8+2 = 78 (kiểm chéo 2 chiều).

---

## §9 VERDICT TỔNG — KHÔNG gộp che claim TRƯỢT lẻ

**68 ĐẠT / 8 TRƯỢT / 2 KHÔNG-CHẤM trên 78 claim** · falsify **16 phép: 11 HELD / 5 BROKE** · re-chạy **5 instrument, ~60 số → 0 LỆCH**.

- **con-ĐO (`harness-eval`)**: **28Đ / 1T / 1KC / 30**. 🔴 Chất-lượng ĐO **rất cao** — 5 máy re-dựng độc-lập, **0 số nào lệch**. Lỗi duy-nhất (**E9**) là lỗi **TOẠ-ĐỘ + quy-kết**, không phải lỗi số: nó gán WATCH-impl-be cho `_note` và tuyên `_note` "trỏ sai vai", trong khi `_note` mang một WATCH **khác** và **vẫn đúng**.
- **con-ĐỀ-XUẤT (`harness-refine`)**: **25Đ / 7T / 1KC / 33**. Quyết-định (3 ESCALATE · 8 BÁC · 4 NHƯỜNG) **đứng vững 15/15**; TRƯỢT dồn vào **2 lớp có địa-chỉ**: (i) **3/3 cite dòng vào `memory-budget.json` đều lệch** — đúng file mà A2 xin lead Edit; (ii) **bookkeeping lịch-sử lệch theo hướng làm-nhẹ quá-khứ** (S144 9→4; `_INDEX` 2→3 lần).
- **Điều mỉa-mai đáng ghi nhất:** [V6] của refine **bắt đúng** lỗi toạ-độ của con-ĐO (E9) rồi **tự sai toạ-độ** ở chính câu sửa (R17). Cả hai vai đều đúng về **số**, cùng sai về **chỗ**.
- **Điều nguy nhất cho lead:** nếu lead thực-thi **A2(c) theo literal `:187`** thì sẽ sửa nhầm row `investigator-codebase`. 🔴 **Toạ-độ đúng: `:189`** (`implementer-backend.rollout`) — và **KHÔNG được đụng `:185` `_note`**, vì WATCH trong đó (cicd 18774/20480) **vẫn đúng hướng**.

🔴 **KHÔNG in verdict-tổng gộp.** 8 claim TRƯỢT ở trên đứng riêng từng dòng; 2 ô KHÔNG-CHẤM để trống thật, không gật cho đủ.

<!-- END harness-audit-S154 · TOTAL=78 CLAIM · ĐẠT=68 TRƯỢT=8 -->
