# harness-eval — RETURN S144 (2026-07-22) — con ĐO, FIRST-RUN THẬT

> Lead scribe nguyên văn return @W1, ngay khi con ĐO trả (§2.1.9(c) — vai không có Write).
> 6/6 instrument chạy tươi, 0 lỗi, 0 `probe-loi`. **Đối chứng 4 mốc lead: 0 LỆCH.**

## PHẦN 1 — SỐ NGUYÊN VĂN

### 1.1 `measure-agent-memory.ps1` — 17 agent (`soft_cap 30720` · `autoinject_cap 25600`)

| agent | l1_hot | l2_verbatim | l2_index | l2_gist |
|---|---|---|---|---|
| cicd-monitor | 22607 | 226307 | **22108** | 40303 |
| database-agent | 7388 | 0 | 0 | 0 |
| frontend-designer | 21492 | 6624 | 1531 | 3231 |
| harness-audit | 1513 | 0 | 0 | 0 |
| harness-eval | 1547 | 0 | 0 | 0 |
| harness-refine | 1616 | 0 | 0 | 0 |
| harvest-curator | 17175 | 67374 | 0 | 20317 |
| implementer-backend | 19449 | 75787 | 10105 | 23079 |
| implementer-frontend | 15951 | 25581 | 0 | 11125 |
| investigator-api | 8510 | 0 | 0 | 0 |
| investigator-codebase | **26624** | 147348 | 12384 | 43854 |
| lead-omission-auditor | 9680 | 0 | 0 | 0 |
| lead-view-auditor | 6610 | 0 | 0 | 0 |
| office-document | 3323 | 0 | 0 | 0 |
| reviewer | 17784 | 142689 | 13780 | 35098 |
| test-specialist | 22140 | 18065 | 0 | 5374 |
| tooling-auditor | 18534 | 66747 | 0 | 18760 |

Tổng (số-học của con ĐO trên số máy in): l1_hot **221.943** · l2_verbatim **776.522** · l2_gist **201.141** B.

🔴 **BẪY GOODHART ĐÃ CHẶN:** cột `l1_over_30kb` in `false` cho investigator-codebase. `false` đúng theo **soft_cap 30720**, KHÔNG theo **autoinject_cap 25600**. 26624 > 25600 ⇒ file **KHÔNG lọt trọn auto-inject**. **CẤM đọc `false` này thành HEALTHY.**

### 1.2 `mfe-eval.ps1`
```
lead cap 380000 tok | mem-sub cap 60000 tok
[LEAD] marks(Active+High)=9 AS-classes=15 net-extra-guards=5 net-extra-recurring-gotchas=7
   => DENOMINATOR = 36 items
[LEAD] Coverage-FIT: span 28057 B => ~7014-9352 tok / 380000 = 2,46% worst-case  FIT = PASS
[LEAD] age-band: marks parseable=9; >30d nhưng vẫn Active=4 -> KEPT
[LEAD] Goodhart anchor: strikes_total=23 RCA=12 AS-classes=15 last_run_strikes=23
```
Per-role: **100% (8 vai)** cicd 10/10 · frontend-designer 2/2 · harness-audit 5/5 · harness-eval 5/5 · harness-refine 5/5 · lead-omission 6/6 · lead-view 6/6 · test-spec 6/6.
**<100% (5 vai)** impl-be 17/18=94% · inv-cb 7/8=88% · reviewer 7/8=88% · inv-api 6/7=86% · impl-fe 11/13=85%.
**N/A — không rút được mẫu-số (4 vai)** database-agent · harvest-curator · office-document · tooling-auditor.
Cộng dồn **93/99 = 93,9% — chỉ trên 13/17 vai**.

### 1.3 `memory-archive-gate.ps1` (DRY-RUN)
```
cap 25600 | low-water 21760 (0.85) | keep-floor 5 | strike-need 2
PASS 1: investigator-codebase 26624 YES entries 15 strike 1 after-est ~24830
        WATCH (strike 1<2) ; 6 value-protected entries HARD-SKIPPED
16/17 còn lại: over?=no strike 0
[A6] DRY-RUN: strike counters NOT persisted
PASS 2 (A7): cicd 99/99 · frontend-designer 0/0 · impl-be 41/41 · inv-cb 55/55 · reviewer 56/56
        A7 GATE PASS — 251 pointers, 251 resolved, 0 failed
```

### 1.4 `crystallized-backfill.ps1`
```
STATUS 170744 | HANDOFF 96043 | ACTIVE-MARKS 30145 | migration-todos 84679
gotchas 111616 | agents/README 47497        TOTAL 540724 B
cap 380000 | tok RANGE [135181 .. 180241] | measured_headroom 199759
target (owner) 210000 | expected_backfill 199759  => headroom binds (target exceeds room)
```

### 1.5 `nhip-no-probe.ps1`
```
NHIP-NO: kiem light 1/6 deep 1/15 ok | tran-bo-nho 1 over-cap | run-chua-gom 2 | pull-cach 2 ngay
```

