# harness-refine return @S151 (lead-scribe verbatim — luật §2.1.9(iii); con trả CLEAN 0-garble, spawn-probe PASS, 0 Bash-call)

VERDICT: 9 action (① 1 · ② 2 · ③ 4 · ④ 2) + 9 bàn-giao + 6 đã-BÁC

## 0. Tiền-đề
INPUT đủ 4 PIN (fail-closed KHÔNG kích). CG-1: ledger 0 dòng thật ⇒ mọi đối-tượng attempt-1-eligible, 0 escalated. Spawn-probe: vai SỐNG. Containment: chỉ Read/Glob/Grep, KHÔNG Bash. Số tự chia/trừ dán nhãn [số-học refine].

## 1. Bảng action (9)
| # | action | lớp | đối-tượng | trigger | chốt-dừng | owner-gate |
|---|---|---|---|---|---|---|
| R1 | Nạp item anti-pattern role-file còn thiếu vào diary 5 vai (impl-fe · impl-be · inv-api · inv-cb · reviewer) | ① (fork ② nếu B3 = chưa-từng-mang) | agent-memory/<5 vai>/MEMORY.md | S5: 11/13 · 17/18 · 6/7 · 7/8 · 7/8 = 6 item thiếu (108/114=94,7%) | per-role 1 lần; vẫn <100% → escalate, CẤM lần 2 | Lead tự làm; owner chỉ khi matcher-gap cần đổi sub_denominator |
| P1 | Lead APPEND nhật-ký vòng-1 (S144) + vòng-2 (S151) vào 3 diary trio | ② | agent-memory/harness-{eval,refine,audit}/MEMORY.md | S10: Δ0/Δ0/Δ−5 — vòng-1 để lại ~0 byte ròng (GỐC = KIẾN-TRÚC: 3 vai read-only, diary chỉ lớn khi lead scribe on-behalf) | per-file 1 lần; vòng-3 vẫn Δ≈0 → escalate build-gap nghi-thức thiếu bước scribe | Lead (single-writer B3). Tự-khai tư-lợi: 1/3 file là diary chính con — nội-dung = bản-ghi sự-kiện, CẤM tự-khen |
| P2 | Thăng-hạng luật "PASS trên mẫu-số 0 = KHÔNG ĐO ĐƯỢC (N/A), PASS chỉ có nghĩa khi denominator>0" vào diary con KIỂM | ② | agent-memory/harness-audit/MEMORY.md | S4: fd pointers 0→PASS; 253/253/0 từ 4 vai. Lặp ≥2 khác bề-mặt: feedback_absence_looks_like_clean (S146) + S151/S4 | 1 lần; vòng-3 vẫn đọc PASS-rỗng thành xanh → escalate lên role-file (owner) | Lead quyết; khai xung-đột: đề-xuất ghi vào trí-nhớ người chấm mình ⇒ lead/audit toàn quyền bác |
| A1 | Dựng archive + drain entry giá-trị-thấp khỏi L1 lead-gap-auditor | ③ | agent-memory/lead-gap-auditor/MEMORY.md → archive/2026-07.md + _INDEX.md (mới) | S2: 24185/25600=94,5%, còn 1415B; 2687B/entry [số-học] ⇒ headroom 0,53 entry — entry kế TRÀN. Hành-động SỚM hơn máy vì strike_threshold=2 = chấp nhận 2-3 lượt inject bị cắt đuôi ÂM THẦM | 1 lần; sau drain ≥21760 hoặc tái-vượt 3 phiên → escalate (build-gap vai sinh entry mỗi audit / owner nâng cap) | Lead (archive-gate DRY, em-main final). Acceptance: <21760 + moved-not-cut md5-verify + mọi entry rút có pointer _INDEX |
| A2 | Dựng _INDEX.md cho 4 vai archive-không-index (harvest 67374 → tooling 66747 → impl-fe 25581 → test-spec 18065) | ③ build-gap | agent-memory/<4 vai>/archive/_INDEX.md | S3: 177767B ngoài tầm A7; index-coverage 5/9 | per-vai 1 lần; dựng xong A7 vẫn pointers 0 → escalate format-gap | Lead. SPEC: đúng dạng substring:"…" (memory-archive-gate.ps1:273), pointer grep-verify count==1 trước khi ghi. Acceptance: A7 in pointers N>0 cho CẢ 4; tổng tăng DO vai mới vào tầm |
| A3 | Drain harvest-curator L1 về self-target 17,1K (lời hứa S107 quá hạn 44 phiên) | ③ | agent-memory/harvest-curator/MEMORY.md | S12: 20933=81,8% (+2851/+6034); self-target ghi tại measured.harvest-curator.rollout | 1 lần; không đạt → escalate (self-target có thể lỗi-thời — số mới = owner) | Lead. THỨ-TỰ: A2(harvest) TRƯỚC A3 — dựng bản-đồ rồi mới chuyển đồ |
| A4 | Chuẩn-hoá 5 pointer find-style → substring:"…" cho lọt mắt A7 | ③ | agent-memory/frontend-designer/archive/_INDEX.md:6-10 | S4: index 1531B có 5 pointer THẬT mà A7 đếm 0 — lệch format | 1 lần; vẫn 0 → escalate regex-gap máy | Lead. Cảnh-báo: sau chuẩn-hoá pointer FAIL = phát-hiện THẬT, CẤM revert cho hết đỏ; tổng 253→~258 KHÔNG phải cải-thiện trí-nhớ |
| D1 | Nén _INDEX cicd quá cap: GIST-OF-INDEX giữ NGUYÊN 101 pointer, KHÔNG split | ④ | agent-memory/cicd-monitor/archive/_INDEX.md | S1: 22634/20480=110,5% (+2154); budget dự-báo WATCH ~92% nay qua vạch | 1 lần; vẫn >20480 → escalate (cần rotation build-gap / owner quyết cap) | Lead phần nén. 🔴 SPLIT = RỜI TẬP-ĐO (gate chỉ đọc đúng tên _INDEX.md:16) — chỉ split SAU khi máy học glob _INDEX*.md (B2). Acceptance KÉP: <20480 VÀ A7 vẫn ≥101/≥101/0 — chỉ đạt vế đầu = BÁC |
| D2 | Re-distill cặp gist lạc-hậu theo COVERAGE-DIFF (không theo tuổi — đúng ab6c387e + mark RC-…10-29-11) | ④ | 6 cặp: impl-be/2026-06 · inv-cb/2026-06 · impl-fe/2026-H1 · cicd/2026-06 · reviewer/2026-07 · reviewer/2026-06 | S7: 6 cặp stale (đèn chỉ chỗ, KHÔNG phải tiêu-chí; nguồn _residual_khai_that đo @S144) bị shard-probe đếm ĐÃ-PHỦ | per-cặp 1 lần; guard distill-gen chặn chồng | Lead. PHÉP THỬ RẺ TRƯỚC: mở cặp #1 (impl-be) đối chiếu — nếu gist đã phủ đủ ⇒ DỪNG CẢ D2, báo "6 cặp dương-giả" (tiền-lệ S144: 14/15 đã phủ) |

