# harness-refine — trio nấc 2/3 (con ĐỀ-XUẤT) — S186

> 🟢 **Lượt-trả-1 SẠCH, không #53** — vai đầu tiên trong phiên (8 vai) trả trọn ngay lần đầu.

**VERDICT: `HARNESS-REFINE: 4 action / 16 BÁC`** (0① / 1② / 2③ / 1④) — propose-only, single-writer = lead

## 🔴🔴 ĐÍNH-CHÍNH CON-ĐO — lật headline `OVERCAP-HARM`

**Đúng CHIỀU, sai ĐƠN-VỊ và sai DÂN-SỐ.** Governor đo **BYTE**; hook cắt đếm **KÝ-TỰ**. Tỉ số byte/char corpus VN đo tươi = **1,107–1,16** (phụ thuộc nội dung).

**Bằng chứng SỐ HỌC, không phải suy luận:**
- `harvest-curator` banner tự khai **"24.8KB"** → char-count = **25.348 = 24,75 KB ⇒ in ra 24.8 KB, KHỚP 1 chữ số thập phân**.
- byte-count **28.071 = 27,4 KB ⇒ KHÔNG khớp**.
- Cộng thêm: `reviewer/MEMORY.md:98` **đã tự học bài này từ S182** (*"hook đếm KÝ TỰ còn `wc -c` đếm BYTE"*).

⇒ **Ngưỡng cắt = 24.986 KÝ-TỰ.**

**Chiếu lại — 2 vai / 29 bị cắt thật, KHÔNG phải 7, cũng không phải 3:**
| vai | ký-tự | % ngưỡng |
|---|---|---|
| `reviewer` | **27.013** | **108,1%** |
| `harvest-curator` | **25.348** | **101,4%** |
| ctx-audit | 23.055 | dưới |
| lead-gap | 22.226 | dưới |
| impl-be | 22.633 | dưới |
| ring1 | 21.865 | dưới |
| ring2 | 21.568 | dưới |
> Kết luận **bền với cả hai quy-ước KB** (24,4×1024 hay ×1000 đều ra 2 vai).

🔴 **Cái KHÔNG mất đi:** `autoinject_cap` 25.600 B = **AN TOÀN** (chặt hơn hook), nhưng **`soft_cap_bytes` 30.720 B ≈ 26.500 ký-tự = governor NGUY-HIỂM** (nằm **TRÊN** đường cắt). Và vì tỉ số **đổi theo nội dung**, **KHÔNG byte-cap cố-định nào đúng được** — đó mới là lý do phải có phép đo riêng.
📊 Grep toàn repo: `24.4KB` chỉ sống trong **4 diary / 3 vai**, **0 script · 0 khoá config** (control-dương `autoinject_cap_bytes` = 5 file / 4 script ⇒ grep SỐNG).

## 4 Action

**`[④] agent-memory/reviewer/MEMORY.md`** dòng 17·19·25·27·31·110 — 6 stub `[→ archive/…]` = **7.505 B** → nén còn ~720 B
- **trigger:** 27.013 ký-tự = **108,1% ngưỡng cắt thật** + 31.341 B vượt **CẢ 2** byte-cap + after-est máy 30.982 (**vẫn over ⇒ máy bó tay**)
- **chốt-dừng:** attempt-1. Khai lineage: S173-X5 BÁC *"86,1% trình"*, S185-#2 BÁC *"vừa harvest 15' trước"* — 🔴 **cả 2 lý do NAY VÔ HIỆU**, file đã tăng 20.292 → 31.341. Còn >24.986 ký-tự sau khi làm → **leo-thang, CẤM lần 2**
- **Kết quả:** **24.556 B / ~21.163 ký-tự — dưới cả 3 ngưỡng**. **Mất 0 thông tin**: verbatim đã ở archive, xác minh **8 hit `@S182|@S180`** + **4 hit `@S166/@S167/@S168`**, **control-âm `@S999-zzz` = 0/0**. 5/6 stub 0 token `value_protect`; **dòng 17 chứa `[guard]` ⇒ GIỮ NGUYÊN mệnh-đề guard**.
- 🔸 Chính `reviewer:98` **đã tự đăng-ký việc này** và **2 phiên không ai làm**.
- ⚠️ A4-hysteresis đòi <21.760 B — A1 **chưa tới** (24.556); muốn đủ thì cắt thêm 3 bullet S180-lane chưa archive (2.979 B) → 21.577 B.
- ⚠️ **Bắt buộc theo trình-tự `reviewer:96`:** append archive **TRƯỚC** → probe moved-not-cut bằng token lấy từ **THÂN BÀI** (không lấy từ digest) + control-âm → **mới cắt**. *(Sự-cố cut-not-moved ×5, `f229b07`.)*