### 1.6 `distill-shard-probe.ps1` (MỚI phiên này — C11)
```
SHARD-PROBE: pending=15 | nguong=7 => KEU
```
Kiểm tập-đo: đọc `distill-shard-probe.ps1:40-43` — loại trừ tường minh `_INDEX.md` + `*.gist.md`; ngưỡng đọc LIVE (`:29`). **Tập-đo SẠCH**, 15 khớp `_dinh_nghia_shard` trong budget. Con ĐO **không** tự viết lệnh đếm song song.

## PHẦN 2 — SO BASELINE (trích các trục có delta đáng kể)

🔸 **Cảnh báo đọc delta (bắt buộc cho con ĐỀ-XUẤT):** khối `measured` trong budget TỰ KHAI nhiều row là ảnh-chụp S107/S138 đã trôi, chờ full re-sync **2026-08-01**. Nên `delta vs row` = **trôi-so-với-sổ**, TRỘN tăng-trưởng thật với tụt-hậu-của-sổ.

**2.a l1_hot** — vượt autoinject: **1/17** (inv-cb 26624 = **104,0%**, +1024). Vượt soft-cap: **0/17**. Roster 17 row vs 17 đo ⇒ **0 drift danh-sách**.
Đối xứng đáng chú ý: reviewer **−6240** L1 (đã curate L1→L2) ⟂ inv-cb **delta vs S141 = 0** ⇒ **kẹt trên cap, chưa được xử qua ít nhất 1 nhãn-phiên**.

**2.b l2_index vs cap 20.480** — 🔴 **cicd-monitor 22108 = 107,9% VƯỢT (+1628)**. Budget tự ghi WATCH *"cicd l2_index 18774/20480 (~92% cap)"* ⇒ **mốc WATCH ĐÃ VỠ**. Và **không instrument nào gác trục này**: archive-gate PASS 1 chỉ soi L1 vs autoinject-cap; A7 soi pointer-resolve không soi kích-thước; `tran-bo-nho` chỉ đếm `MEMORY.md`.

**2.c l2_verbatim/gist (no-cap)** — verbatim 580.737 → **776.522** (+195.785) · gist 118.957 → **201.141** (+82.184). 2 vai mới có gist.

**2.d archive_gate params** — 4/4 khớp budget, **0 drift config**. Hai quan sát:
1. `after-est ~24830` **> low-water 21760** ⇒ drain nếu nổ **không chạm** mục tiêu hysteresis A4; đệm dưới cap chỉ ~770 B (do 6 entry value-protected HARD-SKIP).
2. `strike 1` + `NOT persisted` + **`.claude/agent-memory/.archive-strikes.json` KHÔNG TỒN TẠI** ⇒ ở chế-độ DRY-only strike **không bao giờ tiến tới 2** ⇒ nhánh PROPOSE của A6 **bất-khả-đạt** trừ khi `-Apply`.

**2.e crystallized** — headroom **199.759 < target 210.000** ⇒ **ĐẢO CHIỀU lần đầu** (S115: target 210K < headroom ~253,7K). Δ **−53,9K**. Số-học: floor worst-case 180.241 + target 210.000 = **390.241 > cap 380.000** (âm 10.241); đầu lạc-quan 135.181+210.000 = 345.181. Dải **vắt ngang trần**.

**2.f MFE** — cap khớp live; strikes **23 = 23 (không leo)**; RCA 12=12. per-role coverage **KHÔNG CÓ BASELINE LƯU** ⇒ **N/A, không so được**.

**2.g cadence** — `light_every 6`/`deep_every 15` khớp probe; nợ 1/6 và 1/15 ⇒ **ok**. `pull-cach 2 ngay` không hậu-tố OVERDUE.

## PHẦN 3 — VERDICT PER-TRỤC

| # | trục | verdict |
|---|---|---|
| T1 | l1_hot vs autoinject-cap | **MIXED** — 16/17 lành, inv-cb kẹt 104% và **delta S141 = 0** |
| T2 | **l2_index vs cap** | **REGRESSION** — cicd 107,9%, WATCH-92% đã vỡ, **0 cửa gác** |
| T3 | l2_verbatim/gist (no-cap) | **HEALTHY** |
| T4 | archive-gate strike + A7 | **MIXED** — A7 251/251 PASS nhưng chỉ phủ **5/9 vai có archive = 77,1% bytes**; strike bất-khả-tiến |
| T5 | **crystallized headroom** | **REGRESSION** — headroom < target lần đầu; floor+target vượt trần |
| T6 | MFE FIT + coverage | **HEALTHY (3 caveat)** |
| T7 | **distill shard (C11 mới)** | **REGRESSION** — 15 vs 7 = 214%. *Caveat: ngưỡng vừa đặt hôm nay, **không có chuỗi-thời-gian** ⇒ là VỠ-NGƯỠNG, chưa chứng-minh "xấu đi"* |
| T8 | nhịp/cadence + pull | **HEALTHY** |

