# harness-eval — nấc 1/3 (con ĐO) — S173 bookend @open (2026-08-05, phiên-LOGIC L11)

> 🔴 ĐỔ RUỘT LIÊN TỤC (chống #53). File này ghi TỪNG TRỤC ngay khi vừa đọc số máy in.
> Vai = INFORM-only / propose-only. KHÔNG hành-động, KHÔNG chấm-spec, KHÔNG đề-xuất-action.
> Mọi số dưới đây = stdout instrument chạy TƯƠI trong lượt này, HOẶC đọc tươi từ file config trên đĩa.

## 0. Provenance — ai đo cái gì

| nguồn | loại | ghi chú |
|---|---|---|
| lead script-arm (`run.md` Phase 2) | số lead đã đo | vai này VERIFY lại bằng cách chạy tươi, không chép mù |
| instrument chạy tươi lượt này | số máy VỪA in | ghi verbatim |
| `.claude/agent-memory/memory-budget.json` | đọc tươi (Read) | baseline `measured` + caps |
| `runs/2026-08-05-S172-bookend-close/harness-eval-return.md` | baseline vòng trước | 20 trục |
| `runs/2026-08-01-S168-bookend-close/harness-eval-return.md` | baseline S168 | 25 trục, headroom 165.767 |

🔴 **Ca #53 thứ 5/5 phiên này:** first-return của vai này bị cắt sau §0 (file 1.099 B, 0 số xuống đĩa) dù đã chạy 31 tool-use. Sub-class = `skeleton-ruột-rỗng`. Resume trong-phiên, **0 byte mất** vì số vẫn nằm trong stdout instrument + được ghi lại nguyên-văn ở dưới. Bài học áp ngay: **ghi SAU MỖI LỆNH, không gom**.

---

## 1. VERIFY số lead — 3/8 số lead ĐÃ TRÔI trong phiên

Lead chạy script-arm lúc ~09:29-10:28. Vai này chạy lại lúc ~10:50+. **3 số đổi** — không phải lead sai, mà là **đo trước/sau một tick = hai số khác nhau**:

| instrument | số LEAD | số TƯƠI (vai này chạy) | delta | vì sao đổi |
|---|---|---|---|---|
| `governance-detectors` TOTAL | 50 | **50** | 0 | khớp |
| `governance-detectors` INFORM-only | **13** | **16** | **+3** | 🔴 cả 3 flag mới trỏ THẲNG vào run-folder S173: `sub-harvest-curator-open-S173.md` (diary-0-delta) · `sub-lead-gap-open-S173.md:35` (FLAG-khuôn không tag class) · `sub-tooling-auditor-open-S173.md` (diary-0-delta) |
| `nhip-no-probe` run-chua-gom | **0** | **1** | **+1** | 🔴 run-folder S173 vừa mở, chưa có `*-synthesis.md` |
| `nhip` light/deep | 1/6 · 7/15 ok | **1/6 · 7/15 ok** | 0 | khớp |
| `nhip` tran-bo-nho / l2idx | 0 over-cap · 0 over | **0 over-cap · 0 over** | 0 | khớp |
| `nhip` pull-cach | 14 ngày | **14 ngày** | 0 | khớp |
| `distill-shard-probe` | pending=1 nguong=15 IM | **pending=1 nguong=15 => IM** | 0 | khớp |
| `measure-agent-memory` l1_over_30kb | 0 | **0/23** | 0 | khớp |
| `crystallized-backfill` | 148183 | **148183** | 0 | khớp |
| `mfe-eval` | exit 0 · 23 role · 22/23=100% · impl-fe 12/13 | **exit 0 · 23 role · 22/23=100% · impl-fe 12/13 = 92%** | 0 | khớp |
| `memory-archive-gate` | (lead chưa chạy) | **vai này chạy — kết quả §4** | — | — |

Nguyên-văn 2 dòng probe tươi:
```
NHIP-NO: kiem light 1/6 deep 7/15 ok | tran-bo-nho 0 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 14 ngay
SHARD-PROBE: pending=1 | nguong=15 => IM
TOTAL FLAGS: 50
INFORM-ONLY (... C6 + H24-4 + H24-5 + C9 + C11 + C12): 16 - counted SEPARATELY, NOT in TOTAL above
  C11 FLAG-khuon + diary-delta flags = 16 [INFORM-only, LOW, NOT folded into TOTAL baseline]
```

---

## 2. measure-agent-memory — byte-fleet 23/23 (nguyên-văn)

`soft_cap_l1_bytes: 30720` · `autoinject_cap_bytes: 25600` · `n_agents: 23`

| agent | l1_hot | l2_verbatim | l2_index | l2_gist | over30k |
|---|---|---|---|---|---|
| investigator-codebase | **23930** | 150713 | 12448 | 107741 | false |
| ring2-audit | **23495** | 0 | 0 | 0 | false |
| tooling-auditor | **23401** | 72498 | 3672 | 18760 | false |
| cicd-monitor | **22798** | 264257 | **23588** | 122471 | false |
| reviewer | **22046** | 211401 | 13941 | 69925 | false |
| lead-stale-auditor | **21528** | 0 | 0 | 0 | false |
| harvest-curator | **21092** | 78576 | 8325 | 20317 | false |
| ctx-audit | **21070** | 0 | 0 | 0 | false |
| implementer-backend | 17241 | 86134 | 10487 | 84345 | false |
| test-specialist | 17103 | 37615 | 6170 | 33811 | false |
| frontend-designer | 16373 | 19050 | 2435 | 3231 | false |
| ring1-audit | 16203 | 0 | 0 | 0 | false |
| lead-gap-auditor | 14798 | 22645 | 1234 | 7112 | false |
| implementer-frontend | 14182 | 47796 | 5844 | 44764 | false |
| ctx-verifier | 14053 | 0 | 0 | 0 | false |
| harness-audit | 13213 | 0 | 0 | 0 | false |
| harness-refine | 12201 | 0 | 0 | 0 | false |
| harness-eval | 10630 | 0 | 0 | 0 | false |
| database-agent | 9038 | 0 | 0 | 0 | false |
| investigator-api | 9021 | 0 | 0 | 0 | false |
| ctx-curator | 5229 | 0 | 0 | 0 | false |
| office-document | 3323 | 0 | 0 | 0 | false |
| ring4-audit | 2315 | 0 | 0 | 0 | false |
| **TỔNG** | **354283** | **990685** | **88144** | **512477** | **0 over** |

🔴 **"0 agent l1_over_30kb" ĐÚNG nhưng đo sai trần:** 30720 = `soft_cap`; trần THẬT quyết định file có được inject TRỌN không = `autoinject_cap` **25600**.
- vs 25600: **0/23 vượt** — nhưng **8/23 đã ≥ 80%** (20480 B): investigator-codebase 23930 = **93,5%** · ring2-audit 23495 = 91,8% · tooling-auditor 23401 = 91,4% · cicd-monitor 22798 = 89,1% · reviewer 22046 = 86,1% · lead-stale-auditor 21528 = 84,1% · harvest-curator 21092 = 82,4% · ctx-audit 21070 = 82,3%.
- Đầu bảng còn **1.670 B** trước khi mất auto-inject trọn file.



---

## 3. crystallized-backfill — 🔴 TRỤC NẶNG NHẤT: headroom giảm ĐƠN-ĐIỆU MỐC THỨ 4

Nguyên-văn máy in:
```
### hot-load sources (LIVE byte-measure, UTF8)
docs/STATUS.md                                   226173       ok
docs/HANDOFF.md                                  175771       ok
.claude/governance/ACTIVE-MARKS.md                31197       ok
docs/changelog/migration-todos.md                 88151       ok
docs/gotchas.md                                  119937       ok
.claude/agents/README.md                          54222       ok
TOTAL                                            695451

Tran tong (live cap)   : 380000 tok
hotload measured       : 695451 bytes
tok RANGE [low..high]  : [173863 .. 231817] tok  (bytes/4 .. bytes/3.0)
measured_headroom      : 148183 tok  (cap - tok_high, worst-case)
target (owner)         : 210000 tok
expected_backfill      : 148183 tok  (min(target,headroom)=headroom => headroom binds (target exceeds room))
  precondition MET (target>0 AND headroom>0)
```

### Chuỗi đơn-điệu — 4 mốc, KHÔNG một lần đảo chiều

| mốc | phiên | headroom (tok) | delta vs mốc trước |
|---|---|---|---|
| 1 | S153 | 181.228 | — |
| 2 | S159 | 172.247 | −8.981 |
| 3 | S162 / S168 | 165.767 | −6.480 |
| 4 | **S173 (nay)** | **148.183** | **−17.584** |

- Tổng sụt S153→S173 = **−33.045 tok (−18,2%)**.
- Bước sụt kỳ này (**−17.584**) **LỚN HƠN TỔNG hai bước trước cộng lại** (8.981 + 6.480 = 15.461). Gia tốc, không phải trôi đều.
- S172 trục này **KHÔNG CÓ SỐ** (chỉ in `precondition MET`) ⇒ mốc 4 là lần đầu có số sau 1 kỳ mù.
- 🔴 **KHÔNG kết luận nguyên nhân** — đó là việc con ĐỀ-XUẤT. Chỉ nêu dữ kiện kèm: `hotload measured` = **695.451 B**, so mốc S153 **596.316 B** ⇒ **+99.135 B (+16,6%)** trên cùng 6 nguồn khoanh-phạm-vi.

### target vs room — khoảng thiếu NỚI RỘNG

| kỳ | target owner | headroom | thiếu |
|---|---|---|---|
| S168 | 210.000 | 165.767 | −44.233 |
| **S173** | 210.000 | **148.183** | **−61.817** |

`headroom binds (target exceeds room)` — máy tự khai target owner-set vượt room. Khoảng thiếu **giãn thêm 17.584 tok** trong 5 ngày.

> CAVEAT máy tự in, giữ nguyên: *"HEADROOM is measured over a STABLE FILE-FLOOR = an UPPER BOUND. The PEAK hot-feed also loads session-variable task-context NOT in this list; real headroom is SMALLER."* ⇒ 148.183 là **cận-TRÊN**; số thật nhỏ hơn.

---

## 4. memory-archive-gate (DRY) — lead chưa chạy, vai này chạy

### PASS 1 — hot-tier over-cap planner

**23/23 sub liệt kê · `over? = no` cho TẤT CẢ · `strike = 0` cho TẤT CẢ · `resolve = ok`.**

```
  (no sub over cap - hot tier within auto-inject budget)
  [A6] DRY-RUN: strike counters NOT persisted (run with -Apply to advance strikes)
```

Số entry/sub (đếm entry L1, không phải byte): implementer-backend 24 · cicd-monitor 19 · reviewer 16 · investigator-codebase 13 · tooling-auditor 12 · implementer-frontend 11 · harvest-curator 10 · investigator-api 10 · harness-audit/eval/refine 7 mỗi vai · lead-gap 7 · ring2 7 · test-specialist 7 · frontend-designer 7 · lead-stale 6 · database-agent 6 · ring1 6 · ctx-audit 3 · office-document 3 · ring4 2 · ctx-verifier 1 · **ctx-curator 0**.

🔴 `ctx-curator` = **0 entry** trong khi file 5.229 B ⇒ nội-dung có, nhưng **0 cái parser nhận là "entry"**. Số nguyên-văn, không suy diễn.

### PASS 2 — A7 archive-integrity gate

```
 A7 GATE PASS  -  total pointers 429, resolved 429, failed 0
```

10 sub có `_INDEX.md`, **PASS 10/10, 0 con trỏ hỏng**:
cicd-monitor 112/112 (14 archive) · reviewer 57/57 (9) · investigator-codebase 56/56 (13) · harvest-curator 48/48 (4) · implementer-frontend 44/44 (4) · implementer-backend 43/43 (13) · test-specialist 33/33 (4) · tooling-auditor 20/20 (4) · frontend-designer 9/9 (2) · lead-gap-auditor 7/7 (2).

So S169 (429 vs 429): **con trỏ giữ nguyên tổng, 0 hỏng** ⇒ trục integrity ỔN ĐỊNH.

### Sổ strike trên đĩa — 20/23, thiếu ĐÚNG 3 vai ctx

`.claude/agent-memory/.archive-strikes.json` = **20 khoá**, tất cả giá-trị **0**.
**Vắng: `ctx-audit` · `ctx-curator` · `ctx-verifier`.**

🔴 Phân-nấc cho đúng (chống đọc nhầm): gate PASS 1 **CÓ** quét đủ 23/23 (3 vai ctx xuất hiện trong bảng, strike 0). Cái thiếu là **SỔ persist** — file state chỉ ghi 20 khoá vì lần `-Apply` gần nhất chạy trước khi 3 vai ctx vào roster. ⇒ Không phải "gate mù 3 vai", mà là **state-file trôi sau roster**. Giữ nguyên tình trạng S172 (20/23), **không xấu thêm, không tự lành**.

---

## 5. mfe-eval — coverage/retention (exit 0, 23/23 role)

### 5a. LEAD denominator + Coverage-FIT (nguyên-văn)

```
[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)  /  cap 380000 tok  =  2.5% worst-case
   FIT = PASS (worst-case fits; headroom huge - must-remember set is tiny vs cap)
```
Tự-cộng lại mẫu-số: 9 + 15 + 5 + 7 = **36** ✓ khớp nhãn (kiểm lớp lỗi nhãn≠tổng-từng-ngăn).
Baseline S152/S153/S159/S163/S169 = **36 · 28.492 B · 2,5% · PASS** ⇒ **delta 0, bất-biến 6 kỳ.**

### 5b. Goodhart anchor (nguyên-văn)

```
   error-ledger: strikes_total=25  RCA_entries=16  AS-classes=15
   (warn-baseline=25 last_run_strikes=25)
```
`.mfe-state.json` tươi: `strikes_total 25` · `rca_entries 16` · `warn_baseline 25` · `at 2026-08-05`.
Lịch-sử: strikes **25 đứng yên từ 2026-07-25** (14 mốc liên tiếp); rca 14 → 16 @2026-07-30, giữ 16 từ đó.
⇒ **strikes KHÔNG tăng trong khi coverage cao** ⇒ chốt-chặn Goodhart **KHÔNG kêu**.

> Ghi nhận write: `.mfe-state.json` có **3 lần chạy hôm nay** (09:29 · 10:28 · 10:48) trước lượt tôi; lượt tôi thêm 1. Đây là file state riêng của chính mfe (`read_only_scope` cho phép), khai thẳng để không ai đọc nhầm là "vai ĐO có ghi memory".

### 5c. SUB per-role coverage — 23/23 vai ĐO ĐƯỢC

**22/23 = 100%** · duy nhất **`implementer-frontend` 12/13 = 92%**.

Nguyên-văn: 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 12/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.

| mốc | implementer-frontend | ghi chú |
|---|---|---|
| S154 | **13/13 = 100%** | đỉnh |
| S169 | **11/13 = 85%** | tụt 2 |
| **S173** | **12/13 = 92%** | **+1 hồi lại** |

⇒ Trục này **CẢI THIỆN** (+1 item so mốc có-số gần nhất). 🔴 Nhưng vẫn **chưa về 13/13** — hồi 1 trong 2 item đã mất.

> 🔴 **Trục MFE PHỤC HỒI:** S168 + S172 cả hai kỳ khai `mfe = N/A`. Kỳ này **exit 0, đủ 23 role, có số** ⇒ điểm mù 2 kỳ liên tiếp đã đóng.

---

## 6. 🔴 BASELINE `measured{}` — 17/23. 6 vai CHƯA TỪNG ĐO

Đếm tươi từ `memory-budget.json` (bỏ khoá `_note`): **`measured` = 17 row · roster live = 23.**

**6 vai VẮNG HẲN khỏi `measured{}`:** `ctx-audit` · `ctx-curator` · `ctx-verifier` · `ring1-audit` · `ring2-audit` · `ring4-audit`.

🔴 **Khai đúng nấc:** với 6 vai này **KHÔNG có "delta 0"**. Không có baseline ⇒ **không tính được delta**. Đọc "0" ở đây thành "ổn định" là sai loại — nghĩa đúng là **CHƯA TỪNG ĐO LẦN NÀO**. Ba vai trong đó (`ring2-audit` 23.495 B = 91,8% autoinject · `ctx-audit` 21.070 B = 82,3% · `ring1-audit` 16.203 B) đang ở nhóm nặng nhất fleet mà **0 mốc so sánh**.

Giữ nguyên tình trạng S159 → S162 → S172 → S173: **4 kỳ liên tiếp 17/23**.

### 17 row CÓ baseline — 16/17 đã trôi, 5 row trôi >300%

| agent | baseline (budget) | live (máy vừa in) | delta | % |
|---|---|---|---|---|
| lead-stale-auditor | 3.332 | **21.528** | **+18.196** | **+546,1%** |
| harness-audit | 1.513 | **13.213** | **+11.700** | **+773,3%** |
| lead-gap-auditor | 3.691 | **14.798** | **+11.107** | **+300,9%** |
| harness-refine | 1.616 | **12.201** | **+10.585** | **+655,0%** |
| harness-eval | 1.547 | **10.630** | **+9.083** | **+587,1%** |
| test-specialist | 8.844 | 17.103 | +8.259 | +93,4% |
| implementer-backend | 23.955 | 17.241 | **−6.714** | −28,0% |
| investigator-codebase | 17.229 | 23.930 | +6.701 | +38,9% |
| tooling-auditor | 16.923 | 23.401 | +6.478 | +38,3% |
| frontend-designer | 21.492 | 16.373 | **−5.119** | −23,8% |
| 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% |
| database-agent | 7.388 | 9.038 | +1.650 | +22,3% |
| investigator-api | 8.510 | 9.021 | +511 | +6,0% |
| implementer-frontend | 14.252 | 14.182 | −70 | −0,5% |
| office-document | 3.323 | **3.323** | **0** | **0,0%** — row DUY NHẤT còn đúng |

**16/17 row lệch · 1/17 khớp.** 4 row bộ-ba+H24 nở **>500%** vì `measured` còn giữ số SEED thời S141 (khi 3 vai bộ-ba chưa chạy lần nào).

### Mốc tự-hẹn re-sync ĐÃ TRÔI

`measured._note` tự viết: *"full re-sync bằng script @monthly drift-audit **2026-08-01**"*. Hôm nay **2026-08-05** ⇒ **trôi 4 ngày** (y hệt S172 báo, **không nhúc nhích**). Chính điều này giải thích 16/17 row lệch ở trên — cùng một gốc, không phải 2 tín-hiệu rời.

---

## 7. l2_index vs cap — trục MÙ 2 KỲ nay CÓ SỐ, và số đó ĐẢO CHIỀU

`nhip-no-probe` in `l2idx 0 over` = **nhị-phân, không byte nào**. Bổ số bằng `measure-agent-memory` + đo trực tiếp file:

| đo cái gì | byte | vs cap 20.480 |
|---|---|---|
| `archive/_INDEX.md` MAIN — cicd-monitor (lớn nhất fleet) | **9.682** | **47,3%** |
| `_INDEX-2026-H1.md` (rotated, cold-tier) | 13.906 | không áp cap (`split_rule_S167`) |
| **TỔNG cả hai** (số `measure-agent-memory` in) | **23.588** | **115,2%** |

MAIN `_INDEX.md` toàn fleet: reviewer 13.941 (68,1%) · investigator-codebase 12.448 (60,8%) · implementer-backend 10.487 (51,2%) · **cicd-monitor 9.682 (47,3%)** · harvest-curator 8.325 · test-specialist 6.170 · implementer-frontend 5.844 · tooling-auditor 3.672 · frontend-designer 2.435 · lead-gap-auditor 1.234. **0/10 vượt cap.**

| mốc | cicd-monitor MAIN `_INDEX.md` | % cap |
|---|---|---|
| S159 | 19.484 | **95,14%** |
| S162 / S172 | *(không có số — probe nhị-phân)* | mù |
| **S173** | **9.682** | **47,3%** |

⇒ Trục này **HẾT ĐỎ**: rotation `_INDEX-2026-H1.md` @2026-08-01 (owner-set `split_rule_S167`) đã hạ MAIN từ 95,14% → 47,3%.

🔴 **Nhưng khai thẳng 2 điều, đừng đọc thành thắng lợi thuần:**
1. **Trục đo bị ĐỊNH-NGHĨA LẠI giữa 2 mốc.** 95,14% (S159) đo *một file*; 47,3% (nay) đo *file MAIN sau khi tách*. Hai số **không cùng phép đo** — không được trừ thẳng. Tổng byte index của cicd-monitor **TĂNG** 19.484 → 23.588.
2. Việc tách là **owner-ratify @S167 có luật viết sẵn** (rotated = cold tier, no cap, vẫn A7-verify — và A7 kỳ này PASS 112/112 cho chính cicd-monitor), **không phải** né tập-đo. Nêu ra để con ĐỀ-XUẤT/con KIỂM biết hình-dạng, không phải để buộc tội.

---

## 8. Độ-GIỮ (retention) — diary có thật sự nhận nội-dung phiên không

🔴 **Control-dương TRƯỚC khi báo 0-hit** (luật: 0-hit cấm rời tay khi chưa chứng minh glob đúng):
`grep -c "S1"` trên cùng 23 file ⇒ **363 hit / 23 file** ⇒ corpus KHÔNG rỗng, glob `*/MEMORY.md` ĐÚNG. 0-hit dưới đây là **0 THẬT**.

| nhãn phiên | số diary có nhắc | / 23 |
|---|---|---|
| **S173** (phiên này) | **0** | **0/23** |
| S172 | 16 | 16/23 |
| S171 | 8 | 8/23 |

**4 vai ĐÃ CHẠY trong phiên này** (V1 + V2) và **0/4 tự ghi diary**:

| vai | sub-file viết lúc | diary mtime | tự-ghi? |
|---|---|---|---|
| tooling-auditor | 10:48 | 10:31 | **KHÔNG** (diary cũ hơn sub-file) |
| harvest-curator | 10:47 | 10:06 | **KHÔNG** |
| lead-gap-auditor | 10:46 | 10:06 | **KHÔNG** |
| lead-stale-auditor | 10:46 | 10:06 | **KHÔNG** |

⇒ Khớp ĐỘC-LẬP với `governance-detectors` C11: 2 trong 4 vai bị máy bắt đúng lớp `diary-0-delta (GAP-3)` (`sub-harvest-curator-open-S173.md`, `sub-tooling-auditor-open-S173.md`). **Hai đường đo khác nhau cùng chỉ một chỗ.**

### 7 diary NGUỘI (chưa chạm trước cả phiên này)

| vai | mtime | cách hôm nay |
|---|---|---|
| office-document | 2026-07-10 | **26 ngày** |
| investigator-api | 2026-07-25 | 11 ngày |
| ring4-audit | 2026-07-26 | 10 ngày |
| database-agent | 2026-07-29 | 7 ngày |
| frontend-designer | 2026-07-30 | 6 ngày |
| ctx-curator | 2026-08-01 | 4 ngày |
| test-specialist | 2026-08-01 | 4 ngày |

(`office-document`: 26 ngày nguội + là row DUY NHẤT `measured` còn khớp — hai dữ-kiện nhất-quán với "vai không chạy", ghi để khỏi đọc nhầm row-khớp đó là "sổ còn tươi".)

---

## 9. Nhịp H24 + tally class (đọc tươi `.session-counter.json`)

`counter = 47` · `last_ticked_session = S173` · `last_ticked_head = 1b3bcaa2…` · `last_ticked_at = 2026-08-05`
`last_audit: light_at_counter = 46 · deep_at_counter = 40`

| trục | tính | cap (`h24_cadence`) | trạng thái |
|---|---|---|---|
| light | 47 − 46 = **1** | `light_every = 6` | **1/6 — trong hạn** |
| deep | 47 − 40 = **7** | `deep_every = 15` | **7/15 ok** |

⇒ khớp probe. So S162 (`light 9/6 OVERDUE`) ⇒ **nợ nhịp đã trả, giữ sạch.**

### `class_repeat.counts` vs `jump_on_class_repeat = 3`

| class | repeat | vs ngưỡng 3 |
|---|---|---|
| gap-carry-dropped | **11** | 3,7× |
| view-residual-asym | **9** | 3,0× |
| view-stale-count | **9** | 3,0× |
| view-stale-status | **6** | 2,0× |
| gap-decision-sunk | 5 | 1,7× |
| gap-underfill | 5 | 1,7× |
| gap-owner-specifics | 4 | 1,3× |
| view-stale-header | 4 | 1,3× |
| view-claim-broader-than-sample | 0 | — |
| gap-carry-aged | 0 | — |
| gap-incident-unrecorded | 0 | — |
| view-stale-role-desc | 0 | — |

- **8/12 class ≥ 4 lần lặp**, 3 class **≥ 9**, trong khi ngưỡng nhảy-deep = **3**. `deep` vẫn ở 7/15, chưa nhảy.
- 🔴 Ghi **nguyên số, không giải thích**: hoặc luật nhảy không đọc bảng này, hoặc nó đã nhảy tại counter 40 rồi reset — vai ĐO không phán chuyện đó (thuộc con ĐỀ-XUẤT / con KIỂM).
- **Bất-biến enum GIỮ:** `class_repeat.counts` = **12 khoá** = đúng 12 phần-tử `lead_self_audit.flag_classes` (kể cả `view-claim-broader-than-sample` mở @S172, seed 0 cùng nhịp) ⇒ **12/12, 0 lệch.**

---

## 10. memory-selfimprove-audit — 2 nhãn DENOM lệch nhau trên CÙNG một lần chạy

```
[SPEC] a:tool-scope   | A1 | PASS | 23 sub-agent tools[] carry only READ RAG verbs
[SPEC] a:schema       | A2 | PASS | hmw.js SCHEMA required=[findings,memoryDelta] + writeGuard
[SPEC] a:propose-only | A3 | PASS | 18 read-only-role agents carry propose-only decl (PROXY: phrase-presence)
[SPEC] b:detectors    | B1 | PASS | governance-detectors.ps1 present + ran (exit 0; 66 advisory FLAG surfaced)
[SPEC] b:change-proc  | B2 | PASS | change-governance route documented
[SPEC] c:distill      | C-spectrum | N/A | no over-cap agent this run
[SPEC] eval:hcv       | HCV | GAP:MED | latest run 2026-08-05-S173-bookend-open: 4 sub-md but 0 synthesis
CRITERIA (this run, LIVE): A1 A2 A3 B1 B2 HCV     GAPS (this run): HCV:MED
```

🔴 **Lệch nhãn mẫu-số, ghi thẳng:** cùng một lần chạy detector, hai máy in **hai tổng khác nhau** — `governance-detectors` in **`TOTAL FLAGS: 50`** (+ INFORM-only 16 *đếm riêng, không gộp*), còn `memory-selfimprove-audit` B1 in **`66 advisory FLAG`**. **50 + 16 = 66** ⇒ không mâu thuẫn số học, nhưng **hai NHÃN cùng gọi là "FLAG" với hai mẫu-số khác nhau**. Ai trích một trong hai mà không kèm mẫu-số sẽ báo sai. (Cùng lớp "nhãn DENOM" đã gặp: 47≠36.)

**HCV `GAP:MED` = 4 sub-md / 0 synthesis @S173** ⇒ trục **harvest**. 🔴 **NHƯỜNG `harvest-curator` (H2)** — ghi số verbatim, KHÔNG phán, KHÔNG lấn.

- `last_sleep_at` = **2026-08-03** ⇒ cách **2 ngày**, dưới ngưỡng 7 ⇒ trục sleep-recovery **trong hạn**.
- `distill-shard`: `pending=1 | nguong=15 => IM` ⇒ còn **14 shard dư địa** trước khi kêu.

---

# 11. BẢNG VERDICT THEO TỪNG TRỤC — 33 trục

🔴 Luật tự-áp: **cấm in HEALTHY cạnh số nói ngược.** Mỗi dòng verdict phải suy được từ chính cột số bên trái.

| # | trục | số NGUYÊN-VĂN (máy in) | baseline | delta | verdict |
|---|---|---|---|---|---|
| 1 | l1_hot vs `soft_cap` 30720 | **0/23** `l1_over_30kb` | 0/23 | 0 | **HEALTHY** |
| 2 | l1_hot vs `autoinject_cap` 25600 | 0/23 vượt — **8/23 ≥ 80%**, đỉnh 23.930 = **93,5%** (còn 1.670 B) | — | — | **MIXED** |
| 3 | l2_index MAIN vs cap 20480 | cicd-monitor **9.682 = 47,3%** | S159 19.484 = 95,14% | **−47,8 điểm %** | **HEALTHY** |
| 4 | l2_index TỔNG (main+rotated) | cicd-monitor **23.588 = 115,2%** cap | S159 19.484 | +4.104 | **MIXED** (by-design `split_rule_S167`) |
| 5 | archive-gate PASS 1 over-cap | **23/23 `no`** · strike **0/23** | 0 over | 0 | **HEALTHY** |
| 6 | archive-gate PASS 2 A7 | **429 pointer / 429 resolved / 0 failed**, 10/10 sub PASS | S169 429/429 | 0 | **HEALTHY** |
| 7 | `.archive-strikes.json` coverage | **20/23** — vắng `ctx-audit`·`ctx-curator`·`ctx-verifier` | S172 20/23 | 0 | **REGRESSION** (nợ mang sang, không tự lành) |
| 8 | crystallized **headroom** | **148.183 tok** | S168 165.767 | **−17.584** | **REGRESSION** 🔴 |
| 9 | crystallized target−room | thiếu **−61.817** (target 210.000 / room 148.183) | S168 −44.233 | **−17.584** | **REGRESSION** |
| 10 | crystallized hotload bytes | **695.451 B** | S153 596.316 | **+99.135 (+16,6%)** | **REGRESSION** |
| 11 | MFE lead DENOMINATOR | **36** (9+15+5+7, tự-cộng khớp) | 36 (6 kỳ) | 0 | **HEALTHY** |
| 12 | MFE Coverage-FIT | span **28.492 B** → 7.123–9.497 tok / 380.000 = **2,5%** · `FIT = PASS` | 28.492 · 2,5% | 0 | **HEALTHY** |
| 13 | MFE Goodhart anchor | `strikes_total=25` · `warn-baseline=25` · `last_run=25` · RCA 16 · AS 15 | 25 / 25 | 0 | **HEALTHY** |
| 14 | MFE sub coverage | **22/23 = 100%** · `implementer-frontend` **12/13 = 92%** | S169 11/13=85% · S154 13/13 | **+1 item** | **MIXED** (hồi 1, chưa về 13/13) |
| 15 | MFE instrument liveness | **exit 0 · đủ 23 role · có số** | S168 N/A · S172 N/A | **+2 kỳ mù đóng** | **HEALTHY** |
| 16 | nhịp light | **1/6** | S162 9/6 OVERDUE | **−8** | **HEALTHY** |
| 17 | nhịp deep | **7/15 ok** | 7/15 | 0 | **HEALTHY** |
| 18 | nhịp `run-chua-gom` | lead 0 → tươi **1** | 0 | **+1** | **MIXED** (số trôi trong phiên — run S173 vừa mở) |
| 19 | nhịp `pull-cach` | **14 ngày** | 14 ngày | 0 | **MIXED** (chỉ-báo nghi-thức, không phải nợ thư) |
| 20 | distill-shard | `pending=1 | nguong=15 => IM` | pending=1 | 0 | **HEALTHY** (dư địa 14) |
| 21 | detector TOTAL | **50** | lead 50 | 0 | **HEALTHY** (khớp) |
| 22 | detector INFORM-only | **16** (C11 = 16) | lead **13** | **+3** | **REGRESSION** — cả 3 flag SINH TRONG chính phiên S173 |
| 23 | baseline `measured` coverage | **17/23** — 6 vai **CHƯA TỪNG ĐO** (3 ctx + 3 ring) | S159/S162/S172 17/23 | 0 (kỳ thứ **4**) | **REGRESSION** |
| 24 | baseline `measured` độ-đúng | **16/17 row đã lệch**, 5 row **>300%** (đỉnh +773,3%) | — | — | **REGRESSION** |
| 25 | mốc re-sync tự-hẹn | hẹn **2026-08-01**, nay **2026-08-05** | S172 đã trôi 4 ngày | **0 (đứng im)** | **REGRESSION** |
| 26 | độ-giữ diary phiên này | **0/23** nhắc `S173` (control-dương 363 hit) · **0/4 vai chạy tự-ghi** | S172 16/23 | **−16** | **REGRESSION** |
| 27 | diary nguội | **7/23** chưa chạm trước phiên, đỉnh `office-document` **26 ngày** | — | — | **MIXED** |
| 28 | `class_repeat` vs `jump=3` | **8/12 class ≥ 4**; đỉnh `gap-carry-dropped` **11** (3,7× ngưỡng) | — | — | **REGRESSION** |
| 29 | bất-biến enum class | `counts` **12 khoá** = `flag_classes` **12** | 12/12 @S172 | 0 | **HEALTHY** |
| 30 | selfimprove spec-face | **A1·A2·A3·B1·B2 PASS**, C-spectrum N/A | PASS | 0 | **HEALTHY** |
| 31 | nhãn mẫu-số flag | detector **50** vs selfimprove B1 **66** (= 50+16) trên CÙNG 1 lần chạy | — | — | **MIXED** |
| 32 | HCV harvest | `GAP:MED` — **4 sub-md / 0 synthesis** @S173 | — | — | **NHƯỜNG `harvest-curator` (H2)** |
| 33 | `last_sleep_at` | **2026-08-03** → cách **2 ngày** (ngưỡng 7) | — | — | **HEALTHY** |

**Tự-đếm lại TỪNG DÒNG (không dùng số tổng đóng vai đã-phủ-hết):**
HEALTHY = #1,3,5,6,11,12,13,15,16,17,20,21,29,30,33 → **15**
MIXED = #2,4,14,18,19,27,31 → **7**
REGRESSION = #7,8,9,10,22,23,24,25,26,28 → **10**
NHƯỜNG H2 = #32 → **1**
15 + 7 + 10 + 1 = **33** ✓ khớp số trục.

---

# 12. VERDICT TỔNG

## `HARNESS-EVAL: MIXED` — 15 HEALTHY / 10 REGRESSION / 7 MIXED / 1 nhường-H2 trên **33 trục**

**Vì sao KHÔNG phải HEALTHY:** headroom sụt mốc thứ 4 liên tiếp với **bước sụt lớn hơn tổng hai bước trước cộng lại**; `measured` 17/23 sang **kỳ thứ 4**; độ-giữ diary phiên này **0/23**.

**Vì sao KHÔNG phải REGRESSION thuần:** byte-fleet **0/23 vượt mọi trần**; A7 **429/429, 0 hỏng**; MFE **hết mù sau 2 kỳ** và impl-fe **hồi +1**; nhịp light từ 9/6-OVERDUE về **1/6**; l2_index MAIN từ 95,14% về **47,3%**.

---

# 13. ĐỀ-XUẤT-SIGNAL — 15 tín-hiệu cho con ĐỀ-XUẤT bắt

🔴 Đây là **TÍN-HIỆU**, không phải action. Vai ĐO không nói "nên làm gì".

| # | tín-hiệu | số neo | vì sao đáng bắt |
|---|---|---|---|
| S-1 | headroom đơn-điệu **mốc 4**, chưa 1 lần đảo | 181.228 → 172.247 → 165.767 → **148.183** | bước sụt kỳ này (−17.584) > tổng 2 bước trước (−15.461) ⇒ **gia tốc** |
| S-2 | target owner **vượt room**, khoảng thiếu giãn | −44.233 → **−61.817** trong 5 ngày | `headroom binds` do chính máy khai |
| S-3 | hotload floor phình | 596.316 → **695.451 B** (+16,6%) | cùng 6 nguồn khoanh-phạm-vi, không đổi danh-sách |
| S-4 | **6 vai chưa từng đo** | `measured` **17/23**, kỳ thứ **4** | 3 vai trong đó ở nhóm nặng nhất fleet (ring2 91,8% · ctx-audit 82,3%) |
| S-5 | baseline `measured` gần như vô-dụng | **16/17 row lệch**, 5 row **>300%**, đỉnh **+773,3%** | mọi "delta vs baseline" tính từ đây đều sai |
| S-6 | mốc tự-hẹn re-sync **đứng im** | hẹn 2026-08-01, nay 08-05 (**4 ngày**), y hệt S172 | S172 đã nêu, **0 dịch chuyển** |
| S-7 | sổ strike thiếu 3 vai ctx | `.archive-strikes.json` **20/23** | state-file trôi sau roster (gate vẫn quét đủ 23) |
| S-8 | 8/23 sub sát trần auto-inject | đỉnh **93,5%**, còn **1.670 B** | probe chỉ đo `soft_cap` 30720 ⇒ "0 over" không thấy nhóm này |
| S-9 | độ-giữ diary phiên này = 0 | **0/23** nhắc S173 · **0/4** vai chạy tự-ghi (control-dương 363) | 2 đường đo độc-lập trùng nhau (C11 `diary-0-delta`) |
| S-10 | detector INFORM **tự sinh trong phiên** | 13 → **16**, cả 3 flag mới trỏ vào run-folder S173 | phiên đang tự tạo flag cho chính nó |
| S-11 | `class_repeat` vượt xa ngưỡng nhảy | **8/12 class ≥ 4** vs `jump=3`; đỉnh **11** | deep vẫn 7/15, chưa nhảy |
| S-12 | impl-fe chưa hồi hết | **12/13 = 92%**; từng **13/13 @S154** | vai DUY NHẤT < 100% |
| S-13 | l2_index đổi ĐỊNH-NGHĨA giữa 2 mốc | MAIN 47,3% **nhưng** tổng **23.588 = 115,2%** cap | 95,14% và 47,3% **không cùng phép đo** — cấm trừ thẳng |
| S-14 | nhãn mẫu-số flag lệch | detector **50** vs selfimprove **66** cùng 1 lần chạy | trích 1 trong 2 mà không kèm mẫu-số ⇒ báo sai |
| S-15 | 7 diary nguội | đỉnh `office-document` **26 ngày** | trục "tuổi" vẫn **CHƯA CÓ MÁY** nào đo (budget tự khai) |

**Nhường tường-minh:** #32 HCV (4 sub-md / 0 synthesis) ⇒ **`harvest-curator` (H2)**. Vai ĐO ghi số, không phán.

---

# 14. Caveat (khai thẳng, chống overclaim)

1. 🔴 **"read-only" = tool-set thiếu Write, KHÔNG phải sandbox.** Lượt này vai ĐO **CÓ ghi**: (a) chính file này (lệnh lead, chống #53); (b) `.claude/agent-memory/.mfe-state.json` +1 dòng history do chạy `mfe-eval` (file state riêng của mfe, `read_only_scope` cho phép). **Containment THẬT = lead soát `git status` sau lượt này.** Trạng-thái lúc vai này VÀO: `M .mfe-state.json` · `M .session-counter.json` · `M sub-tooling-auditor-open-S173.md` · `?? run.md`.
2. 🔴 **Số của tôi là số máy in lượt này**, không phải số nhớ. Chỗ nào không chạy được thì để N/A — kỳ này **0 trục N/A** (S172 có 5).
3. **`char/4` không phải tokenizer thật.** Mọi số tok là DẢI `[bytes/4 .. bytes/3.0]`; headroom dùng bytes/3.0 (xấu nhất). Thêm nữa headroom đo trên **file-floor ổn định** ⇒ **cận-TRÊN**; số thật nhỏ hơn.
4. **`measured` 17/23 ⇒ 6 vai KHÔNG có delta.** "0" ở 6 vai đó = **chưa từng đo**, cấm đọc thành "ổn định".
5. **Vai nạp theo registry = ảnh-chụp lúc khởi phiên** — file agent mới không hot-reload.

---

*(hết — con ĐO. Nấc 2 = `harness-refine` đọc 15 tín-hiệu trên. Nấc 3 = `harness-audit` chấm spec.)*

> 🔴 **Bổ-chính caveat 1 (đo SAU khi vai này xong, không phải lúc vào):** `git status --porcelain` ngay sau lượt = `M .session-counter.json` · `M harness-eval-return.md` · `M sub-harvest-curator-open-S173.md` · `M sub-lead-gap-open-S173.md` · `M sub-lead-stale-open-S173.md`. **`.mfe-state.json` KHÔNG còn hiện M** — Stop-hook `wal-flush.ps1` đã auto-commit nó giữa chừng. Nêu ra vì: nếu lead chỉ soát `git status` một lần lúc cuối thì **write của vai ĐO đã bị hook nuốt khỏi tầm nhìn** — backstop containment phải soi `git log`/diff của `wal:` commit, không chỉ working-tree.