**`[③+④] agent-memory/ctx-audit/MEMORY.md`** — (a) gắn `##` cho 6 bullet mồ-côi (dòng 3·5·7·9·10·11) · (b) move `S153` + span `## S154` + `## S158` = **7.138 B** → tạo `ctx-audit/archive/2026-07.md` + `_INDEX.md`
- **trigger:** 26.695 B = 104,3% autoinject_cap + 🔴 **16.007 B = 60,0% file nằm TRÊN heading `##` đầu ⇒ VÔ HÌNH với parser** (`memory-archive-gate.ps1:143` — *"LOGICAL entries = HEADING markers ONLY"*) ⇒ máy đếm **3 entry**, `keep_floor` **5 > 3** ⇒ **drain 0 B theo CẤU-TRÚC, không phải theo GIÁ-TRỊ**
- **chốt-dừng:** attempt-1 (S185-#7 vai tự hoãn *"ghi tên vòng sau"* — đây là vòng sau)
- **Kết quả:** 19.557 B < low-water 21.760 ✓ A4
- 🔴🔴 **Phần an-toàn quan trọng nhất:** **2.733 B = S182 + S185 (2 bản ghi MỚI NHẤT, một viết HÔM NAY 04:04) đang nằm LỌT trong span nhãn `## S159`** ⇒ **bất kỳ ai drain theo nhãn sẽ archive MẤT bản ghi hôm nay**. Đúng luật vai đã promote @S185, **nổ lần thứ 2**.
- 🔑 Sau (a), entry **3→9**, `keep_floor` hết chặn ⇒ **máy tự đề-xuất được từ vòng sau** — **mở đường tới cửa cho guard**, thay vì cắt tay mãi.

**`[③] agent-memory/harvest-curator/MEMORY.md`** — rút bản ghi cũ nhất, cần ≥**362 ký-tự**, lấy ≥**1.000** để có biên
- **trigger:** **25.348 ký-tự = 101,4% ngưỡng — vai TỰ KHAI đang bị cắt**, khớp số học với char-count; after-est máy 27.224 **vẫn over**
- **chốt-dừng:** attempt-1 (S185-#4 BÁC *"sổ của vai vừa harvest"* — nay vai **KHÔNG ghi hôm nay**, mtime 08-09 22:17 ⇒ **lý do hết hiệu-lực**)
- Hạ-tầng sẵn: `archive/2026-06|07.md` + `_INDEX.md` 8.325 B. Vai tự đặt self-target **≤17,1 KB** (`:15`) ⇒ đang gấp **~1,5×**

**`[②] agent-memory/harness-refine/MEMORY.md`** — promote **LUẬT ĐƠN-VỊ**:
> *"Ngưỡng cắt thật đếm KÝ-TỰ, mọi governor/instrument đếm BYTE; tỉ số 1,107–1,16 đổi theo nội-dung ⇒ KHÔNG byte-cap cố-định nào đúng. Trước khi neo action vào 'over-cap', ĐỔI SANG KÝ-TỰ. `soft_cap_bytes` 30.720 nằm TRÊN đường cắt."*
- **trigger:** lặp ≥2 độc-lập (`reviewer:98` @S182 · `investigator-codebase` archive-header @S180) **+ vừa đẻ lỗi THẬT: con-ĐO báo 7 vai, thật 2**
- **chốt-dừng:** attempt-1; vòng sau còn ai neo bằng byte → leo-thang (**luật-vào-diary-không-đổi-hành-vi = build-gap**)

## ① reinject = **0 — CÓ LÝ DO 3 LỚP** (không phải bỏ trống)
1. `S186` 0/29 là gap **NHÃN** không phải gap **GHI** (5/6 vai spawn có mtime hôm nay) ⇒ **0 floor-rot**.
2. 2 mục MFE MISS đã được ledger S185 phân loại **B3 = BUILD-GAP**; điều-kiện lật (*"vai thực sự từ chối 1 task bằng đúng tiêu-chí"*) **chưa nổ**.
3. 6 vai MFE mù **không có thước** ⇒ không dựng được vế *"đã-từng-có ∩ RỚT"* của phép thử B3 ⇒ reinject ở đó = **BỊA**.
> Ledger CG-1 còn **0 dòng** ⇒ **0 quota bị tiêu**.

## BÁC (16) — trích các mục load-bearing

1. 🔴 **TỰ BÁC NHÁP CỦA CHÍNH MÌNH:** đã dựng xong claim *"ctx-audit đang bị cắt mất bản ghi S185 viết hôm nay"* — mở char-count: **23.055 < 24.986 ⇒ KHÔNG bị cắt**. **Giữ A2 nhưng THAY HẲN LÝ DO** (mù-parser + bẫy nhãn-span), **vứt urgency giả**.
2. Con-ĐO *"7 vai/29"* — BÁC, đơn-vị sai; đúng = **2**. Nhưng **KHÔNG rút về 0**: `soft_cap` 30.720 vẫn nằm trên đường cắt.
3. `implementer-backend` — **S185-A1 ĐÃ LAND** (đề 431 B, thật **430 B**, lệch 1 B do `\n`) và **ĐẠT** trigger (25.710→25.280). 22.633 ký-tự ⇒ dưới đường cắt. **0 action, KHÔNG attempt-2**, chốt-dừng nguyên vẹn.
4. Nhóm "146-741 B cuối" (`lead-gap` · `ring1` · `ring2`) — quy ra ký-tự **21.568-22.226, dưới đường cắt** ⇒ **cận-cap là chuyện của byte-governor, không phải thiệt-hại**.
5. `cicd-monitor/_INDEX` 115,2% — **2 lý do độc lập**: con-ĐO tự cấm đọc thành regression + S153 đã **attempt-2 → escalated ⇒ attempt-3 CẤM**.
7. Reinject 2 mục MFE MISS — ledger = build-gap, nhồi vào là **Goodhart xoá chứng-nhân**.
10. Promote lại bài *"guard dựng mà không ai gọi"* — **đã có** trong diary + 2 file auto-memory ⇒ promote nữa = **nghi-thức rỗng**. 🔑 **Thuốc lần này là CẮM DÂY ĐO, không phải ghi nhớ thêm.**
11. 7 file memory rời trong `reviewer/` (~12,5 KB) — **không tính vào l1_hot**; gộp vào MEMORY.md = **làm nặng thêm đúng thứ đang cắt**.
12. `harness-audit` measured 11,9× — sửa tay bị **chính `_note` của file CẤM** ⇒ dồn vào E2.
16. Chỉnh `soft_cap_bytes`/`autoinject_cap_bytes` cho khớp ngưỡng thật — **số governor = quyền OWNER**; và **nâng-ngưỡng-để-tắt-đèn = đúng bài Goodhart vai đã BÁC @S162**.

## ESCALATE (ngoài 4 lớp — lead/owner quyết)

- **E1 — dựng phép đo ngưỡng thật.** Probe phải đếm **KÝ-TỰ** (`len(read())`), **KHÔNG** `wc -c`; ngưỡng 24,4 KB; in **cả 2 cột byte/char + tỉ số per-role**. 🔴 **Điều-kiện lật giả-thuyết ký-tự:** nếu một vai **>25.000 ký-tự mà KHÔNG bị cắt** ⇒ **giả-thuyết chết, quay lại đo byte**. Hiện trạng: **0/5 instrument đọc ngưỡng này**.
- **E2 — `measured` 19/29 row, 18/19 lệch, quá hạn 9 ngày.** File **tự cấm sửa tay** và **tự chỉ đường**: `scripts/measure-agent-memory.ps1`. Đây là **chạy instrument** = việc nấc-1/lead. 🔴 **Chừng nào chưa chạy, mọi cột `delta` — kể cả cột con-ĐO đưa — là SO VỚI SỐ BỊA.**
- **E3 — A6 strike không bao giờ với tới cửa.** Cơ-chế thuộc lane `tooling-auditor`. Phần vai chạm được **đã gói trong A2(a)** — **sửa corpus cho máy NHÌN THẤY, thay vì sửa máy**.

## NHƯỜNG (turf sạch)
- **N1 → `lead-gap-auditor`:** `docs/gotchas.md` 122.892 B · `agents/README.md` 61.912 B · hotload 745.511 B · headroom −3.077 · target 210.000 — **6/6 nguồn là hot-feed của LEAD, không phải agent-memory corpus**.
- **N2 → `harness-eval`:** mọi phép đo lại (vai chỉ đo 7 vai vừa đủ để bác/đứng claim).
- **N3 → `harness-audit`:** chấm 4 action + **cú lật đơn-vị này**.
- **N4 → `tooling-auditor`:** strike-state, `.archive-strikes.json`, `-Apply`.
- **N5 → ngoài corpus:** 6 vai MFE mù — object là `.claude/agents/*.md`, **không phải agent-memory corpus** ⇒ hình dạng giống ② nhưng **sai lớp đối-tượng** ⇒ không nhận.

## Caveat vai khai thẳng
Có `Bash` = kênh-ghi vẫn mở, đã dùng **read-only** (0 Write/Edit/store_memory) — lead soát `git status`. Ngưỡng ký-tự là **đo GIÁN-TIẾP qua 2 nguồn độc lập** (banner tự khai + `reviewer:98`), **chưa có instrument** ⇒ **E1 là thứ biến nó thành số đo được**; đến lúc đó, **"2 vai bị cắt" là CẬN DƯỚI, không phải chốt**.