🔴 **3 caveat gắn T6 — CẤM bỏ khi trích lại:**
1. Trio 5/5 = 100% mỗi vai — nhưng diary là **SEED 1,5KB chưa chạy**. Mẫu-số rút từ chính khối anti-pattern của role-file mà seed được viết để soi gương ⇒ **đo "seed khớp spec của chính nó"**, KHÔNG đo giữ-trí-nhớ-xuyên-phiên. **Đừng đọc thành bằng chứng hệ nhớ khoẻ.**
2. 4 vai **N/A** = vùng **không đo được**, không phải vùng đạt.
3. `judge_layer` vẫn là **SCAFFOLD rỗng** — nhánh recall/apply chưa có điểm thật.

🔴 **Caveat T4:** "A7 PASS 251/251" đúng nguyên văn nhưng phạm vi **5/9 vai**. 4 vai (harvest-curator 67374 · tooling-auditor 66747 · impl-fe 25581 · test-spec 18065 = **177.767 B**) có archive mà **không có `_INDEX.md`** ⇒ ngoài tầm soi pointer. **PASS thật, KHÔNG toàn phần.**

## VERDICT TỔNG: **MIXED**
3 REGRESSION (T2·T5·T7) · 2 MIXED (T1·T4) · 3 HEALTHY (T3·T6·T8).
Trục vỡ đều là **trần/ngưỡng bị vượt**, KHÔNG phải hỏng toàn-vẹn — mọi phép integrity chạy được đều PASS (A7 251/251, cadence ok, strikes không leo).

## PHẦN 4 — TÍN-HIỆU cho con ĐỀ-XUẤT (chỉ tín-hiệu + số, KHÔNG action)

| # | tín-hiệu | số neo |
|---|---|---|
| S1 | l2_index cicd vượt cap | 22108/20480 = 107,9%, dư 1628 — **không cửa gác nào bắt** |
| S2 | L1 inv-cb kẹt trên cap | 26624/25600; **delta vs S141 = 0**; reviewer cùng kỳ tụt −6240 ⇒ cơ-chế rút CÓ hoạt động nơi khác |
| S3 | headroom tụt dưới target owner | 199.759 < 210.000; −53,9K vs S115; 180.241+210.000 = 390.241 > 380.000 |
| S4 | shard vỡ ngưỡng mới | 15 vs 7 = 214%; cicd ×4 + impl-be ×4 + 7 nữa |
| S5 | strike A6 **bất-khả-tiến** | strike 1, need 2, NOT persisted, `.archive-strikes.json` **không tồn tại** ⇒ nhánh PROPOSE chưa từng có cơ hội nổ |
| S6 | A4 hysteresis không đạt nếu drain nổ | after-est 24830 > low-water 21760; đệm ~770 B; value-gate kéo ngược mục-tiêu drain |
| S7 | 4 vai archive **không có `_INDEX`** | 177.767 B = **22,9% bytes archive** ngoài tầm A7 đang in PASS |
| S8 | coverage cao hơn mức nó chứng minh | 93/99 chỉ trên 13/17; trio 100% là seed-tự-soi |
| S9 | 5 vai coverage <100% | mỗi vai thiếu 1-2 mục; **MFE không lưu baseline** ⇒ không nói được tốt lên hay xấu đi |
| S10 | **KHÔNG PHẢI VIỆC CON ĐO — chuyển H2** | `run-chua-gom 2` ⇒ nhường `harvest-curator` |
| S11 | **thiếu chuỗi-thời-gian** | budget `measured` tự khai stale S107/S138, re-sync 2026-08-01; MFE không lưu coverage lịch sử ⇒ mọi delta là "tươi vs sổ", KHÔNG phải tốc-độ theo phiên |

## KHAI BÁO TOÀN-VẸN (con ĐO tự khai — không cắt)

1. **Dư-lượng ghi từ chính lượt W1 — 1 file:** `mfe-eval.ps1` GHI `.claude/agent-memory/.mfe-state.json` **theo thiết-kế** (budget `mfe.honest_caveats.read_only_scope` khai sẵn *"MFE WRITES exactly one file"*). 5 script còn lại read-only (archive-gate `DRY-RUN no writes`, backfill `READ-ONLY never tunes/writes`, 3 script chỉ stdout).
2. **"read-only" của con ĐO = thiếu tool Write/Edit, KHÔNG phải sandbox** — vẫn giữ Bash = kênh-ghi-mở. Containment THẬT = lead soát `git status`.
3. **Không tự tính lại phép đo** — mọi số hoặc máy in, hoặc số-học đơn giản trên số máy in (đã ghi rõ chỗ nào).
4. **Ranh-trục giữ:** 0 action đề xuất · 0 chấm-spec · 0 soi lead-surface · `run-chua-gom 2` đẩy sang H2.
