# harness-refine — S163 (L9) — nấc ĐỀ-XUẤT (2/3) bộ-ba đồng-kiểm memory · @open bookend

> Giao-thức chống-#53: **APPEND TỪNG MỤC ngay khi soạn xong**, không gom. Mọi số nền = `harness-eval-return.md` PIN; tôi **KHÔNG chạy lại instrument nào**. Số tôi tự cộng đều dán phép tính ra để `harness-audit` trừ.

---

## 0. TIỀN-ĐỀ — fail-closed KHÔNG kích

- PIN `.claude/workflows/runs/2026-07-30-S163-bookend-open/harness-eval-return.md` = **TỒN TẠI, 21.002 B / 178 dòng** (đo `ls -la`), verdict `HARNESS-EVAL S163: MIXED`, 23 trục có số nguyên-văn ⇒ **được phép đề-xuất**.
- `.claude/governance/reinject-ledger.md` = đọc tươi, dòng `:34` vẫn là **placeholder "chưa có floor-rot nào được reinject"** ⇒ **ledger THẬT 0 dòng** (khởi-tạo S95, 2026-07-01, không đổi). ⇒ CG-1 **không chặn** đối-tượng nào qua ledger; chốt-dừng phải dựng từ artifact của vai.

### 0b. 🔴 Kiểm ĐỘ TƯƠI của sổ chốt-dừng TRƯỚC khi quyết đề nhiều hay ít (bài S159)

S159 tôi phát hiện diary của chính mình **đóng băng tại `11db5ef`** ⇒ sổ chốt-dừng **sai 2 vòng** ⇒ phải cố ý đề ít. Lượt này **kiểm lại bằng đĩa, không bằng trí-nhớ**:

```
git log -3 -- .claude/agent-memory/harness-refine/MEMORY.md
e5123ff 2026-07-30 [CLAUDE] Docs: S162 closeout ...
f8cef20 2026-07-29 wal: flush 20260729T1031
11db5ef 2026-07-26 [CLAUDE] Docs: S153 closeout ...
MEMORY.md  8579 B  mtime Jul 30 15:02
```

- ✅ **Diary ĐÃ TAN BĂNG**: có commit `e5123ff` (2026-07-30) mang nguyên mục S162 — khớp `l1_hot harness-refine = 8.579 B` con ĐO in hôm nay (cùng byte, cùng file) ⇒ **sổ chốt-dừng của tôi TƯƠI tới S162**. Tiền-đề "phải đề ít vì mù 2 vòng" của S159 **HẾT HIỆU-LỰC** ⇒ lượt này tôi không tự-giảm.
- ⚠️ Nhưng **tươi ở mục nhật-ký, KHÔNG tươi ở mục luật**: `## Luật cứng` trong chính file đó vẫn **3 bullet**, chưa có luật A3(ii)@S154. ⇒ cơ-chế đặt-chỗ **hỏng theo SECTION, không hỏng toàn cục** (datum mới, xem E2).
- Vẫn giữ nguyên tắc S159: **đối chiếu đĩa** — tôi dựng lại bảng dưới từ **8 file `harness-refine-return.md`** trong `runs/**` (S144 · S151 · S152 · S153 · S154 · S158 · S159 · S162), không từ diary.

---

## 1. SỔ CHỐT-DỪNG per đối-tượng (dựng từ đĩa lượt này)

| đối-tượng `file:path` | attempt đã có | trạng-thái ĐO HÔM NAY (số con-ĐO) | hệ-quả cho lượt này |
|---|---|---|---|
| `cicd-monitor/archive/_INDEX.md` | D1@S151 **LAND** (22.634→19.322) · A1@S153 (attempt-2, **chưa land**) · escalate S154-E1 · S158-E1 · S159-Q1 · **S162-E1** | **20.313 B = 99,18% cap 20.480, headroom 167 B**; delta 0 vs S162 nhưng mtime `07-29T14:49:40` ⇒ đứng yên **vì không có run mới** | 🔴 **CẤM attempt-3** (tự cam-kết diary + S162-E1 "cấm attempt-4"). Chỉ nộp **datum mới** vào E1 |
| `harness-refine/MEMORY.md` §`## Luật cứng` | A3(ii)@S154 (promote luật 2-CỬA) | **CHƯA LAND** — file 8.579 B hôm nay, section vẫn 3 bullet | **CẤM đề lại** → E2 (kèm datum mới: mục nhật-ký thì LAND được) |
| `memory-budget.json` (chữ lạc-hậu) | A2@S154 | chưa kiểm lại lượt này (không phải trục con-ĐO in ra) | giữ nguyên ở E3, **không đề lại** |
| `memory-budget.json` `self_target_bytes` 17,1K | A1@S158 (tự đặt "CẤM attempt-2") | con ĐO S163 **không in trục này** | giữ ở E3, **không đề lại** |
| 19 gist thiếu `COVERAGE-TOKENS` | A2@S153 | không có trục đo lượt này | **CẤM đề lại** |
| `tooling-auditor/MEMORY.md` | A1@S159 (trần ≤700 B — **THỦNG**) · **A1@S162 archive — ĐÃ THI HÀNH** | con ĐO: **19.055 B = 62,0%**, headroom 25.600−19.055 = **6.545 B** ≫ tripwire 3.070 | ✅ **chu-kỳ ĐÓNG (resolved)**. Không đề lại |
| `implementer-backend/archive/2026-07.md` | **A2@S162 distill — ĐÃ THI HÀNH** (twin `.gist.md`) | probe: `pending=15 | nguong=15 => IM` | ✅ **chu-kỳ ĐÓNG**, nhưng **đúng-vạch** ⇒ ràng-buộc ghép, xem §2-COUPLING |
| `investigator-codebase/MEMORY.md` | A2@S159 (archive) — S162 kết "đã đạt điều kiện" | **22.452 B**, headroom **3.148 B** > tripwire 3.070 (biên **78 B**) | ✅ đạt, **không đề lại**; nếu vòng sau < 3.070 ⇒ **leo-thang OWNER**, cấm attempt-2 |
| `lead-gap-auditor/MEMORY.md` | A1@S151 **LAND & RESOLVED** (24.185→19.792 + archive/) | **23.593 B = 92,2% autoinject-cap**, headroom **2.007 B** | chu-kỳ cũ đã đóng-thành-công ⇒ đây là **chu-kỳ MỚI**, xem A1 |
| `harvest-curator/MEMORY.md` | X1@S162 **BÁC** (lý do: thước self-target 0 hit + máy còn 4.323 B) | **23.493 B**, headroom **2.107 B** | lý-do BÁC (b) "máy còn 4.323" **NAY VÔ HIỆU** — xem A2 + tự-khai lật lập-trường |