## 2. Điểm chống-Goodhart nổi bật
- R1: CẤM rắc từ-khoá cho khớp matcher (rời tập-đo); append thật mà vẫn <100% ⇒ nghi matcher-gap → escalate, không tự chỉnh stop_list. MFE in tỷ-lệ không in TÊN ⇒ lead tự đối chiếu role-file vs diary.
- D1: split làm pointer im lặng rời phạm-vi kiểm trong khi gate vẫn xanh — đúng dạng "đổi hình-dạng thứ đang bị đo".
- A4: thành-thật — không thêm byte trí-nhớ nào, chỉ chuyển "trông xanh" → "kiểm được".

## 3. Bàn-giao (9) — KHÔNG phải sân refine
B1 S1 cap l2_index 0-consumer (ghost-wire class-2) → lead/tooling-auditor · B2 A7 nên in N/A khi 0-token + cân nhắc glob _INDEX*.md (tiên-quyết split D1) → lead máy · B3 4 vai MFE-N/A do role-file thiếu block anti-pattern/NEVER → owner + lead (persona + restart) · B4 .mfe-state.json không history[] ⇒ anchor yếu → lead (mfe-eval.ps1) · B5 trục TUỔI chưa có máy → lead máy + owner số · B6 S8 headroom −22307/target + reserve 100K không trừ = lãnh-địa lead-gap-auditor + owner (carry #26) — NHƯỜNG · B7 measured 17/20 row re-sync @2026-08-01 PHẢI thêm 3 row ring (không thì coverage đứng 85% mãi) · B8 S11 run-chua-gom lane H2 · B9 NỘI-MÂU-THUẪN con ĐO: "3 vai trên low-water" nhưng fd 21492 < 21760 ⇒ chỉ 2 vai (lead-gap 24185, test-spec 22140) — giao harness-audit verdict.

## 4. Đã cân-nhắc → BÁC (6)
X1 nâng cap/hạ ngưỡng/sửa số (l2_index 20480 · strike_threshold · min_pending_shards · backfill target) — số = quyền owner tuyệt-đối + đổi-thước-thay-vì-đổi-vật = Goodhart. X2 drain test-spec 22140/fd 21492/tooling — chưa trigger (headroom 2,66 / 1,34 / 2,2 entry [số-học]; fd = theo-dõi tripwire <3070B). X3 con tự ghi đĩa — propose-only B3. X4 reinject cho refine Δ−5 — nhiễu định-dạng 5 byte + mốc từ block stale; tiêu suất CG-1 cho 5 byte = lãng-phí. X5 dựng _INDEX cho vai chưa có archive — index rỗng ⇒ A7 pointers 0 → PASS = TÁI-TẠO đúng bẫy S4/P2 đang vá. X6 nén/viết lại l2_verbatim — vi-phạm bất-biến FROZEN "NEVER rewrite"; byte to không mục-lục mới là vấn-đề (A2), verbatim to không tốn context khi không đọc.

## 5. Caveat
(1) read-only = thiếu-tool không phải sandbox; lượt này 0 Bash-call. (2) Đề-xuất ≠ đã-làm; ledger CG-1 vẫn 0 dòng tới khi lead thật-sự reinject. (3) Không đo lại; 4 thứ mở thêm chỉ để xác-minh mỏ-neo (chính nó lật ngược S4 "index rỗng"→"lệch format" và cứu D1 khỏi đề-xuất split sai). (4) Thứ-tự phụ-thuộc: A2(harvest)→A3 · B2→(split)D1 · R1 cần phân-loại B3 trước khi chạm ledger.

## File liên quan
harness-eval-return.md · instruments-S151.md · reinject-ledger.md · memory-budget.json · agent-memory/harness-refine/MEMORY.md · scripts/memory-archive-gate.ps1:16,:273 · agent-memory/frontend-designer/archive/_INDEX.md · agent-memory/cicd-monitor/archive/_INDEX.md

## 🔧 ĐÍNH-CHÍNH @S151 (từ harness-audit — thân trên GIỮ NGUYÊN làm bản-ghi)
- Mỏ-neo A2 `:273` → là **COMMENT**; điểm thực-thi = **`:284`** regex `substring:"([^"]+)"` (+ `:247` hardcode đúng tên `_INDEX.md` · `:279` skip dòng blockquote `>` — dòng mẫu trong legend sẽ KHÔNG được đếm là pointer). Ai làm A2 neo theo 3 dòng này.
- B2 bổ-sung (audit F5, refine chưa thấy): nếu dạy máy glob `_INDEX*.md` thì **BẮT BUỘC sửa kèm `:252`** — không thì file index tách ra rơi vào `$contentFiles` thành HAYSTACK, pointer TỰ-KHỚP chính nó ⇒ gate xanh GIẢ.
