HARNESS-EVAL: MIXED — 38 trục / 13 REGRESSION · 11 HEALTHY · 14 MIXED

# harness-eval S189 (L15) — nấc 1/3 bộ-ba đồng-kiểm memory · con ĐO
> Vòng V3 trio-memory, AUTO 1 vòng/phiên giữa 2 bookend (owner @S151). Read-only, INFORM-only, propose-only.
> 🔴 MỌI số dưới đây = **instrument chạy TƯƠI trong lượt này**, stdout nguyên-văn. 0 số-từ-trí-nhớ.
> Ghi theo lối **artifact-first**: mỗi trục đo xong APPEND ngay, KHÔNG gom (bài #53 `skeleton-ruột-rỗng` S173 + 4 ca garble phiên này).

## §0 — Provenance: cái gì CHẠY, cái gì KHÔNG, vì sao

| instrument | trạng-thái lượt này | ghi-chú |
|---|---|---|
| `scripts/measure-agent-memory.ps1` | ✅ CHẠY TƯƠI, exit 0 | Đọc mã trước khi chạy: script **chỉ `ConvertTo-Json` ra stdout**, KHÔNG có `Set-Content`/`Out-File`/ghi `memory-budget.json` ⇒ chạy được trong cửa-sổ-đo đóng-băng Mirror C1. (Nguồn: `scripts/measure-agent-memory.ps1:36-41`.) |
| `scripts/mfe-eval.ps1` | (đang đo — xem §5) | ⚠️ Script này GHI đúng 1 file `.claude/agent-memory/.mfe-state.json` (budget `mfe.honest_caveats.read_only_scope` tự khai). |
| `scripts/memory-archive-gate.ps1` | (đang đo — xem §4) | DRY-RUN planner |
| `scripts/crystallized-backfill.ps1` | (đang đo — xem §6) | DRY planner |
| `scripts/nhip-no-probe.ps1` | (đang đo — xem §3) | |
| `.claude/agent-memory/memory-budget.json` | ✅ ĐỌC TƯƠI (485 dòng) | baseline `measured` + `tiers` + `h24_cadence` + `mfe` + `crystallized_backfill` |

**Caveat vai (khai thẳng, mỗi lượt):**
1. 🔴 *read-only = chặn-THIẾU-tool, KHÔNG phải sandbox.* Vai này không có Write/Edit lên code, nhưng **VẪN giữ Bash = kênh-ghi-mở**. Containment THẬT = lead soát `git status` + `git log` sau lượt. ⚠️ Bổ-sung từ S173: Stop-hook auto-commit `wal:` có thể **nuốt** file mới khỏi `git status` ⇒ backstop phải soi cả `git log`/diff, không chỉ working-tree.
2. 🔴 *vai nạp theo registry = ảnh-chụp lúc khởi phiên* — file agent MỚI không hot-reload.

---

## §1 — TRỤC l1_hot (byte MEMORY.md từng vai) — máy VỪA in

**Header máy in:** `soft_cap_l1_bytes: 30720` · `autoinject_cap_bytes: 25600` · **29 agent** (mẫu-số kỳ này = 29; S185 = 28; S173 = 23 ⇒ 🔴 CẤM so % / so tỉ-lệ xuyên kỳ, chỉ so số TUYỆT ĐỐI).

Bảng nguyên-văn (sort giảm dần theo `l1_hot_bytes`), cột `%auto` = /25600 do vai tính từ chính số máy:

```
lead-gap-auditor           l1=  27639  108.0%   l2v=  22645 l2i= 1234 l2g=   7112  over30k=False
ring2-audit                l1=  26652  104.1%   l2v=   8771 l2i=    0 l2g=      0  over30k=False
lead-stale-auditor         l1=  24975   97.6%   l2v=   8581 l2i=    0 l2g=      0  over30k=False
reviewer                   l1=  24473   95.6%   l2v= 253991 l2i=13941 l2g=  69925  over30k=False
cicd-monitor               l1=  24322   95.0%   l2v= 264257 l2i=23588 l2g= 122471  over30k=False
investigator-codebase      l1=  21996   85.9%   l2v= 171476 l2i=12448 l2g= 107741  over30k=False
ctx-verifier               l1=  21819   85.2%   l2v=      0 l2i=    0 l2g=      0  over30k=False
harvest-curator            l1=  21308   83.2%   l2v=  87605 l2i= 8325 l2g=  20317  over30k=False
ring1-audit                l1=  20924   81.7%   l2v=   6761 l2i=  325 l2g=      0  over30k=False
ctx-audit                  l1=  20460   79.9%   l2v=  11521 l2i=    0 l2g=      0  over30k=False
implementer-backend        l1=  19930   77.9%   l2v=  94752 l2i=10487 l2g=  84345  over30k=False
harness-audit              l1=  19877   77.6%   l2v=      0 l2i=    0 l2g=      0  over30k=False
frontend-designer          l1=  19869   77.6%   l2v=  19050 l2i= 2435 l2g=   3231  over30k=False
test-specialist            l1=  19331   75.5%   l2v=  37615 l2i= 6170 l2g=  33811  over30k=False
harness-refine             l1=  18825   73.5%   l2v=      0 l2i=    0 l2g=      0  over30k=False
harness-eval               l1=  18736   73.2%   l2v=      0 l2i=    0 l2g=      0  over30k=False
implementer-frontend       l1=  17983   70.2%   l2v=  47796 l2i= 5844 l2g=  44764  over30k=False
tooling-auditor            l1=  16912   66.1%   l2v=  89904 l2i= 3672 l2g=  18760  over30k=False
ctx-curator                l1=  13340   52.1%   l2v=      0 l2i=    0 l2g=      0  over30k=False
database-agent             l1=   9038   35.3%   l2v=      0 ...
investigator-api           l1=   9021   35.2%   l2v=      0 ...
back-end-reviewer-style    l1=   6019   23.5%   l2v=      0 ...
database-reviewer-style    l1=   4376   17.1%   l2v=      0 ...
front-end-reviewer-style   l1=   3857   15.1%   l2v=      0 ...
ring4-audit                l1=   3349   13.1%   l2v=      0 ...
office-document            l1=   3323   13.0%   l2v=      0 ...
ring5-audit                l1=   2474    9.7%   l2v=      0 ...
score-counter              l1=   2366    9.2%   l2v=      0 ...
score-count-auditor        l1=   2330    9.1%   l2v=      0 ...
```

**Số dẫn-xuất (vai tự cộng lại, không lấy của máy):**
- **TỔNG l1_hot 29 vai = 445.524 B**
- **Vượt `autoinject_cap` 25600 = 2 vai:** `lead-gap-auditor` **27.639** (+2.039) · `ring2-audit` **26.652** (+1.052)
- **Vượt `soft_cap` 30720 = 0 vai** (`l1_over_30kb=False` 29/29)
- **Vùng ÁP-SÁT 80–100% cap (chưa vượt) = 7 vai:** lead-stale-auditor 24.975 (còn 625 B) · reviewer 24.473 (còn 1.127) · cicd-monitor 24.322 (còn 1.278) · investigator-codebase 21.996 · ctx-verifier 21.819 · harvest-curator 21.308 · ring1-audit 20.924

### 🔴 §1-bis — BÀI S186 ÁP NGAY: đổi sang KÝ-TỰ trước khi neo bất kỳ kết luận "over-cap" nào
Governor đếm **BYTE**; cơ-chế cắt/auto-inject đếm **KÝ-TỰ**. Vai này đã sai 2 tầng ở S186 vì bỏ bước này. Đo lại 6 vai đầu bảng bằng cả hai đơn-vị (`wc -c` vs `len(read())`):

| vai | BYTE | KÝ-TỰ | gap-tới-25600 theo BYTE | gap theo KÝ-TỰ |
|---|---|---|---|---|
| lead-gap-auditor | 27.639 | **24.118** | **−2.039 (VƯỢT)** | +1.482 (CHƯA vượt) |
| ring2-audit | 26.652 | **23.078** | **−1.052 (VƯỢT)** | +2.522 (CHƯA vượt) |
| lead-stale-auditor | 24.975 | 21.988 | +625 | +3.612 |
| reviewer | 24.473 | 21.421 | +1.127 | +4.179 |
| cicd-monitor | 24.322 | 21.980 | +1.278 | +3.620 |
| harvest-curator | 21.308 | 19.481 | +4.292 | +6.119 |

⇒ **Phát biểu ĐÚNG ĐƠN-VỊ:** *2 vai vượt cap trong đơn-vị BYTE (đơn-vị governor dùng); **0 vai** vượt trong đơn-vị KÝ-TỰ.* Ai đọc "2 over-cap" mà suy ra "2 vai đang bị cắt hot-inject" là **suy sai tầng** — đúng như ca S186.

**VERDICT trục l1_hot: MIXED** — 0/29 vượt soft-cap (tốt thật) NHƯNG 2 vai vượt autoinject-cap theo byte + 7 vai áp sát 80-100%; tức 9/29 vai nằm trong vùng không còn chỗ thở.

---

## §2 — TRỤC baseline `measured` (khối `memory-budget.json`) — 🟢 ĐẢO CHIỀU LỚN NHẤT KỲ NÀY

Nợ mang vào theo brief (HANDOFF NEXT-em @S188): *"khối `measured` **stale 5 kỳ**, 19/29 phủ, 18/19 lệch, đỉnh 13,14×"*.
Vai này ĐO LẠI bằng cách so **từng row** `measured[*].l1_hot` với số máy VỪA in ở §1:

```
measured rows = 29   machine agents = 29
in measured not on disk: []       on disk not in measured: []
KHOP  27/29 row (byte-exact)
LECH  harness-refine   base=18046  now=18825  delta=  +779  (+4,3%)
LECH  ring1-audit      base=27394  now=20924  delta= -6.470  (-23,6%)
tong lech = 2/29
```

- **Độ phủ 19/29 → 29/29** (`_note` khối: *"S188 2026-08-10 FRESH re-sync bang MAY (measure-agent-memory.ps1 -> transcribe, KHONG hand-edit) — tra no E3"*). ⇒ **Nợ E3 ĐÃ LAND THẬT**, không phải lời hứa.
- **Độ lệch 18/19 → 2/29**; đỉnh lệch **13,14× → 23,6%**.
- 🔴 **Caveat CHỐNG-GOODHART (bắt buộc đọc kèm):** con số đẹp này **một phần là tautology** — baseline vừa được ghi từ chính máy này vài giờ trước, khớp là đương nhiên. Datum có giá-trị nằm ở chỗ khác: **2 row đã trôi CHỈ trong ~3 giờ** kể từ lúc re-sync (`harness-refine` ghi thêm, `ring1-audit` bị drain −6.470). ⇒ **Chu-kỳ bán-rã của baseline này ngắn hơn một phiên.** Đây đúng bài S153 *"bản chụp instrument có hạn dùng ngắn hơn một phiên"*, nay đo được trên chính khối baseline.

**VERDICT trục baseline `measured`: HEALTHY** (đảo từ REGRESSION-4-kỳ-liên-tiếp) — kèm caveat bán-rã ở trên.

---

## §2-bis — 2 nợ đích-danh trong brief: ĐO LẠI, CẢ HAI ĐỀU LỆCH SO VỚI BRIEF

Brief (HANDOFF NEXT-em @S188) mang sang 2 con số. Vai này KHÔNG chép mù — đo lại bằng `measure-agent-memory.ps1` + `wc -c` + `stat`:

| nợ theo brief | số brief | **số máy VỪA in** | phán |
|---|---|---|---|
| `harvest-curator/MEMORY.md` "30.231 B, vượt đường-cắt ~25.000 tới 2.298" | 30.231 B | **21.308 B** | 🔴 **BRIEF STALE — nợ ĐÃ ĐÓNG.** Nay **DƯỚI** đường-cắt 25.000 tới **3.692 B**. Cả 2 số trong chính câu brief cũng không tự khớp nhau (30.231 − 25.000 = 5.231 ≠ 2.298). Bằng-chứng đóng: `archive/2026-07.md` mtime **2026-08-10 21:01:07**, `MEMORY.md` mtime **21:02:03** ⇒ có drain L1→L2 tại closeout S188. |
| `reviewer/MEMORY.md` "còn 485 ký-tự là chạm" | 485 | **1.127 B** tới cap 25.600 · **527 B** tới đường-cắt 25.000 · **4.179 KÝ-TỰ** tới 25.600 | ⚠️ **Lệch + LẪN ĐƠN-VỊ.** Không có phép đo nào hôm nay ra 485. Con số 485 chỉ tái dựng được nếu hiểu là *BYTE tới đường-cắt 25.000* tại thời điểm reviewer = 24.515 B; nay 24.473 B (−42 B) ⇒ nhãn "ký-tự" là **sai đơn-vị**, đúng phải là "byte". |

**VERDICT trục nợ-mang-sang: MIXED** — 1 nợ đã đóng thật (tin tốt), 1 nhãn sai đơn-vị (cùng lớp lỗi S186).

---
## §3 — TRỤC nhịp-nợ (`nhip-no-probe.ps1`) — 🔴 2/6 VẾ CỦA LEAD ĐÃ TRÔI TRONG PHIÊN

**Dòng máy VỪA in (nguyên-văn, exit 0):**
```
NHIP-NO: kiem light 3/6 deep 1/1 OVERDUE:deep | tran-bo-nho 2 over-cap l2idx 0 over | run-chua-gom 1 | pull-cach 1 ngay | so-yc treo 6 / nhac2+ 3 (muc 22, gop 5 dong nhac-lai)
```

**Đối chứng với dòng lead đưa trong brief:**

| vế | lead đo | **máy VỪA in** | phán |
|---|---|---|---|
| kiem light | 3/6 | 3/6 | KHỚP |
| kiem deep | 1/1 OVERDUE:deep | 1/1 OVERDUE:deep | KHỚP |
| tran-bo-nho | 2 over-cap | 2 over-cap | KHỚP (= `lead-gap-auditor` + `ring2-audit`, §1) |
| l2idx | 0 over | 0 over | KHỚP — 🔴 nhưng xem §3-bis, đây là số ĐÚNG-MÀ-VÔ-CẢM |
| **run-chua-gom** | **0** | **1** | 🔴 **LỆCH** |
| **pull-cach** | **0 ngay** | **1 ngay** | 🔴 **LỆCH** |
| so-yc | treo 6 / nhac2+ 3 | treo 6 / nhac2+ 3 `(muc 22, gop 5 dong nhac-lai)` | KHỚP số; lead **cắt mất đuôi** `(muc 22, gop 5 dong nhac-lai)` |

**Cả 2 lệch đều GIẢI THÍCH ĐƯỢC bằng cơ-chế, không phải ai đo sai:**
- `run-chua-gom 0→1`: probe đếm run-folder chưa có `*-synthesis.md` non-empty (`nhip-no-probe.ps1:156-182`). Folder `2026-08-10-S189-bookstart-open/` tạo lúc **23:51**, chưa có synthesis ⇒ **chính phiên này tự sinh flag cho mình**. Tái-hiện đúng ca S173.
- `pull-cach 0→1 ngay`: probe tính `[datetime]::Now.Date - newest.Date` (`:208`) ⇒ **đồng hồ qua nửa đêm** (lead đo ngày 08-10, vai đo 00:0x ngày **08-11**) ⇒ +1 ngày mà **không có gì thay đổi trên đĩa**.
- ⇒ **Bài S159 lặp lần thứ ba:** *số đo trước/sau một tick là hai số khác nhau.* Nay có thêm biến-thể: **tick LỊCH** (nửa đêm) chứ không chỉ tick counter.

### §3-bis — `l2idx 0 over` là số ĐÚNG nhưng CHE một trạng-thái vượt cap
`measure-agent-memory` in `cicd-monitor l2_index = 23588` với `tiers.l2_index.cap_bytes = 20480` ⇒ **115,2% cap**. Probe vẫn in `0 over` vì `split_rule_S167` cố ý chỉ đo **file MAIN**. Đo tách 2 file:
```
_INDEX.md         9.682 B   <- MAIN (file có cap) = 47,3% cap 20480  -> ĐÚNG là 0 over
_INDEX-2026-H1.md 13.906 B  <- rotated, cold tier, KHÔNG cap (by design)
TỔNG trục l2_index          23.588 B = 115,2% cap
```
🔴 Đây **KHÔNG phải bug** — budget khai tường minh *"Probe deliberately measures MAIN file only - by design, do not 'fix' it"*. Nhưng nó là **hình-dạng-output đọc thành sạch** (lớp lỗi S172): một dòng `0 over` không nói được rằng trục này đang mang 23.588 B. Vai chỉ NÊU, không đề-xuất.

**VERDICT trục nhịp-nợ: MIXED** — `OVERDUE:deep` đang bật (deep_every=1 ⇒ mọi bookend phải chạy deep, đây là thiết-kế owner @S185 chứ không phải nợ tích tụ) · 2 vế lệch do tick · 1 vế đúng-mà-vô-cảm.

---

## §4 — TRỤC archive-gate (strike) + A7 integrity — `memory-archive-gate.ps1` DRY

Xác minh chế-độ trước khi chạy: script có `param(... [switch]$Apply = $false)`, strike chỉ persist dưới `-Apply` (`:222-224`). Vai chạy **KHÔNG cờ** ⇒ máy tự in `mode: DRY-RUN (no writes at all)` ⇒ **0 ghi**.

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

**PASS 1 — over-cap planner, 29 dòng, 2 dòng `YES`:**
```
lead-gap-auditor   27639  YES   entries 8  strike 1  after-est ~25638  WARN keep-floor hit (5); cannot auto-drain - SPLIT/condense entries by hand
ring2-audit        26652  YES   entries 7  strike 2  after-est ~24928  PROPOSE archive (strike 2>=2): move 2 lowest-value (position tiebreak) -> curate L1->L2 by hand
    [D3 value-gate] 1 value-protected logical entr(y/ies) HARD-SKIPPED from the drain set ... 9-token grep = lower-bound
```
- 27/29 dòng `no` / strike 0 / resolve `ok`.
- 🔴 **`lead-gap-auditor` là ca ĐÁNG CHÚ Ý NHẤT của trục này:** máy tự khai `after-est ~25638` — tức **kể cả drain xong vẫn còn 25.638 > cap 25.600**, và lý do là **keep-floor 5 chặn**: `cannot auto-drain`. Đây là trạng-thái **máy tự tuyên bố không tự giải được**, khác hẳn `ring2-audit` (drain xuống ~24.928 là dưới cap).
- `ring2-audit` **strike 2 ≥ threshold 2** ⇒ đã đủ điều-kiện PROPOSE. (Khớp datum H17 spec-audit lead đưa: `GAP:MED ring2-audit 26.652B > cap 25.600` — **số byte KHỚP TUYỆT ĐỐI** với máy của vai.)

**PASS 2 — A7 archive-integrity:**
```
A7 GATE PASS  -  total pointers 429, resolved 429, failed 0
```
11 sub có archive; 10 `PASS`, 1 `N/A` (`ring1-audit`: `_INDEX.md + 2 archive file(s) -> N/A pointers 0`).
Phân rã nguyên-văn: cicd-monitor 112 · reviewer 57 · investigator-codebase 56 · harvest-curator 48 · implementer-frontend 44 · implementer-backend 43 · test-specialist 33 · tooling-auditor 20 · frontend-designer 9 · lead-gap-auditor 7 · ring1-audit 0.
Vai tự cộng lại: 112+57+56+48+44+43+33+20+9+7+0 = **429 ✓** (khớp tổng máy in — đúng lớp lỗi meta-count từng ngã S151/S153/S159/S173).

**VERDICT trục archive-gate: MIXED** — A7 **HEALTHY tuyệt đối** (429/429, 0 hỏng, giữ nguyên mức S173/S185); strike-lane **REGRESSION**: 2 vai over-cap, trong đó 1 vai máy tự khai **không thể tự drain về dưới cap**.

### 🔴 §4-bis — HAI INSTRUMENT, CÙNG MỘT FILE, HAI SỐ KHÁC NHAU, CÙNG MỘT LƯỢT
| nguồn | `tooling-auditor/MEMORY.md` |
|---|---|
| `measure-agent-memory.ps1` (chạy ~00:03) | **16.912 B** |
| `memory-archive-gate.ps1` (chạy ~00:04) | **16.614 B** |
| `stat` ngay sau đó, 3 lần liên tiếp | **16.614 B**, mtime **2026-08-11 00:04:07** |

Chênh **−298 B**. `mtime` nằm **GIỮA** hai lần chạy ⇒ vai `tooling-auditor` đang **ghi diary đồng thời** trong lúc vai này đo (run-folder có `sub-tooling-auditor-open-S189.md` mtime 00:02).
⇒ **Không ai sai số.** Nhưng nó chứng: **cửa-sổ-đo trong một bookend KHÔNG đóng băng**; một bảng số của vai này là ảnh chụp tại thời-điểm, không phải trạng-thái phiên. Bổ-sung cụ-thể cho S153 *"bản chụp instrument có hạn dùng ngắn hơn một phiên"* → nay đo được **hạn dùng ngắn hơn một PHÚT**.
🔴 Hệ quả cho người đọc số của vai: số §1 (`tooling-auditor 16.912`) là số **CŨ HƠN** số §4 (`16.614`). Vai KHÔNG sửa lại §1 — giữ nguyên-văn cả hai và khai chênh, vì sửa là đánh mất chính datum này.

---
## §5 — TRỤC crystallized headroom (`crystallized-backfill.ps1`) — 🔴 CHUỖI LẦN ĐẦU **KHÔNG GIẢM**

**stdout máy VỪA in (exit 0, nguyên-văn phần số):**
```
source                                            bytes    state
docs/STATUS.md                                   240251       ok
docs/HANDOFF.md                                  220577       ok
.claude/governance/ACTIVE-MARKS.md                36153       ok
docs/changelog/migration-todos.md                 90161       ok
docs/gotchas.md                                  122892       ok
.claude/agents/README.md                          62300       ok
TOTAL                                            772334

Tran tong (live cap)   : 380000 tok
hotload measured       : 772334 bytes
tok RANGE [low..high]  : [193084 .. 257445] tok  (bytes/4 .. bytes/3.0)
measured_headroom      : 122555 tok  (cap - tok_high, worst-case)
target (owner)         : 210000 tok
expected_backfill      : 122555 tok  (min(target,headroom)=headroom => headroom binds (target exceeds room))
  precondition MET (target>0 AND headroom>0)
```
Vai tự cộng lại 6 nguồn: 240.251+220.577+36.153+90.161+122.892+62.300 = **772.334 ✓** (khớp TOTAL máy in).

### §5.1 — CHUỖI MỐC: **liệt MỌI mốc TRƯỚC khi trừ bất kỳ đạo-hàm nào** (luật do erratum S173 của chính vai này đẻ ra)
Dựng bằng `grep -rn "measured_headroom" .claude/ docs/` — **KHÔNG lấy từ trí-nhớ**, không tin danh-sách kỳ trước:

| # | mốc | headroom (tok) | nguồn trên đĩa |
|---|---|---|---|
| 1 | S144 07-22 | 199.759 | `2026-07-22-S144-trio-first-run/harness-eval-return.md:63` |
| 2 | S152 07-25 | 184.502 | `2026-07-25-S152-h24-open-bookend/machine-baseline.md:17` |
| 3 | S153 07-26 | 181.228 | `2026-07-26-S153-bookend-open/harness-eval-return.md:25` |
| 4 | S154 07-26 | 176.696 | `2026-07-26-S154-bookend-open/harness-eval-return.md:163` |
| 5 | S159 07-29 | 172.247 | `2026-07-29-S159-bookend-open/harness-eval-return.md:35` |
| 6 | S162 07-30 | 165.767 | `2026-07-30-S162-bookend-close/harness-eval-return.md` |
| 7 | S163 07-30 | 160.924 | `2026-07-30-S163-bookend-open/run.md:31` |
| 8 | S169 08-01 | 152.968 | `2026-08-01-S169-bookend-open/harness-eval-return.md:146` |
| 8b | S169 08-01 *(phép đo thứ 2 cùng phiên)* | **153.117** | `…S169…/sub-lead-gap-open-S169.md:144` (hotload 680.648 vs 681.096 ⇒ **2 số máy lệch 149 tok trong CÙNG phiên**) |
| 9 | S173 08-05 | 148.183 | `2026-08-05-S173-bookend-open/harness-eval-return.md:105` |
| 10 | S185 08-09 | 134.573 | `2026-08-09-S185-bookend-close/script-arm-output.md:399` |
| 11 | S188 08-10 @eval | 125.828 | `2026-08-10-S188-bookend-close/harness-eval-return.md:32` |
| 12 | S188 08-10 @audit-tick (~1,5h sau) | 122.555 | `2026-08-10-S188-bookend-close/harness-audit-return.md:52` |
| **13** | **S189 08-11 (MÁY VỪA IN)** | **122.555** | lượt này |

**Đạo-hàm — chỉ tính SAU khi đã liệt đủ 13 mốc:**
- **Bước kỳ này = 122.555 − 122.555 = 0.** 🔴 **LẦN ĐẦU trong toàn chuỗi 13 mốc, bước không âm.** Trước đó: 0 lần đảo chiều, 0 lần đứng yên.
- So mốc S188 **@eval** (125.828): **−3.273**. ⇒ **Chọn mốc nào ra hai câu chuyện khác nhau** — vai in CẢ HAI, không chọn hộ.
- Toàn chuỗi S144→S189: **−77.204 tok** qua 20 ngày.
- 🔴 **KHÔNG phán nguyên-nhân** (đó là việc con ĐỀ-XUẤT). Chỉ nêu dữ-kiện cơ-học: `hotload measured` **772.334 B = y hệt** giá trị suy ra từ mốc 12 ⇒ 6 file nguồn **không đổi byte nào** từ 21:xx hôm qua tới giờ. Đứng-yên này là **trạng-thái**, không phải cải-thiện.

### §5.2 — Phân rã nguồn phình (so mốc S185 có số per-file trên đĩa)
| nguồn | S185 (`…S185…/harness-eval-return.md:22`) | **S189 máy vừa in** | delta |
|---|---|---|---|
| docs/HANDOFF.md | 196.350 | **220.577** | **+24.227** |
| docs/STATUS.md | 234.644 | **240.251** | +5.607 |
| docs/gotchas.md | 120.260 | **122.892** | +2.632 |
| docs/changelog/migration-todos.md | 88.151 | **90.161** | +2.010 |
| .claude/agents/README.md | 60.723 | **62.300** | +1.577 |
| .claude/governance/ACTIVE-MARKS.md | 36.153 | **36.153** | **0** |
| **TỔNG** | 736.281 | **772.334** | **+36.053** |
Vai tự cộng: 24.227+5.607+2.632+2.010+1.577+0 = **36.053 ✓**. **HANDOFF một mình gánh 24.227/36.053 = 67,2%** phần phình (S188 đo 66% — cùng hướng, độc-lập).

### §5.3 — Khoảng cách target
`target (owner) = 210.000` vs `measured_headroom = 122.555` ⇒ **thiếu 87.445 tok**. Chuỗi thiếu-hụt: S173 −61.817 · S185 −75.427 · S188 −84.172 · **S189 −87.445**.
`expected_backfill` = **122.555** với chú-thích máy `headroom binds (target exceeds room)` ⇒ precondition **MET vì headroom>0**, KHÔNG phải vì đủ target. Đây đúng nội-dung carry `underfill-mau-so`.

**VERDICT trục crystallized: REGRESSION** — headroom 122.555 < target 210.000 (thiếu 87.445, sâu nhất toàn chuỗi); bước kỳ này = 0 nhưng đó là do 6 file nguồn chưa bị chạm, **không đủ để lật verdict**. 🔴 In `HEALTHY` cạnh một chuỗi 13 mốc chưa từng đảo chiều sẽ là Goodhart-flip.

---

## §6 — TRỤC state-file của instrument (ĐỌC, không chạy) — 2 sổ đếm đang ĐÓNG BĂNG

### §6.1 `.claude/agent-memory/.archive-strikes.json` — mtime **2026-08-07 11:10**, 738 B
- **Stale 4 ngày** (nay 08-11) — trong khi `memory-archive-gate` đã chạy nhiều lượt ở chế-độ DRY (DRY **không persist**, `:229`).
- **Phủ 26 row / 29 vai.** 🔴 **Thiếu đúng 3 vai:** `ring5-audit` · `score-counter` · `score-count-auditor`.
- **Nội dung file:** `ring2-audit: 1` · `investigator-codebase: 1` · 24 row còn lại `0`.
- 🔴 **VÊNH với máy vừa in (§4):** gate in `ring2-audit strike **2**` (file ghi 1) và `investigator-codebase strike **0**` (file ghi **1**). Giải thích cơ-học: DRY hiển thị **giá-trị dự-kiến** (over-cap ⇒ +1; dưới cap ⇒ reset 0) nhưng **không ghi xuống**. ⇒ Con số `1` của `investigator-codebase` là **strike THỪA còn sót từ kỳ nó từng over-cap**; nay nó 21.996 B (dưới cap) mà sổ vẫn giữ 1.
- ⇒ **Sổ strike và máy strike đang kể hai chuyện khác nhau, và không lượt nào hoà giải được vì chưa ai chạy `-Apply`.**

### §6.2 `.claude/agent-memory/.mfe-state.json` — mtime **2026-08-10 21:10**, 5.690 B
- `strikes_total: **25**` · `rca_entries: 16` · `warn_baseline: **25**` · `at: 2026-08-10`.
- **`history` có 30 bản ghi**; vai đọc từng dòng: **`strikes_total = 25` ở CẢ 30/30 bản ghi**, trải từ `2026-07-25 23:55` → `2026-08-10 21:10` = **16 ngày**.
- `rca_entries` có nhúc nhích đúng **1 lần**: 14 → 16 tại `2026-07-30 16:37`, rồi đứng im 16 cho tới nay.
- ⇒ **Anchor 25 bất động qua 30 lần chạy / 16 ngày**, và `warn_baseline` cũng = 25 ⇒ **latch cảnh-báo Goodhart không bao giờ có thể kích** khi số không đổi. Đây là trục **đúng-mà-vô-cảm** thứ ba trong lượt này (cùng lớp `l2idx 0 over` §3-bis).

**VERDICT trục state-file: REGRESSION** — 2/2 sổ đếm đóng băng; 1 sổ thiếu 3 vai và mâu thuẫn với chính máy sinh ra nó.

---
## §7 — TRỤC MFE (`mfe-eval.ps1`) — FIT / anchor / per-role-pct

🔴 **KHAI GHI TRƯỚC KHI ĐƯA SỐ:** `mfe-eval.ps1` là instrument **DUY NHẤT trong 5 cái có GHI** — nó ghi đúng 1 file `.claude/agent-memory/.mfe-state.json` (budget `mfe.honest_caveats.read_only_scope` tự khai: *"MFE WRITES exactly one file … 'READ-ONLY' is scoped to token_governor … it is NOT the claim 'writes nothing'"*). Vai này **CÓ chạy** (khác S185 nơi vai cố ý bỏ) vì 2 lý-do: (a) brief yêu-cầu đích danh; (b) hai kỳ S168/S172 khai `N/A` đã bị `harness-audit` chứng là **sai loại** (script chạy được suốt, chỉ không ai gọi) và chôn mất datum per-role. ⇒ **Lượt này để lại đúng 1 vết ghi trên đĩa; lead soát `git status`/`git log` sẽ thấy `.mfe-state.json`.**

**stdout máy VỪA in (exit 0, `=== MFE … 2026-08-11 ===`):**

**(a) Mẫu-số LEAD:**
```
marks(Active+High)=11  AS-classes=15  net-extra-guards=5  net-extra-recurring-gotchas=7
=> DENOMINATOR = 38 items  (raw before dedup: marks 11 + AS 15 + guards 16 + recurring 8)
```
Vai tự cộng: 11+15+5+7 = **38 ✓**.

**(b) Coverage-FIT:**
```
span bytes=30945  =>  ~7736 - 10315 tok  /  cap 380000 tok  =  2.71% worst-case
FIT = PASS (worst-case fits; headroom huge - must-remember set is tiny vs cap)
```

**(c) Goodhart anchor:**
```
error-ledger: strikes_total=25  RCA_entries=16  AS-classes=15
(rule: if strikes rise across runs while coverage stays high -> the score lies. warn-baseline=25 last_run_strikes=25)
```
🔴 `warn-baseline = last_run_strikes = 25` ⇒ **latch cảnh-báo về mặt số-học không thể kích** (điều-kiện là strikes *tăng*). Khớp §6.2: 30/30 bản ghi history đều 25 qua 16 ngày. **Anchor này đang đo một đại-lượng đứng yên** — trục "đúng-mà-vô-cảm" thứ tư trong lượt.

**(d) age-band:** `marks with parseable date=11; >30d old but still Active=6 -> KEPT (status-driven, age-blind)` — **đúng thiết-kế** (mark RC-…10-29-11: age = FLAG, không phải cut).

**(e) per-role coverage — 29 dòng, khớp roster 29:**
```
cicd-monitor 10/10=100%   ctx-audit 10/10=100%   ctx-curator 6/6=100%   ctx-verifier 7/7=100%
database-agent 7/7=100%   frontend-designer 2/2=100%   harness-audit 5/5=100%   harness-eval 5/5=100%
harness-refine 5/5=100%   harvest-curator 7/7=100%   investigator-api 7/7=100%   investigator-codebase 8/8=100%
lead-gap-auditor 6/6=100% lead-stale-auditor 6/6=100% office-document 6/6=100%  reviewer 8/8=100%
ring1-audit 5/5=100%      ring2-audit 5/5=100%       ring4-audit 5/5=100%       test-specialist 6/6=100%
tooling-auditor 8/8=100%
implementer-backend  17/18 = 94%
implementer-frontend 12/13 = 92%
N/A x6: back-end-reviewer-style · database-reviewer-style · front-end-reviewer-style · ring5-audit · score-count-auditor · score-counter
        ("no numbered anti-pattern / NEVER block in role-file to extract")
```
Vai tự cộng lại: **23 vai có số** (21 vai = 100%, 2 vai < 100%) + **6 vai N/A** = **29 ✓**. Tổng gộp tử/mẫu = **163/165 = 98,8%**.
🔴 **6 vai N/A KHÔNG phải "sạch" — là NGOÀI TẦM ĐO.** Mẫu-số của chúng = 0 vì role-file không có block anti-pattern đánh số để trích; nghĩa là 6/29 vai (20,7% roster) **không có bất kỳ phép đo retention nào**, kể cả xấu. Cùng lớp với `l2idx 0 over` (§3-bis) và anchor 25 (§7c): **vắng-mặt trông giống ổn**.
🔸 `[SUB-WORKFLOW]` máy tự khai `N/A by design` (fan-out agent ephemeral, không có diary) — cái N/A này **hợp-lệ**, khác 6 cái trên.

**VERDICT trục MFE: MIXED** — FIT PASS + 21/23 vai 100% (thật sự tốt) NHƯNG anchor đứng yên không kích được + 6/29 vai ngoài tầm đo.

---

## §8 — TRỤC ĐỘ-GIỮ (retention / nhãn phiên trên 29 diary)

🔴 **CONTROL-DƯƠNG CHẠY TRƯỚC khi dám báo bất kỳ số thấp nào** (luật cứng sau ca S172 suýt phát REGRESSION giả vì glob sai):

| phép | kết quả | vai trò |
|---|---|---|
| tổng diary | **29** | mẫu-số |
| `grep -l "S1"` | **29/29** | ✅ **CONTROL-DƯƠNG ĐẠT** — glob đúng, corpus không rỗng |
| `grep -l "S185"` | 15/29 | control-dương thứ 2 |
| `grep -l "S188"` | 13/29 | control-dương thứ 3 |
| **`grep -l "S189"`** | **1/29** | số cần đo |

- Diary DUY NHẤT mang nhãn `S189` = **`tooling-auditor/MEMORY.md`**.
- **Phép đo thứ 2 độc-lập (mtime, không dựa vào nhãn):** 13/29 diary có mtime > `2026-08-10 20:00`. Nhưng **12/13 rơi vào cửa-sổ 20:30–21:05 = closeout S188**, chỉ **1/13 thuộc phiên này** (`tooling-auditor` 00:04:07).
- **Vai spawn trong phiên S189 = 2** (run-folder có `sub-tooling-auditor-open-S189.md` + `sub-score-counter-open-S189.md`). Trong đó:
  - `tooling-auditor` → diary mtime **2026-08-11 00:04** ⇒ **CÓ tự ghi** ✅
  - `score-counter` → diary mtime **2026-08-08 12:20**, 2.366 B ⇒ **KHÔNG ghi** (và 2.366 B đúng bằng con số `measured` seed @S181 kèm chú *"SO 0 = CHUA DO"*) ⇒ vai này đã chạy 2 lần mà diary chưa từng nhúc nhích.
- ⇒ **1/2 vai spawn tự ghi.** Khác các kỳ trước (S173: 0/4; S186: gap NHÃN chứ không gap GHI) — kỳ này gap là **THẬT với 1 vai cụ-thể**, kiểm được bằng cả 2 phép.

**VERDICT trục độ-giữ: REGRESSION** — nhãn 1/29 và 1/2 vai spawn không để lại vết nào trên diary của nó.

---

## §9 — BẢNG VERDICT TỔNG: **38 trục** (vai TỰ CỘNG LẠI trước khi phát)

| # | trục | số máy VỪA in | baseline | verdict |
|---|---|---|---|---|
| 1 | l1_hot vs `soft_cap` 30720 | 0/29 vượt (`l1_over_30kb=False` 29/29) | tiers.l1_hot | **HEALTHY** |
| 2 | l1_hot vs `autoinject_cap` 25600 | **2/29 vượt** (lead-gap 27.639 · ring2 26.652) | cap 25600 | **REGRESSION** |
| 3 | l1_hot vùng áp-sát 80–100% cap | **7 vai** (đỉnh lead-stale còn 625 B) | — | MIXED |
| 4 | đơn-vị BYTE vs KÝ-TỰ | 2 vượt (byte) / **0 vượt (ký-tự)** | bài S186 | MIXED |
| 5 | `measured` độ phủ | **29/29** | S186/S188: 19/29 | **HEALTHY** |
| 6 | `measured` độ khớp | **27/29 byte-exact** | S186: 18/19 lệch, đỉnh 13,14× | **HEALTHY** |
| 7 | `measured` bán-rã | **2 row trôi trong ~3h** (harness-refine +779 · ring1 −6.470) | — | MIXED |
| 8 | nợ `harvest-curator` | **21.308 B** (dưới đường-cắt 25.000 tới 3.692) | brief: 30.231 B | **HEALTHY** |
| 9 | nợ `reviewer` "485 ký-tự" | 1.127 B / 4.179 ký-tự tới cap | brief: 485 | MIXED (sai đơn-vị) |
| 10 | nhịp `kiem light` | **3/6** | lead: 3/6 | **HEALTHY** |
| 11 | nhịp `kiem deep` | **1/1 OVERDUE:deep** | `deep_every=1` (owner S185) | MIXED |
| 12 | `run-chua-gom` | **1** | lead đo: **0** | **REGRESSION** |
| 13 | `pull-cach` | **1 ngay** | lead đo: **0 ngay** | MIXED (tick lịch) |
| 14 | `so-yc` | treo **6** / nhac2+ **3** `(muc 22, gop 5 dong)` | lead: 6/3, cắt đuôi | MIXED |
| 15 | `l2_index` MAIN (file có cap) | **9.682 / 20.480 = 47,3%** | cap 20480 | **HEALTHY** |
| 16 | `l2_index` TỔNG cicd-monitor | **23.588 = 115,2% cap** | cap 20480 | **REGRESSION** |
| 17 | archive-gate strike lane | **2/29 `YES`** | strike_threshold 2 | **REGRESSION** |
| 18 | `lead-gap-auditor` khả-năng tự giải | **after-est ~25.638 > cap**, `cannot auto-drain` | keep-floor 5 | **REGRESSION** |
| 19 | `ring2-audit` strike | **2 ≥ 2 ⇒ PROPOSE archive** | H17 GAP:MED 26.652 (KHỚP) | **REGRESSION** |
| 20 | A7 archive-integrity | **429/429 resolved, failed 0** | S185/S173: 429/429 | **HEALTHY** |
| 21 | A7 `ring1-audit` | **N/A — pointers 0** (có `_INDEX` + 2 file) | — | MIXED |
| 22 | **độ ổn-định của THƯỚC** | `tooling-auditor` **16.912 → 16.614** cùng lượt | — | **REGRESSION** |
| 23 | crystallized headroom vs target | **122.555** vs **210.000** ⇒ **thiếu 87.445** | S188 −84.172 | **REGRESSION** |
| 24 | chuỗi headroom 13 mốc | bước kỳ này **= 0** (lần đầu không giảm) | 12 bước trước đều âm | MIXED |
| 25 | hotload floor | **772.334 B** (+36.053 vs S185); HANDOFF gánh **67,2%** | S185 736.281 | **REGRESSION** |
| 26 | `expected_backfill` precondition | **MET**, 122.555, `headroom binds` | S185/S188 MET | MIXED |
| 27 | `.archive-strikes.json` | stale **4 ngày** · phủ **26/29** · **vênh** với máy (ring2 1↔2, inv-cb 1↔0) | mtime 08-07 11:10 | **REGRESSION** |
| 28 | `.mfe-state.json` anchor | **25 bất động 30/30 bản ghi / 16 ngày** | warn_baseline 25 | **REGRESSION** |
| 29 | MFE Coverage-FIT lead | **PASS** — 30.945 B = 2,71% cap worst-case | cap 380000 | **HEALTHY** |
| 30 | MFE mẫu-số lead | **38 items** (11+15+5+7 ✓) | S168/S172 khai N/A (sai loại) | **HEALTHY** |
| 31 | MFE Goodhart anchor | strikes **25** = warn-baseline **25** ⇒ không kích được | — | MIXED |
| 32 | MFE age-band | 11 mark có ngày, **6 >30d vẫn Active → KEPT** | age=false-proxy | **HEALTHY** |
| 33 | MFE per-role coverage | **21/23 vai = 100%**; gộp **163/165 = 98,8%** | S173: 23 role | **HEALTHY** |
| 34 | MFE 2 vai < 100% | impl-backend **17/18 = 94%** · impl-frontend **12/13 = 92%** | S172: impl-fe 11/13=85% | MIXED |
| 35 | MFE vai ngoài tầm đo | **6/29 `N/A`** (không có block anti-pattern để trích) | — | **REGRESSION** |
| 36 | độ-giữ — nhãn `S189` | **1/29** diary (control-dương `S1` = 29/29 ✅) | S188: 13/29 · S185: 15/29 | **REGRESSION** |
| 37 | độ-giữ — vai spawn tự ghi | **1/2** (`tooling-auditor` có · `score-counter` mtime 08-08) | S173: 0/4 | MIXED |
| 38 | độ-giữ — diary động 24h | **13/29** (12/13 thuộc closeout S188, 1/13 thuộc S189) | — | MIXED |

### TỰ CỘNG LẠI (bắt buộc — lớp lỗi meta-count đã ngã ở S151/S153/S159/S173)
**REGRESSION = 13** (#2,12,16,17,18,19,22,23,25,27,28,35,36) · **HEALTHY = 11** (#1,5,6,8,10,15,20,29,30,32,33) · **MIXED = 14** (#3,4,7,9,11,13,14,21,24,26,31,34,37,38)
**13 + 11 + 14 = 38 ✓** khớp tổng số dòng bảng.

# 🔴 VERDICT TỔNG: **MIXED** — 38 trục / **13 REGRESSION** · 11 HEALTHY · 14 MIXED

---

## §10 — BỐN CHỖ LEAD SẼ DẪN LẠI CHO ANH: đứng vững tới đâu

**(1) §2 "ĐẢO CHIỀU LỚN NHẤT KỲ NÀY" — đảo theo hướng NÀO, số nào chứng, AI đổi và LÚC NÀO.**
- **Hướng:** từ **REGRESSION 4 kỳ liên tiếp → HEALTHY**. Cụ-thể: độ phủ **19/29 → 29/29**; độ lệch **18/19 → 2/29**; đỉnh lệch **13,14× → 23,6%**.
- 🔴 **Ai đổi, lúc nào (trả lời thẳng lưu-ý Mirror C1 của lead):** khối `measured` **KHÔNG đổi trong phiên này và KHÔNG do vai này đổi**. Bằng-chứng đĩa: `memory-budget.json` mtime **2026-08-10 21:04:06**, commit **`ef1d4fbb` 2026-08-10 21:30** (closeout S188), `git status --porcelain` trên file này = **rỗng** (clean, không dirty). `_note` của khối tự khai: *"S188 2026-08-10 FRESH re-sync bang MAY (measure-agent-memory.ps1 -> transcribe, KHONG hand-edit) — tra no E3"*.
- ⇒ **Cửa-sổ đo đóng-băng Mirror C1 CÒN NGUYÊN.** Vai này chạy `measure-agent-memory.ps1` ở dạng **thuần đọc** — đã kiểm mã trước khi chạy (`:36-41` chỉ `ConvertTo-Json` ra stdout; **0** `Set-Content`/`Out-File`/ghi budget). §2 so **số máy hôm nay** với **baseline lead đã ghi tối qua**, không cần và không có re-sync nào trong lượt.
- ⚠️ **Caveat phải đi kèm khi dẫn:** một phần "khớp 27/29" là **tautology** — baseline vừa chép từ chính máy này ~3 giờ trước. Datum THẬT nằm ở **2 row đã trôi trong 3 giờ đó** ⇒ **baseline này có chu-kỳ bán-rã ngắn hơn một phiên.**

**(2) §3 "2/6 vế của lead đã TRÔI" — đích danh 2 vế, số lúc đầu phiên vs bây giờ.**
| vế | lead in đầu phiên | máy in lúc 00:0x | cơ-chế |
|---|---|---|---|
| `run-chua-gom` | **0** | **1** | folder `2026-08-10-S189-bookstart-open/` tạo 23:51, chưa có `*-synthesis.md` ⇒ **phiên tự sinh flag cho chính nó** (`nhip-no-probe.ps1:156-182`) |
| `pull-cach` | **0 ngay** | **1 ngay** | `[datetime]::Now.Date - newest.Date` (`:208`) ⇒ **qua nửa đêm** 08-10→08-11; **0 byte nào trên đĩa thay đổi** |
4 vế còn lại KHỚP tuyệt đối. ⇒ **Không ai đo sai** — cả 2 lệch đều là **hàm của THỜI ĐIỂM ĐO**, không phải của trạng-thái hệ. Đây là bài S159 lần thứ ba, thêm biến-thể mới: **tick LỊCH**, không chỉ tick counter.

**(3) §4-bis "hai instrument, cùng một file, hai số khác nhau, cùng một lượt" — đây là lỗi THƯỚC.**
- **File:** `.claude/agent-memory/tooling-auditor/MEMORY.md`
- **Số 1 = 16.912 B** — in bởi `scripts/measure-agent-memory.ps1` (~00:03)
- **Số 2 = 16.614 B** — in bởi `scripts/memory-archive-gate.ps1` (~00:04); `stat` 3 lần liên tiếp xác nhận 16.614, **mtime `2026-08-11 00:04:07`**
- **Chênh −298 B**, mtime nằm **GIỮA** hai lần chạy ⇒ vai `tooling-auditor` ghi diary **đồng thời** trong lúc đo.
- ⇒ **Cả hai instrument đều đúng; cái sai là giả-định "cửa-sổ đo trong một bookend là đóng băng".** Vai **CỐ Ý không sửa §1** cho khớp §4 — sửa là xoá mất chính datum. Hệ quả thực dụng: **mọi bảng số của vai này là ảnh-chụp-tại-thời-điểm**, hạn dùng đo được lần này là **dưới một phút**.

**(4) §5 "chuỗi lần đầu KHÔNG giảm" — tin tốt thật hay chỉ đổi cách đo?**
- 🔴 **KHÔNG phải tin tốt, và cũng KHÔNG phải đổi cách đo.** Phép đo **y hệt** (cùng script, cùng 6 `hotload_sources`, cùng công-thức `cap − bytes/3.0`) — khác hẳn ca `l2_index` S173 nơi định-nghĩa bị đổi giữa 2 mốc.
- **Lý do cơ-học, kiểm được:** `hotload measured = 772.334 B`, **bằng đúng** giá-trị suy ra từ mốc S188 @audit-tick ⇒ **6 file nguồn không đổi một byte nào** từ 21:xx hôm qua tới giờ. Phiên S189 mới mở, **chưa ai chạm STATUS/HANDOFF**.
- ⇒ **Bước 0 = "chưa ai viết gì", không phải "đã có ai dọn".** Và nếu neo vào mốc S188 **@eval** (125.828) thay vì @audit-tick thì bước kỳ này là **−3.273**, tức vẫn giảm. **Chọn mốc nào ra hai câu chuyện khác nhau — vai in cả hai, không chọn hộ.**
- Trục vẫn **REGRESSION**: thiếu **87.445** so target (sâu nhất trong cả 13 mốc). In `HEALTHY` cạnh một chuỗi 13 mốc chưa từng đảo chiều sẽ đúng là Goodhart-flip mà luật vai cấm.

---

## §11 — ĐỀ-XUẤT-SIGNAL (đầu vào cho `harness-refine`, nấc 2)

🔴 **CHỈ NÊU TÍN-HIỆU — KHÔNG đề-xuất action.** Việc quyết làm gì là của nấc 2.

**Nhóm A — trục REGRESSION có ngưỡng máy đã kêu (13 trục, xếp theo độ gắt):**
| tín-hiệu | số neo | vì sao gắt |
|---|---|---|
| A1 · `lead-gap-auditor` **27.639 B**, máy tự khai `after-est ~25.638` **vẫn > cap**, `cannot auto-drain` | +2.039 trên cap | **duy nhất** trong 29 vai mà máy tuyên bố **tự nó không giải được**; keep-floor 5 chặn |
| A2 · `ring2-audit` **26.652 B**, strike **2 ≥ threshold 2**, máy in `PROPOSE archive` | +1.052 | đã **đủ điều-kiện cơ-chế**; trùng khớp tuyệt đối datum H17 `GAP:MED` lead đưa |
| A3 · crystallized headroom **122.555** vs target **210.000** | thiếu **87.445** | sâu nhất chuỗi 13 mốc; chuỗi 0 lần đảo chiều |
| A4 · hotload floor **772.334 B**, `HANDOFF.md` **220.577 B** gánh **67,2%** phần phình | +24.227 vs S185 | 🔸 **thuộc lead-surface, KHÔNG thuộc agent-memory corpus** ⇒ ranh-trục: định-tuyến `lead-gap-auditor`, không phải vai memory |
| A5 · `.mfe-state.json` anchor **25** bất động **30/30 bản ghi / 16 ngày**, `warn_baseline` cũng 25 | — | latch Goodhart **không thể kích về mặt số-học** |
| A6 · `.archive-strikes.json` stale **4 ngày**, phủ **26/29**, **vênh** máy (`ring2` 1↔2 · `investigator-codebase` 1↔0) | thiếu `ring5-audit`·`score-counter`·`score-count-auditor` | DRY không persist ⇒ sổ và máy **không bao giờ hoà giải** nếu không ai chạy `-Apply` |
| A7 · `cicd-monitor` l2_index TỔNG **23.588 = 115,2%** cap 20.480 | MAIN chỉ 9.682 (47,3%) | probe in `0 over` **đúng theo thiết-kế** nhưng đọc thành sạch |
| A8 · MFE **6/29 vai `N/A`** — ngoài tầm đo | 20,7% roster | vắng-mặt trông giống ổn |
| A9 · độ-giữ nhãn `S189` **1/29**; `score-counter` spawn mà diary bất động từ **08-08** | 2.366 B = đúng số seed "CHUA DO" | vai chạy 2 lần, 0 vết |
| A10 · thước không ổn-định: **16.912 vs 16.614** cùng lượt | −298 B | ảnh hưởng **mọi** bảng số, kể cả bảng này |
| A11 · `run-chua-gom` **1** | folder S189 | phiên tự sinh flag cho mình |
| A12 · `l1_hot` **2/29** vượt autoinject-cap | — | ⚠️ **đổi sang ký-tự thì = 0** (§1-bis) — bài S186, đừng neo action vào con số byte mà không khai đơn-vị |
| A13 · MFE `implementer-backend` **17/18** · `implementer-frontend` **12/13** | 2 item MISS | 🔴 **CẢNH BÁO CHO NẤC 2:** S188 đã bắt `mfe-eval.ps1:288` vs `:299` **lệch dòng render** ⇒ đọc thẳng tên vai từ dòng MISS sẽ **QUY SAI VAI**; muốn biết item nào MISS phải chạy `-Detail` rồi đối chiếu, đừng suy từ bảng này |

**Nhóm B — trục gần-cap chưa kêu (máy chưa flag, nhưng còn rất ít chỗ):**
`lead-stale-auditor` **24.975** (còn **625 B**) · `reviewer` **24.473** (còn 1.127) · `cicd-monitor` **24.322** (còn 1.278) · `investigator-codebase` 21.996 · `ctx-verifier` 21.819 · `harvest-curator` 21.308 · `ring1-audit` 20.924 ⇒ **7 vai trong dải 80–100%**; cộng 2 vai đã vượt = **9/29 vai không còn chỗ thở**.

**Nhóm C — tín-hiệu NGƯỢC (đừng để lẫn vào danh sách việc; đây là thứ ĐÃ TỐT, nêu để nấc 2 không "sửa" nhầm):**
`measured` 29/29 phủ + 27/29 khớp (nợ E3 land thật) · `harvest-curator` **21.308** ⇒ **nợ trong brief ĐÃ ĐÓNG**, đừng lên kế-hoạch cho nó nữa · A7 **429/429 failed 0** · MFE FIT **PASS** + **21/23 vai 100%** · 0/29 vượt soft-cap.

**Nhóm D — thứ NGOÀI 3 chiều của vai này (nêu verbatim, lead định-tuyến, vai KHÔNG lấn):**
- `HANDOFF.md`/`STATUS.md` phình (A4) = **lead-surface** ⇒ 2 vai H24.
- `run-chua-gom` (A11) = **thao-tác harvest** ⇒ **NHƯỜNG `harvest-curator` (H2)**.
- Đường-cắt "~25.000" mà brief dùng cho `harvest-curator`/`reviewer` **không phải khoá nào trong `memory-budget.json`** (khoá thật là `autoinject_cap_bytes` 25600 và `low_watermark` 21760) ⇒ nêu để owner/lead xác-định, vai không tự quyết.

---

### Caveat đóng file (khai thẳng, không giấu)
1. **Vết ghi của lượt này = đúng 1 file:** `.claude/agent-memory/.mfe-state.json` (do `mfe-eval.ps1`, khai ở §7). 4 instrument còn lại chạy 0-ghi (`measure` thuần stdout · `archive-gate` DRY tự in `no writes at all` · `crystallized` DRY · `nhip-no` zero-mutation). ⚠️ Stop-hook `wal:` có thể **nuốt** file này khỏi `git status` ⇒ lead soát bằng `git log`/diff, không chỉ working-tree.
2. **Mọi số trong file này là ảnh-chụp-tại-thời-điểm**, hạn dùng đo được lần này **dưới một phút** (§4-bis). Trục #22 áp cho **chính bảng §9**.
3. **Mẫu-số đổi 23 → 28 → 29 qua các kỳ** ⇒ 🔴 chỉ so số **TUYỆT ĐỐI** xuyên kỳ, cấm so %/tỉ-lệ.
4. Vai **KHÔNG phán nguyên-nhân**, **KHÔNG đề-xuất action**, **KHÔNG chấm spec** — 3 việc đó thuộc nấc 2 (`harness-refine`) và nấc 3 (`harness-audit`).

---

## §12 — ERRATUM TỰ BẮT (đo lại SAU khi đóng bảng §9 — cả hai đều là số của CHÍNH VAI NÀY)

Vai soát containment sau khi viết xong, và bắt được **2 số của mình đã trôi ngay trong lúc viết**. Ghi thẳng, không sửa lén bảng trên.

### E-1 · Trục #36 (độ-giữ): **1/29 → 2/29** — số §8 đã LẠC HẬU
- Lúc đo (§8): `grep -l "S189"` = **1/29**, chỉ `tooling-auditor`.
- Đo lại sau khi viết xong §11: **2/29** — thêm **`score-count-auditor/MEMORY.md`**.
- Bằng-chứng cơ-chế: commit `9694ae9a wal: flush 20260811T0013` chạm đúng 2 file — `score-count-auditor/MEMORY.md | 1 +` và `sub-lead-gap-auditor-open-S189.md` (70 dòng mới) ⇒ **có thêm vai chạy và ghi TRONG lúc vai này đang viết báo cáo**.
- **Verdict trục #36 GIỮ NGUYÊN `REGRESSION`** (2/29 vẫn thấp; control-dương `S1`=29/29, `S185`=15/29, `S188`=13/29), nhưng **con số phải đọc là 2/29, không phải 1/29**.
- 🔴 Đây là **lần thứ hai trong cùng một lượt** hiện tượng ở trục #22 tái diễn — và lần này nạn nhân là **chính con ĐO**. Kết luận cứng: *trong một bookend đang chạy, KHÔNG có con số nào của hệ memory là ổn định; mọi bảng phải mang dấu thời-điểm.*

### E-2 · Vết ghi của lượt: `.mfe-state.json` — `git status` SẠCH nhưng file **ĐÃ ĐỔI THẬT**
| phép | kết quả |
|---|---|
| trước khi vai chạy MFE | **5.690 B**, `history` **30** bản ghi, `at: 2026-08-10` |
| sau khi vai chạy MFE | **5.875 B**, `history` **31** bản ghi, `at: 2026-08-11`, mtime `00:09:34` |
| `git status --porcelain` trên file | **RỖNG** (trông như chưa ai đụng) |
| `git check-ignore` | **KHÔNG bị ignore**; `git ls-files` xác nhận **đang được track** |
| commit nuốt nó | **`234fe02c` `wal: flush 20260811T0011`** — Stop-hook, không phải vai |
| `git show HEAD:….mfe-state.json` | `history` = **31**, `at` = **2026-08-11** ⇒ **thay đổi của vai ĐÃ NẰM TRONG HEAD** |

⇒ **Caveat containment ở §caveat-1 vừa TỰ CHỨNG MINH bằng ca thật, có SHA:** nếu lead chỉ soát `git status` cuối lượt thì sẽ kết luận **"vai không ghi gì"** — **SAI**. Vai có ghi 1 file, hook đã commit hộ trong `234fe02c`.
🔴 **Backstop đúng = `git log`/diff các commit `wal:` trong cửa-sổ lượt, KHÔNG phải working-tree.** (Bài S173 nêu ở dạng cảnh-báo; lượt này có bằng-chứng đầy đủ: byte trước/sau + số bản ghi + SHA.)
🔸 Ghi chú cho nấc 2 & 3: `strikes_total` **vẫn = 25** ở bản ghi thứ 31 ⇒ tín-hiệu A5 (anchor bất động) **không những đúng mà vừa dài thêm 1 nhịp** do chính lượt đo này — nay là **31/31 bản ghi**.