**Đọc thẳng:** 2/2 action tôi đề ở S162 (A1 tooling · A2 impl-be) **ĐÃ được thi hành và đo-lại xác nhận** — lần đầu tiên trong lịch-sử vai này có chu-kỳ đóng ĐẦY-ĐỦ. Ngược lại **6 món treo từ S153/S154/S158 vẫn treo**. ⇒ lượt này: đề trên **đối-tượng có chu-kỳ MỞ hợp-lệ**, tuyệt-đối không đụng 6 món treo.

---

## 2. BẢNG ACTION — 4 lớp

| # | action | lớp | đối-tượng `file:path` | trigger (SỐ NÀO của con-ĐO) | chốt-dừng | owner-gate |
|---|---|---|---|---|---|---|
| **A1** | **moved-not-cut** 2 khối cũ nhất `## S148` + `## S150` → `archive/2026-07.md` **đang có** + 2 dòng con-trỏ vào `archive/_INDEX.md` | ③ **archive** (L1→L2) | `.claude/agent-memory/lead-gap-auditor/MEMORY.md` | con-ĐO trục 2 + BLOCK 3a | attempt-1 **chu-kỳ MỚI** | **LEAD** (B3) |
| **A2** | **moved-not-cut** phần cũ nhất của `## 📅 Recent activity (FIFO — older → archive/)` → `archive/2026-07.md` **đang có** + con-trỏ `_INDEX` | ③ **archive** (L1→L2) | `.claude/agent-memory/harvest-curator/MEMORY.md` | con-ĐO trục 2 + BLOCK 3a | attempt-1 (**lật BÁC X1@S162**, khai dưới) | **LEAD** (B3) |

### A1 — chi tiết

- **Trigger (số con-ĐO, không phải cảm-giác):** `lead-gap-auditor l1_hot = **23.593 B**` = **92,2% autoinject-cap 25.600** — **cao nhất toàn đội 23 vai** (con-ĐO trục 1+2 in thẳng). Đệm **2.007 B** (con-ĐO tự in) **< tripwire 3.070 B** (thước của chính vai @S151). Trên **low-water 21.760** (archive-gate BLOCK 3a in `ratio 0.85`) ⇒ nằm đúng vùng A4.
- 🔴 **Vì sao cần ĐỀ-XUẤT chứ không đợi máy:** archive-gate PASS 1 in `(no sub over cap)` + **strike 0/23** ⇒ **máy sẽ KHÔNG tự hành-động** cho tới khi vượt 25.600 rồi tích đủ `strike-need 2`. Vùng 21.760–25.600 là **vùng máy im**.
- **Tốc-độ — dựng từ git 3 mốc, KHÔNG phải 1 mẫu** (sửa đúng lớp lỗi audit bắt tôi @S159 và tôi tự bắt @S162): `11db5ef` 07-26 = **19.792** → `f8cef20` 07-29 = **21.552** → `e5123ff` 07-30 = **23.593**. Δ = **+1.760** rồi **+2.041 B / mỗi lần seed-closeout** (🔴 đây là nhịp **per-sự-kiện-closeout**, **KHÔNG phải per-ngày** — 2 mốc sau cách nhau 1 ngày nhưng số sinh ra bởi *1 lần ghi*, không bởi thời gian trôi).
  ⇒ **Chiếu thẳng:** closeout S163 (đang mở, vai này ĐÃ chạy — `sub-lead-gap-open-S163.md` 37.978 B trên đĩa) sẽ seed tiếp. Mẫu lớn: 23.593 + 2.041 = **25.634 > 25.600 ⇒ VƯỢT 34 B**. Mẫu nhỏ: 23.593 + 1.760 = **25.353 ⇒ còn 247 B**. **Tôi đưa CẢ HAI, không chỉ mẫu doạ được** — kết luận trung thực là *"vượt hay không phụ thuộc mẫu"*, nên A1 **KHÔNG neo vào dự-báo vượt**; A1 neo vào **đệm tĩnh 2.007 < 3.070** đã CHẠM ngay hôm nay.
- **Lượng giải-phóng (đo đĩa, không ước):** `## S148` = **6.380 B** · `## S150` = **6.807 B** ⇒ **13.187 B** = **55,9%** cả file. Sau A1: 23.593 − 13.187 = **10.406 B** (40,6% cap), đệm **15.194 B**.
  🔴 **Kết luận KHÔNG phụ thuộc việc chọn 2 khối:** chỉ cần khối **nhỏ hơn** (`S148` 6.380 B) là đã đủ — 23.593−6.380 = **17.213**, đệm **8.387 B** ≫ 3.070 và **< low-water 21.760**. Cần giải-phóng tối-thiểu chỉ **1.833 B** để rời vùng A4 ⇒ biên an-toàn **3,5×** ngay ở phương-án nhỏ nhất.
