# harness-eval — con ĐO (nấc 1/3) · S154 bookend-open · 2026-07-26

> 🔴 **Ghi-đĩa-trong-lúc-làm** (chống #53): mỗi số ghi NGAY khi máy in, không gom cuối.
> Mọi số dưới đây = instrument chạy TƯƠI trong lượt này (2026-07-26 18:37+). CẤM số-từ-trí-nhớ.

## 0. Tiền-đề đo (ghi trước khi chạy)

- git status TRƯỚC lượt: ` M .claude/governance/.session-counter.json` · ` M .../sub-ring2-open-S154.md` · `?? .../bookend-open-synthesis.md`
- `.claude/agent-memory/.mfe-state.json` = **git-TRACKED**, md5 PRE = `fe6f3b44e90aeb82c1df23e3cac70c26`
- `.claude/agent-memory/.archive-strikes.json` = **untracked**, md5 PRE = `4160ee7158426226a9901ea7083e7f31`
- 🔴 KHAI TRƯỚC: `mfe-eval.ps1` GHI `.mfe-state.json` (đúng caveat `mfe.honest_caveats.read_only_scope`) — lead yêu-cầu chạy nên tao CHẠY, và ghi lại md5 POST để lead soát. `memory-archive-gate.ps1` ghi `.archive-strikes.json` (untracked).

---

## 1. Log đo (append theo thứ-tự máy in)

### [I1] `scripts/measure-agent-memory.ps1` — chạy 18:37, JSON nguyên-văn

Header máy in: `soft_cap_l1_bytes: 30720` · `autoinject_cap_bytes: 25600` · **23 row `agents[]`**.
Bảng dưới = số máy in + delta vs `memory-budget.json.measured` (baseline), sắp theo l1 giảm dần. `%cap` = l1/25600. `%idxcap` = l2_index/20480.

```
agent                      l1_now  l1_base      d_l1    %cap |    l2idx idx_base %idxcap
tooling-auditor             23464    16923     +6541   91.7% |     3672        0   17.9%
implementer-backend         21987    23955     -1968   85.9% |    10105    10105   49.3%
frontend-designer           21492    21492        +0   84.0% |     1622     1531    7.9%
reviewer                    21281    20071     +1210   83.1% |    13780    11442   67.3%
lead-gap-auditor            19792     3691    +16101   77.3% |      963        0    4.7%
harvest-curator             19456    18082     +1374   76.0% |     7986        0   39.0%
cicd-monitor                19281    20180      -899   75.3% |    19322    18774   94.3%
implementer-frontend        18435    14252     +4183   72.0% |     5844        0   28.5%
lead-stale-auditor          14078     3332    +10746   55.0% |        0        0    0.0%
ring2-audit                 13964        -   NO-BASE   54.5% |        0  NO-BASE    0.0%
test-specialist             13189     8844     +4345   51.5% |     5404        0   26.4%
investigator-codebase       12154    17229     -5075   47.5% |    12384    12384   60.5%
investigator-api             9021     8510      +511   35.2% |        0        0    0.0%
ring1-audit                  7884        -   NO-BASE   30.8% |        0  NO-BASE    0.0%
database-agent               7388     7388        +0   28.9% |        0        0    0.0%
harness-refine               4813     1616     +3197   18.8% |        0        0    0.0%
harness-audit                4530     1513     +3017   17.7% |        0        0    0.0%
harness-eval                 4492     1547     +2945   17.5% |        0        0    0.0%
office-document              3323     3323        +0   13.0% |        0        0    0.0%
ctx-audit                    3288        -   NO-BASE   12.8% |        0  NO-BASE    0.0%
ctx-curator                  2940        -   NO-BASE   11.5% |        0  NO-BASE    0.0%
ctx-verifier                 2663        -   NO-BASE   10.4% |        0  NO-BASE    0.0%
ring4-audit                  2315        -   NO-BASE    9.0% |        0  NO-BASE    0.0%

SUM l1 (23 vai) = 271230 B | mean = 11792.6
SUM l1 cac vai CO baseline = 238176 ; baseline sum = 191948 ; delta = +46228
NO-BASELINE rows (6): ctx-audit, ctx-curator, ctx-verifier, ring1-audit, ring2-audit, ring4-audit
l1 > autoinject 25600: 0 []
l1 > soft 30720: 0 []
flag l1_over_30kb TRUE count = 0
TRIO l1 now = 13835 (base 4676, delta +9159)
ZERO-DELTA vs baseline (3): ['database-agent', 'frontend-designer', 'office-document']
```

🔴 Số dẫn-xuất (sum/mean/delta/đếm) do **script cộng**, KHÔNG cộng tay — đây đúng lane tao ngã ở S151/S153 (meta-count đếm-về-mình).

**Đọc số:**
- **S-A1 HEALTHY:** 0/23 vai vượt autoinject 25600, 0/23 vượt soft 30720; cờ `l1_over_30kb` TRUE = 0. Trục byte-L1 **không có vai nào over-cap**.
- **S-A2 gần-cap:** `tooling-auditor` 23464 = **91,7%** autoinject → vai l1 CAO NHẤT fleet, ĐỔI CHỦ khỏi `implementer-backend` (baseline ghi "gần cap nhất 23955/25600", nay tụt 21987 = 85,9%). Baseline `measured._note` WATCH đang trỏ **sai vai**.
- **S-A3 REGRESSION-cấu-trúc:** **6/23 vai KHÔNG có row baseline** (3 ctx + 3 ring) ⇒ mẫu-số baseline phủ 17/23 = **73,9%**. Xác-nhận tín-hiệu (b) lead nêu, và **MỞ RỘNG**: không chỉ 3 ctx thiếu — 3 ring cũng thiếu.
- **S-A4:** `cicd-monitor` l2_index **19322/20480 = 94,3%** (headroom **1158 B**), +548 vs baseline 18774. Vai TĂNG-mỗi-run.
- **S-A5:** trio l1 **13835 B** (eval 4492 · refine 4813 · audit 4530) vs baseline 4676 ⇒ **+9159 (×2,96)**. Bác thẳng `measured._note` S141 "3 row nay = SEED-STATE (vai chua chay lan nao) nen l1_hot ~1.5KB" — xác-nhận tín-hiệu (c).
- **S-A6:** `harvest-curator` l1 = **19456 B** (+1374 vs baseline 18082) — khớp CHÍNH XÁC con số H2 tự khai ở tín-hiệu (a). Xác-nhận (a) bằng máy độc-lập.
- **S-A7:** `lead-gap-auditor` **19792** (+16101 vs baseline 3691, ×5,36) và `lead-stale-auditor` **14078** (+10746, ×4,23) — 2 vai H24 phình mạnh nhất fleet theo bội-số.
- **S-A8 zero-delta ×3:** `database-agent` 7388 · `frontend-designer` 21492 · `office-document` 3323 — byte KHỚP baseline TỪNG BYTE ⇒ 3 diary này không đổi 1 byte kể từ mốc seed baseline.

### [I2] `scripts/mfe-eval.ps1` — chạy 18:39, exit 0, output nguyên-văn (54 dòng)

🔴 **Khai ghi-đĩa:** instrument này GHI `.claude/agent-memory/.mfe-state.json` (**git-TRACKED**). md5 `fe6f3b44…` → `54e111d9…`; `git diff --stat` = **1 file, +5 insertion, −0** (append 1 record history, KHÔNG sửa byte cũ). Đúng caveat `mfe.honest_caveats.read_only_scope` — không phải residual-write lạ.

```
=== MFE (Memory-Fidelity-EVAL) - Harness-16 - 2026-07-26 ===
    lead hot-feed cap (live) = 380000 tok | mem-sub cap = 60000 tok

[LEAD] must-remember denominator (deduped, merge_guard_to_as=True):
   marks(Active+High)=9  AS-classes=15  net-extra-guards=5  net-extra-recurring-gotchas=7
   => DENOMINATOR = 36 items  (raw before dedup: marks 9 + AS 15 + guards 16 + recurring 8)

[LEAD] Coverage-FIT (does the set FIT the hot-feed cap?):
   span bytes=28492  =>  ~7123 - 9497 tok (RANGE, see caveat)  /  cap 380000 tok  =  2.5% worst-case
   FIT = PASS (worst-case fits; headroom huge - must-remember set is tiny vs cap)

[LEAD] age-band (FLAG only - age=false-proxy, mark RC-...10-29-11):
   marks with parseable date=9; >30d old but still Active=4 -> KEPT (status-driven, age-blind)

[LEAD] Goodhart anchor (NO self-grading - real recurring-error signal):
   error-ledger: strikes_total=25  RCA_entries=14  AS-classes=15
   (rule: ... warn-baseline=25 last_run_strikes=25)

[SUB] per-role memory coverage:
   cicd-monitor 10/10 · ctx-audit 10/10 · ctx-curator 6/6 · ctx-verifier 7/7 · database-agent 7/7
   frontend-designer 2/2 · harness-audit 5/5 · harness-eval 5/5 · harness-refine 5/5 · harvest-curator 7/7
   implementer-backend 18/18 · implementer-frontend 13/13 · investigator-api 7/7 · investigator-codebase 8/8
   lead-gap-auditor 6/6 · lead-stale-auditor 6/6 · office-document 6/6 · reviewer 8/8
   ring1-audit 5/5 · ring2-audit 5/5 · ring4-audit 5/5 · test-specialist 6/6 · tooling-auditor 8/8
   => TAT CA 23/23 vai = 100% (MEASURED, not target-then-force)

[SUB-WORKFLOW] N/A by design (ephemeral, no persistent diary)
=== MFE done (deterministic block; READ-ONLY on budget; exit 0) ===
```

**Đọc số:**
- **S-B1 HEALTHY:** FIT = **PASS**. span 28492 B → `[7123 .. 9497]` tok / cap 380000 = **2,5% worst-case**. Không có sức ép cap ở trục must-remember.
- **S-B2 HEALTHY (strikes phẳng):** `strikes_total=25` · `RCA_entries=14` · `AS-classes=15`; **warn-baseline=25, last_run=25 ⇒ delta 0**. Đọc `.mfe-state.json` history: **7 record**, TẤT CẢ đều `25/14` (5× `2026-07-25 23:55` · 1× `2026-07-26 11:52` · 1× `2026-07-26 18:39` = lượt này). Không có strike mới.
- **S-B3 mẫu-số 36:** `DENOMINATOR = 36` (raw 9+15+16+8 = 48 trước dedup). Khớp nhãn baseline `mfe.denominator_sources`.
- **S-B4 tín-hiệu SATURATION (không phải HEALTHY, không phải REGRESSION):** **23/23 vai = 100%, phương-sai = 0**. Một thước mà MỌI đối-tượng đều max thì lượt này nó **không phân-biệt được gì** — kể cả `frontend-designer` mẫu-số **2** (100% của 2 item) đứng ngang `implementer-backend` mẫu-số 18. 🔴 Tao KHÔNG kết-luận số này sai; tao khai: **độ-phân-giải = 0 ở lượt này**, và mẫu-số per-role lệch nhau 9× (2 vs 18) nên "100%" giữa 2 vai KHÔNG cùng nghĩa.
- **S-B5 lệch-mẫu-số-giữa-2-máy:** mfe-eval liệt **23 vai**, `memory-budget.json.measured` chỉ có **17 row** ⇒ 2 dụng-cụ của cùng hệ memory đang cầm 2 roster khác nhau (23 vs 17). Đây là bằng-chứng thứ-hai, độc-lập với [I1], cho tín-hiệu (b).

### [I3] `scripts/memory-archive-gate.ps1` — chạy 18:40, exit 0, DRY-RUN

🔴 **Xác-nhận DRY:** `.claude/agent-memory/.archive-strikes.json` md5 PRE = POST = `4160ee7158426226a9901ea7083e7f31` ⇒ **KHÔNG ghi 1 byte**. Máy tự in: `[A6] DRY-RUN: strike counters NOT persisted`.

Tham-số máy in: `cap 25600` · `low-water 21760 (ratio 0.85)` · `keep-floor 5` · `strike-need 2`.

```
PASS 1 - hot-tier over-cap planner (23 row):  TAT CA cot over? = "no", strike = 0, resolve = ok
  (no sub over cap - hot tier within auto-inject budget)
  entries per sub: implementer-backend 24 · cicd-monitor 20 · implementer-frontend 20 · reviewer 18
    · test-specialist 17 · investigator-codebase 12 · investigator-api 10 · tooling-auditor 10
    · harvest-curator 9 · lead-gap-auditor 8 · frontend-designer 7 · database-agent 6 · harness-audit 6
    · harness-eval 6 · harness-refine 6 · ring2-audit 6 · lead-stale-auditor 5 · ring1-audit 5
    · office-document 3 · ring4-audit 2 · ctx-audit 0 · ctx-curator 0 · ctx-verifier 0

PASS 2 - A7 archive-integrity gate (10 sub co archive):
  cicd-monitor        PASS pointers 101 resolved 101 failed 0
  frontend-designer   PASS pointers   5 resolved   5 failed 0
  harvest-curator     PASS pointers  46 resolved  46 failed 0
  implementer-backend PASS pointers  41 resolved  41 failed 0
  implementer-frontend PASS pointers 44 resolved  44 failed 0
  investigator-codebase PASS pointers 55 resolved 55 failed 0
  lead-gap-auditor    PASS pointers   5 resolved   5 failed 0
  reviewer            PASS pointers  56 resolved  56 failed 0
  test-specialist     PASS pointers  28 resolved  28 failed 0
  tooling-auditor     PASS pointers  20 resolved  20 failed 0
------------------------------------------------------------
 A7 GATE PASS  -  total pointers 401, resolved 401, failed 0
```

**Đọc số:**
- **S-C1 HEALTHY:** **0/23 sub over-cap**, strike = **0** trên toàn bộ 23 row. Không có đề-nghị archive nào mở. Khớp [I1] (0/23 vượt 25600) — 2 máy độc-lập cùng kết-luận.
- **S-C2 HEALTHY:** A7 archive-integrity **401/401 pointer resolved, 0 failed** trên 10 sub có archive. Trục con-trỏ L2 **không thủng**.
- **S-C3 tín-hiệu điểm-mù parser:** 3 vai ctx (`ctx-audit` 3288 B · `ctx-curator` 2940 B · `ctx-verifier` 2663 B) có `entries = 0` trong khi bytes > 0. Mọi vai khác ≥ 2 entries. ⇒ planner **không phân-giải được entry nào** ở 3 diary này; nếu chúng phình tới cap thì `keep_floor 5` / drain-candidate pool sẽ tính trên tập RỖNG. Chưa hại (còn 10-13% cap) nhưng là **lỗ đo có thật**, cùng họ với (b).