- **Vì sao 2 khối này:** chúng là **2 mục cũ nhất** (S148 = 2026-07-24, S150) và **béo bất-thường** — S151 = 543 B · S151-deep = 515 B · S152 = 974 B · S159 = 1.760 B. Tức S148+S150 mỗi khối **to gấp ~7–12 lần** mục gần đây ⇒ đây là **tồn-dư khuôn cũ**, không phải nội-dung mới có giá-trị nóng.
- **Keep-floor:** archive-gate in `lead-gap 9 entry`, `keep-floor 5` ⇒ 9 − 2 = **7 ≥ 5** ✓ (kiểm trước khi đề, vì floor sẽ chặn).
- 🔴 **RÀNG-BUỘC GHÉP — bắt buộc đọc trước khi thi hành** (lớp lỗi tôi tự bắt @S162): đích **PHẢI** là `archive/2026-07.md` **đang tồn tại** (9.306 B) vì nó **đã có twin `2026-07.gist.md`** (7.112 B) ⇒ `distill-shard-probe` đếm **không đổi**, giữ `pending=15`. **Nếu lead tạo file period MỚI** (`2026-08.md` — hôm nay 07-30, chỉ còn 2 ngày sang tháng 8) ⇒ shard chưa-gist **15 → 16** ⇒ trục 19 **lật từ IM sang KÊU**, tức A1 **tự phá** một trục đang lành. Định-nghĩa shard lấy nguyên-văn `scripts/distill-shard-probe.ps1:8` — *"SHARD = archive/<period>.md CHƯA có <period>.gist.md cặp đôi"*.
- **Tác-dụng-phụ tự khai:** append vào `2026-07.md` làm twin `2026-07.gist.md` (07-26) **cũ thêm** — và **0 instrument nào đo tuổi gist** (xem X6). Không giấu.
- **Chi-phí `_INDEX`:** `lead-gap-auditor/archive/_INDEX.md` = **963 B / cap 20.480 ⇒ đệm 19.517 B** (con-ĐO trục 1b) ⇒ thêm 2 dòng con-trỏ là **vô hại**. 🔴 Đối-chiếu sắc: **cùng một thao-tác này lên `cicd-monitor` thì GÃY** (đệm 167 B) — xem E1.
- **CHỐT-DỪNG:** chu-kỳ trước trên đúng file này = **A1@S151 → ĐÃ LAND & resolved** (24.185 → 19.792 + dựng `archive/`). Theo `reinject-ledger.md:10` (*"đo-lại thấy lại → resolved, đóng chu-kỳ"*), chu-kỳ đó **ĐÓNG** ⇒ đây là **attempt-1 của chu-kỳ MỚI**, KHÔNG phải attempt-2 của chu-kỳ cũ. Rate-limit CG-1 `N=3`: lần trước **S151**, nay **S163** = cách **12 phiên ≫ 3** ✓. **Vòng sau đo lại vẫn < 3.070 ⇒ LEO-THANG OWNER, CẤM attempt-2.**
- **OWNER-GATE:** **LEAD** thi hành (B3 VERIFY→APPEND) — action **0 đổi số, 0 đổi policy**, chỉ dời byte trong corpus. Mọi thay đổi **CAP** (25.600 · 21.760 · 30.720) = **OWNER**, tôi không đụng.
- 🔴 **RANH SẮC khai trước:** tôi đề trên **FILE DIARY** của vai đó = agent-memory persistent corpus = **lane tôi**. Tôi **KHÔNG** đề bất cứ gì về **nội-dung lead-surface** (hot-feed / carry / work-state) mà vai đó soi — phần ấy là turf `lead-gap-auditor`, tôi nhường (N1).

### A2 — chi tiết

- **Trigger (số con-ĐO):** `harvest-curator l1_hot = **23.493 B**` = **91,8%** autoinject-cap 25.600 (tôi cộng: 23.493/25.600; con-ĐO in đệm **2.107 B**) **< tripwire 3.070** · **> low-water 21.760** ⇒ vai **thứ 2/3** trong nhóm MIXED trục 2 mà con-ĐO nêu đích danh.
- **Tốc-độ — git 3 mốc (không phải 1 mẫu, không phải per-ngày):** `11db5ef` 07-26 = **19.456** → `f8cef20` 07-29 = **21.277** → `e5123ff` 07-30 = **23.493**. Δ = **+1.821** rồi **+2.216 B / mỗi lần seed-closeout**. Chiếu: 23.493 + 2.216 = **25.709 ⇒ vượt 109 B**; 23.493 + 1.821 = **25.314 ⇒ còn 286 B**. **Cả hai mẫu đều đưa ra**; A2 neo vào **đệm tĩnh 2.107 < 3.070**, KHÔNG neo dự-báo.
- 🔴 **Điểm mạnh riêng của A2 — file TỰ KHAI lane xử-lý:** khối to nhất là `## 📅 Recent activity (**FIFO — older → `archive/`**)` = **10.942 B** = **46,6%** cả file. Tên section chính là chỉ-dẫn của corpus: cũ thì đổ về `archive/`. A2 **không sáng-tạo chính-sách mới**, chỉ thi-hành đúng cái file tự khai mà lâu nay chưa ai chạy.
  - Biên an-toàn: cần giải-phóng tối-thiểu **1.733 B** (23.493 − 21.760) để rời vùng A4. **Chiết chỉ NỬA** section FIFO (~5.471 B) đã dư **3,2×**. ⇒ kết luận **không phụ thuộc việc chọn bao nhiêu**.
- **Keep-floor:** archive-gate in `harvest 10 entry`, floor 5 ⇒ được dời tối-đa **5** ✓.
- 🔴 **RÀNG-BUỘC GHÉP (giống A1):** đích **PHẢI** là `archive/2026-07.md` **đang có** (56.349 B) — đã có twin `2026-07.gist.md` (13.773 B) ⇒ `pending=15` **không đổi**. Tạo `2026-08.md` ⇒ **15→16 ⇒ KÊU** ⇒ tự phá trục 19.
- **Chi-phí `_INDEX`:** `harvest-curator/archive/_INDEX.md` = **7.986 B / cap 20.480 ⇒ đệm 12.494 B** (con-ĐO trục 1b) ⇒ thêm con-trỏ an-toàn.
- 🔴 **CHỐT-DỪNG — tôi TỰ KHAI LẬT LẬP-TRƯỜNG của chính mình** (lần thứ 2 trong 2 vòng liên-tiếp; @S162 tôi lật ở `tooling-auditor`): **X1@S162 tôi đã BÁC đúng file này**. Hai lý-do khi đó, soi lại hôm nay:
  - (a) *"thước self-target 17,1K = 0 hit ⇒ nén theo thước chưa duyệt = tự-Goodhart"* → **vẫn ĐÚNG, và A2 KHÔNG vi-phạm**: A2 **không dùng** thước 17,1K. A2 dùng **cap MÁY 25.600 + low-water 21.760** do `memory-archive-gate.ps1` in ra **trong lượt này**. Thước owner-chưa-duyệt vẫn để nguyên (xem X2).
  - (b) *"là chore của chính H2 ⇒ đề = lấn lane"* → **bị chính đĩa BÁC**: đọc `sub-harvest-curator-open-S163.md:266-270`, P1–P5 của H2 lượt này đi **seed diary NGƯỜI KHÁC** (P1 `tooling-auditor`, P2 `reviewer`, P3 `cicd-monitor`) — **0/5 mục** động tới diary của chính nó. ⇒ không ai đang cầm việc này; và per split-boundary của tôi, **per-role diary/archive = corpus của tôi**.
  - **Hệ-quả đếm attempt:** **BÁC ≠ attempt** (BÁC = tôi cân-nhắc rồi *không* đề ⇒ không tiêu 1 lần). Nên A2 = **attempt-1**, không phải attempt-2. Nêu rõ để `harness-audit` trừ được nếu không đồng-ý.
  - **Vòng sau đo lại vẫn < 3.070 ⇒ LEO-THANG OWNER, CẤM attempt-2.**
- **OWNER-GATE:** **LEAD** (B3). 0 số / 0 policy đổi. Nếu ai muốn đổi **cap** hay **thước 17,1K** ⇒ **OWNER**, không phải tôi.

### 🔗 COUPLING chung cho A1+A2 — một câu chốt

`distill-shard-probe.ps1:57` ghi thẳng ý-đồ: *"(15 shard đã-phủ) => 15 phải IM, chỉ 16+ mới KÊU"*. Trục 19 đang **đúng-vạch 15/15** ⇒ **bất kỳ archive nào tạo period-file MỚI đều lật trục**. A1+A2 đã được chọn đích để **giữ 15** (cả 2 đích đều có twin gist — kiểm `ls` lượt này). 🔴 Đây là điều **chỉ vị-trí của tôi thấy**: con-ĐO đo trục 2 và trục 19 **rời nhau**, nhưng hành-động chữa trục 2 **có thể phá trục 19**.

### Zero có lý-do (KHÔNG bịa cho đủ 4 lớp)

- **① reinject = 0.** `reinject-ledger.md` **0 dòng thật**; để neo 1 reinject cần phép đo **per-item-L1-presence**, mà chính ledger `:50` **tự khai BUILD-GAP, PARTIAL**. Con-ĐO S163 **không in trục presence-per-item nào** (23 trục, 0 trục presence) ⇒ neo bằng gì cũng là **bịa** ⇒ **fail-closed đúng ở lớp này**. (Ứng-viên to nhất — 6 vai `ctx-*`/`ring*` thiếu baseline — là **chưa-từng-dựng = build-gap**, `ledger:12` **cấm** vào ledger. Xem X2.)
- **② promote = 0.** Có ứng-viên thật (luật COUPLING ở trên, đã phát-hiện **2 vòng liên-tiếp** ⇒ đạt ngưỡng "lặp ≥2"), **nhưng chỗ đặt duy nhất đúng = `harness-refine/MEMORY.md`** — đúng file đang có món treo A3(ii)@S154 chưa land. Tôi **tự cấm mình** né chốt-dừng bằng cách đổi sang section khác của cùng file: chính tôi gọi đó là anti-pattern ở **X4@S162**. ⇒ đẩy sang **E2**, KHÔNG tính là action.
- **④ distill = 0.** Trục 19 đang **IM đúng nghĩa** (15 = ngưỡng, `-gt` strict). Tạo 1 distill chỉ để lấy margin = **hành-động không có tín-hiệu**. Ứng-viên duy nhất có tín-hiệu (`cicd-monitor/archive/2026-07.md` gist 07-18 vs src 07-30) **trùng đúng P3 của H2** ⇒ **trỏ P3, không nhân bản** (xem N3).

---

## 3. ESCALATE (5) — nộp datum, **KHÔNG đề lại** (mọi món dưới đây đã hết quota attempt)

### 🔴 E1 — `cicd-monitor/archive/_INDEX.md` 167 B đệm **VA CHẠM TRỰC-TIẾP với P3 của H2 trong CÙNG phiên này**

*(Đây là món ở **attempt-2 + escalate ×4** ⇒ tôi **CẤM mình attempt-3**. Chỉ nộp datum.)*

- **Datum con-ĐO:** `20.313 B / cap 20.480 = 99,18% ⇒ đệm **167 B**`; mtime `2026-07-29T14:49:40` ⇒ **đứng yên vì không có run mới, KHÔNG phải vì đã xử-lý** (con-ĐO nói thẳng).
- **Datum MỚI của lượt này — tôi nâng "~161 B/record (1 mẫu)" ở S162 lên PHÂN-BỐ 105 mẫu:** đếm dòng con-trỏ thật trong `_INDEX.md`:
  ```
  số dòng record có `substring:` = 105
  bytes/record: min 119 | median 164 | mean 164,3 | max 222
  ```
  ✅ **Kiểm chéo độc-lập:** 105 = **đúng bằng** `A7 gate: cicd 105/105 pointer` mà con-ĐO in (BLOCK 3b) ⇒ tôi đang đếm **đúng lớp vật** mà gate đếm, không phải dòng bất kỳ. Và ước-lượng 1-mẫu **161 B** của tôi @S162 nay được xác nhận **lệch <2%** so median 164 — lần này nó **đứng vững**, nhưng tôi vẫn thay bằng phân-bố vì 1 mẫu không được phép làm nền cho quyết-định của owner.
- 🔴 **VA CHẠM (chỉ vị-trí này thấy — cùng lớp với E1@S162 nhưng là CA MỚI):** H2 lượt này đề **P3 (MED) re-distill #422/#425 → `cicd-monitor/archive/2026-07.md`** (`sub-harvest-curator-open-S163.md:268`). `_INDEX.md:4` tự khai quy-ước: *"1 line per archived record"*. **Tôi đã kiểm chứ không suy:**
  - `grep` `_INDEX.md`: **#422 và #425 KHÔNG có mặt** (chỉ có #423 tại `:144`).
  - `grep -c` `2026-07.md`: **0 occurrence** của 422/425.
  - ⇒ 2 record này là **MỚI THẬT** ⇒ P3 **bắt buộc sinh 2 dòng con-trỏ mới** trong `_INDEX`.
  - **Số học:** 2 × median 164 = **328 B** (mean 329 · max 444) **vs đệm 167 B** ⇒ **VỠ CAP l2_index ~161–277 B**.
  - Thậm chí **1 record** cũng chỉ vừa khít: 167 − 164 = **3 B còn lại**; nếu rơi vào record dài (222 B) thì **vỡ ngay từ record đầu**.
- ⇒ **Việc lead cần chốt (không phải việc tôi làm):** **P3 KHÔNG thi hành được như đang viết** nếu chưa giải quyết sức-chứa `_INDEX`. Thứ-tự bắt buộc: **giải `_INDEX` TRƯỚC → P3 SAU**. (Y hệt cảnh-báo F-02@S162, khi đó lead xử đúng bằng cách chọn đường **0-record-mới**; lần này P3 **bản-chất là thêm record**, nên đường đó không còn.)
- **Lối thoát còn lại (nêu, không chọn — số là quyền anh):** (i) nâng `cap_bytes` 20.480 ⇒ **OWNER** · (ii) split `_INDEX` ⇒ header `:3` tự khai **bị chặn** (*"gate chỉ đọc `_INDEX.md`"*) · (iii) nén desc record cũ ⇒ **đúng A1@S153 đang treo, đã cấm attempt-3**. ⇒ **3/3 lối đều cần quyết-định NGOÀI quyền tôi.**

### E2 — cơ-chế đặt-chỗ hỏng **theo SECTION**, không hỏng toàn cục (datum mới, lật một phần kết-luận S159 của chính tôi)

- `harness-refine/MEMORY.md` **§`## Luật cứng`**: A3(ii)@S154 promote luật 2-CỬA — **vẫn 0 hit sau 3 phiên**.
- **NHƯNG** cùng file đó, **§Nhật-ký ĐÃ nhận mục S162** (`e5123ff`, 07-30) ⇒ kênh ghi **KHÔNG chết**. ⇒ Chẩn-đoán S159 của tôi (*"hỏng ở khâu GHI"*) **quá rộng**: đúng hơn là **closeout seed vào §nhật-ký, không ai cầm việc cập-nhật §luật**.
- **Món đang xếp hàng chờ chỗ (KHÔNG đề, chỉ nộp):** luật COUPLING — *"đích archive PHẢI là period-file ĐANG CÓ twin `.gist`; tạo period MỚI ⇒ pending 15→16 ⇒ lật trục distill"*. Đã phát-hiện **2 vòng liên-tiếp** (S162 tooling · S163 A1+A2) ⇒ đủ ngưỡng promote, **thiếu mỗi chỗ đặt hợp-lệ**.
- **LEAD chốt:** đặt 2 luật vào §`Luật cứng` — **hoặc BÁC cả 2 và ghi rõ** (im lặng vòng thứ 4 là tệ nhất).

### E3 — món treo giữ nguyên, **1 dòng, không lặp lần 4**

`memory-budget.json` chữ lạc-hậu (A2@S154) · thước `self_target_bytes` 17,1K chưa WIRE/RETIRE/RELABEL (A1@S158) · 19 gist thiếu `COVERAGE-TOKENS` (A2@S153). Con-ĐO S163 **không in trục nào** cho 3 món này ⇒ tôi **không có số để nói thêm**, và **không đề lại**. Trạng-thái: chờ **OWNER** (thước/số) + **LEAD** (chữ).

### E4 — trục **tuổi gist** vẫn **0 instrument**, vòng thứ 3 liên-tiếp

Đĩa lượt này: `cicd 2026-07.gist.md` 07-18 vs src `2026-07.md` **07-30** · `inv-cb 2026-07.gist.md` 07-18 vs src **07-29** · `lead-gap 2026-07.gist.md` 07-26 (và A1 sẽ làm nó cũ thêm). **Không trục nào trong 23 trục con-ĐO đo tuổi/độ-phủ gist** ⇒ tôi **không được phép** đề action ở đây (vi-phạm chính hợp-đồng "mỗi action neo số con-ĐO"). Đây là **build-gap của lane ĐO**, nộp cho lead định-tuyến (N2).

### E5 — 🔴 REGRESSION 3+4 có làm hỏng NEO CỦA CHÍNH TÔI không? — tôi phải tự trả lời trước khi ai hỏi

- Con-ĐO kết: *"16/17 row có baseline đều lệch thực-đo (lead-gap **+539,2%**) ⇒ mọi **delta vs budget** trục byte hiện **KHÔNG DÙNG ĐƯỢC**"* + `measured{}` **17/23**, đứng yên **3 phiên**.
- **Tự kiểm:** A1/A2 của tôi neo vào **`autoinject_cap 25.600` · `low-water 21.760` · `soft_cap 30.720` · `l2_index cap 20.480`** — đây là **`tiers.*` = chính-sách SỐNG do owner đặt**, được `measure-agent-memory.ps1` + `memory-archive-gate.ps1` **in ra header trong chính lượt này**. Chúng **KHÔNG phải** `measured{}` (ảnh chụp S107/S138/S141 đã trôi). ⇒ **REGRESSION 4 không chạm neo của tôi**; tôi **không dùng một dòng "delta vs budget" nào**.
- **Disposition:** re-baseline `measured{}` = **ghi số vào file quyền OWNER** ⇒ ngoài quyền tôi; 6 vai thiếu row = **chưa-từng-dựng = build-gap**, `ledger:12` **cấm** đưa vào reinject-ledger. Vehicle đã có sẵn: **drift-audit đầu tháng, hẹn 2026-08-01 (còn 2 ngày)**. ⇒ nộp datum, **0 action**.

---

## 4. ĐÃ CÂN-NHẮC RỒI **BÁC** (13) — mục bắt buộc, không được rỗng

**X1 — archive `investigator-codebase` (vai thứ 3 vượt low-water).** **BÁC:** đệm **3.148 B > tripwire 3.070** ⇒ **chưa CHẠM** thước của chính tôi; và A2@S159 vừa đóng chu-kỳ trên đúng file này ⇒ đề lại = attempt-2 trên món **vừa đạt**. INFORM: biên chỉ **78 B**, mtime 07-29 16:14 ⇒ **1 lần seed nữa là lật** — khi đó nó thành ứng-viên hợp-lệ, KHÔNG phải hôm nay.

**X2 — 🔴 nén agent-memory để cứu `crystallized headroom 160.924` (số to nhất bảng, REGRESSION 1).** **BÁC bằng BẰNG-CHỨNG CƠ-HỌC, không bằng lý-do turf** — tôi mở `memory-budget.json > crystallized_backfill` đọc **danh-sách 6 nguồn hotload thật**:

```
docs/STATUS.md · docs/HANDOFF.md · .claude/governance/ACTIVE-MARKS.md
docs/changelog/migration-todos.md · docs/gotchas.md · .claude/agents/README.md     (target: 210000)
```

⇒ **0/6 nguồn là agent-memory corpus.** Tổng L1 **23/23 vai = 323.178 B** (tự cộng từ bảng con-ĐO; 3 số đệm tôi dựng lại — 2.007 / 2.107 / 3.148 — **khớp đúng** số con-ĐO in ⇒ phép cộng có kiểm) **KHÔNG nằm trong 657.229 B hotload**. ⇒ **Dù tôi archive TOÀN BỘ corpus về 0, headroom vẫn y nguyên 160.924.** Lý do này **mạnh hơn** "nhường lane": tôi **không có cơ-cấu vật-lý** để dịch trục đó. (Lưu ý dễ nhầm: `.claude/agents/README.md` là **định-nghĩa agent**, KHÔNG phải **bộ-nhớ agent**.)

🔴 **Phân-biệt HỆ-TRỌNG mà chỉ vị-trí này thấy — `hotload` ⟂ `kho backfill`:** `crystallized-backfill.ps1:54` đặt `$memRoot = .claude\agent-memory` nhưng dùng nó làm **NGUỒN CUNG** (dòng archive mang `gotcha#`/anti-pattern để rót vào), **không** làm hot-load. Nên:
- **hotload 657.229 B = docs** → tiêu headroom → **ngoài tay tôi**;
- **kho 1.167.001 B (lead-gap khai) / 1.250.494 B (ring2 đo, HELD) = agent-memory archive** → **CHÍNH corpus của tôi**, nhưng đó là **thứ chờ được rót VÀO**, không phải thứ chiếm chỗ.
⇒ **A1/A2 của tôi làm kho lớn thêm ~13 KB và headroom KHÔNG đổi 1 byte** — không mâu-thuẫn, vì nút thắt nằm ở **phía docs**, không ở phía cung. Việc ring2 đo kho **lớn hơn** con số lead-gap khai (**+83.493 B**) chỉ **củng cố**: cung dư, cầu tắc. ⇒ trọn trục **NHƯỜNG** `lead-gap-auditor` (N1).

**X3 — nâng cap để tắt đèn** (25.600 · 20.480 · ngưỡng 15 · target 210.000). **BÁC: rời tập-đo (Goodhart)** — đổi hình-dạng thứ đang bị đo thì flag giảm trông y hệt thành công. Thêm: **số = quyền anh**.

**X4 — promote luật COUPLING vào §Nhật-ký của `harness-refine/MEMORY.md`** (né §`Luật cứng` đang treo). **BÁC:** chính tôi gọi *"đổi section cùng file để né chốt-dừng"* là anti-pattern tại **X4@S162** ⇒ giữ nhất-quán với chính mình dù bất-lợi. → E2.

**X5 — reinject bất kỳ mục nào.** **BÁC fail-closed:** 0/23 trục con-ĐO đo **presence-per-item**; ledger `:50` tự khai detection là **BUILD-GAP/PARTIAL** ⇒ neo gì cũng bịa.

**X6 — distill ≥3 cặp gist đã cũ** (cicd 07-18 vs src 07-30 · inv-cb 07-18 vs src 07-29 · lead-gap 07-26). **BÁC vòng thứ 3 liên-tiếp:** **0 instrument đo tuổi/độ-phủ gist** ⇒ action sẽ neo bằng **mtime = proxy**, mà luật của chính tôi (A3@S153) **cấm neo action bằng proxy mtime**. → E4.

**X7 — vá blind-spot probe in `l2idx 0 over` nhị-phân khi thực 99,18%.** **BÁC: đó là INSTRUMENT, không phải corpus** ⇒ lane ĐO/tooling (N2).

**X8 — thêm key `pull_warn_days` để nhánh `OVERDUE:pull` kích được** (ngày thứ 8). **BÁC 2 tầng:** (i) không phải agent-memory corpus; (ii) `nhip-no-probe.ps1:209-210` khai **CỐ Ý** *(absent ⇒ stay INFORM, **cấm bịa default**)* ⇒ tự thêm key = **bịa số của owner**. → OWNER (N5).

**X9 — action theo `memory-selfimprove: GAP = HCV:MED`.** **BÁC:** con-ĐO in **đúng 1 nhãn, 0 breakdown** ⇒ không biết HCV hụt ở tiêu-chí/file nào ⇒ **không neo nổi `file:path`** ⇒ đề = bịa đối-tượng.

**X10 — action theo `run-chưa-gom 3`.** **BÁC:** con-ĐO tự dán **N/A — nhường `harvest-curator`**. Trùng lane (N3).

**X11 — nhân bản P1/P2/P4/P5 của H2.** **BÁC theo lệnh cấm nhân-bản.** Thay vào đó tôi làm phần **chỉ tôi làm được — kiểm P1/P2 có phá cap của tôi không** (H2 không cầm số cap):

| H2 | đích | l1 nay | sau seed (+2.041, mẫu lớn) | phán |
|---|---|---|---|---|
| P1 | `tooling-auditor` | 19.055 | **21.096** < low-water 21.760 | ✅ **AN TOÀN**, không xung đột A1 |
| P2 | `reviewer` | 17.334 | **19.375** < 21.760 | ✅ **AN TOÀN** |
| P3 | `cicd-monitor/archive/_INDEX.md` | đệm **167 B** | +2 record ≈ **328 B** | 🔴 **VỠ CAP** → E1 |
| P4/P5 | `git mv` + luật END-line | — | 0 byte vào corpus | ✅ trung-tính |

**X12 — archive nhóm 19–20 KB** (`cicd-monitor` 20.109 · `implementer-frontend` 19.745 · `test-specialist` 19.391). **BÁC:** cả 3 **dưới low-water 21.760**, đệm 5.491 / 5.855 / 6.209 ≫ 3.070 ⇒ **0 tín-hiệu**. Đề thêm chỉ để bảng dài ra = **làm việc cho có**, đúng thứ mục BÁC này sinh ra để chặn.

**X13 — action lên `ctx-curator` (3.556 B mà archive-gate đếm `0 entry`).** **BÁC:** bất-thường này **đã được định-tuyến** — A1@S154 → escalate S158-E3 → **chuyển lane tooling**. Kéo về = giành lại món đã giao. INFORM: `ctx-curator 0 entry` + `ctx-verifier 1 entry` cùng lớp với **B4@S153** (nội-dung thật nhưng **khuôn không khớp bộ đếm**) ⇒ nhân-chứng nằm ở đây nếu lane tooling cần.

---

## 5. NHƯỜNG (5)

- **N1 — LEAD session hot-feed / carry / work-state**, **và trọn trục `crystallized_backfill` ghost-wire** (headroom 160.924 tok · 0 bước rót / 4 lệnh nghi-thức · control-dương `backfill` 13/53) → **`lead-gap-auditor`**; số kho nay lấy bản **ring2 HELD 1.250.494 B** thay 1.167.001 B. Tôi **không đề lại**, và X2 chứng minh tôi **cũng không thể** chạm cơ-học.
- **N2 — instrument đọc sai / thiếu thước** (probe nhị-phân che 167 B · `pull_warn_days` vắng key · 0 thước tuổi gist · `selfimprove` không breakdown · `measured{}` 17/23 + 16/17 lệch) → **lane ĐO `harness-eval`** / tooling.
- **N3 — harvest, `run-chưa-gom 3`, P1–P5** → **`harvest-curator` (H2)**. Tôi chỉ nộp phép kiểm cap ở X11 + cảnh-báo thứ-tự ở E1.
- **N4 — chấm bản này** → **`harness-audit`** (nấc 3). Tôi không tự-chấm.
- **N5 — MỌI CON SỐ & nhịp** (30.720 · 25.600 · 21.760 · 20.480 · 15 · 210.000 · 17,1K · light/deep · `pull_warn_days`) → **OWNER**.

---

## 6. TỰ KHAI CỦA VAI (để `harness-audit` trừ điểm được)

1. **0 instrument chạy lại.** Chỉ `ls` / `git show` / `grep` / cộng-trừ. Mọi số nền là của con-ĐO.
2. **Sổ chốt-dừng lượt này TƯƠI** (diary tan băng `e5123ff`) ⇒ tôi **không** viện cớ S159 để đề ít; 2 action là con-số **do tín-hiệu quyết**, không do sợ.
3. **Chạm đĩa đã đổi kết-luận của tôi 2 lần:** (i) **X2** — định BÁC crystallized bằng lý-do "turf", mở file mới thấy lý-do **cơ-học mạnh hơn** (0/6 nguồn là corpus) **và** mới tách được `hotload ⟂ kho backfill`; (ii) **E1** — định *suy* rằng P3 thêm record, nhưng `grep` trước: #422/#425 **thật sự vắng** khỏi cả `_INDEX` lẫn `2026-07.md` ⇒ va-chạm là **thật**. Nếu 2 mã đó đã có sẵn thì E1 của tôi **đã sai**.
4. **Sai-số tự khai:** phép cộng byte-per-section lệch **+1 B** vs `wc -c` (lead-gap 23.594 vs 23.593; harvest 23.494 vs 23.493) do file **không có newline cuối**; `_INDEX` tôi ra 20.311 vs 20.313 (**−2 B**). ⇒ **số thẩm-quyền là số con-ĐO**; số của tôi chỉ dùng **chia tỷ-lệ khối**, mọi kết-luận có biên ≥ 3× nên 1–2 B không lật được gì.
5. **Số tôi tự cộng, dán ra để trừ:** 2.007 · 2.107 · 3.148 · 6.545 · 13.187 · 10.406 · 15.194 · 17.213 · 8.387 · 1.833 · 1.733 · 323.178 · 328 · 25.634 · 25.353 · 25.709 · 25.314 · 21.096 · 19.375 · 83.493.
6. 🔴 **Vết ghi của lượt tôi:** có Write/Bash, đã ghi **đúng 1 file** = return này. **0 file corpus bị chạm.** Persona ghi *"read-only = chặn-THIẾU-tool"* — lượt này **không đúng nguyên văn**; containment THẬT = **lead soát `git status`**.
7. **Sự-cố ghi của chính lượt này (khai, không giấu):** 1 lệnh `cat <<EOF` hỏng quoting ⇒ khối §4–§6 **không land** ở lần đầu, file dừng ở 23.133 B. Lead kiểm đĩa xác nhận **nguyên vẹn, 0 rác, 0 nửa-dòng**; tôi ghi lại bằng đường khác (`Write` tạm + `cat` append). 🔴 **Bài rút:** nếu tôi nghe theo "chỉ thiếu END-line" mà dán ngay `BÁC=13`, thì **END-line đã khai 13 mục BÁC trong khi đĩa có 0 mục** = đúng lớp *claim mạnh hơn việc đã làm*. **END-line phải viết SAU khi thân bài land, không trước.**
8. **Stray `agent-cwd-relative-memory-misland` (lead bắt 16:26) — dính đúng tên đối-tượng A1 của tôi:** 3 thư-mục rỗng `.claude/agent-memory/{lead-gap-auditor, ring1-audit, ring2-audit}` bị tạo **lạc trong run-folder**, đã verify 0 file + xoá. **Không ảnh hưởng A1/A2:** mọi phép đo của tôi chạy trên **đường canonical** `.claude/agent-memory/lead-gap-auditor/MEMORY.md` và ra **23.593 B — khớp đúng số con-ĐO**, tức tôi đo đúng vật thật, không đo vỏ rỗng. Ghi nhận 2 điểm cho lane khác: `git status` **mù với thư-mục rỗng**, và đây là ca **drift-sinh-sau-phép-đo thứ 2** trong phiên (H2 đo 16:15, ring1 16:21:57, stray sinh 16:26) ⇒ 2 verdict "PASS 0 stray" kia **vẫn đúng tại thời-điểm đo**.
9. **Đề-xuất ≠ đã-làm.** A1 + A2 là **propose-only**, single-writer = lead (B3 VERIFY→APPEND).
10. **Điểm yếu bản này (tự nêu trước khi bị bắt):** (i) tôi **không đo** được closeout S163 có thật sự seed vào lead-gap/harvest hay không — chỉ suy từ việc 2 sub-file S163 của họ **có trên đĩa**; nếu closeout bỏ seed thì **dự-báo vượt cap không xảy ra** (A1/A2 vẫn đứng vì neo đệm tĩnh). (ii) `tripwire 3.070 B` là **thước của chính tôi @S151**, **không phải số owner** — owner bác thước này thì A1/A2 chỉ còn neo `low-water 21.760` do máy in. (iii) Tôi **không mở đọc nội-dung** 2 khối `S148`/`S150` để thẩm-định giá-trị từng dòng — tôi neo vào **tuổi + kích-thước bất-thường**, nên nếu trong đó có mục còn nóng thì **`value_protect` của archive-gate phải là lớp chặn**, không phải tôi.

END harness-refine-S163 — TOTAL=2 action (① nạp-lại 0 · ② thăng-hạng 0 · ③ lưu-kho 2 · ④ chưng-cất 0) — BÁC=13 — ESCALATE=5 (đếm riêng) — NHƯỜNG=5
