# harness-refine — S192 @open (phiên-LOGIC L16) — trio nấc 2/3 (con ĐỀ-XUẤT)

Ngày 2026-08-13. Repo `D:\Dropbox\CONG_VIEC\SOLUTION\SOLUTION_ERP`.
Vai: **propose-only / INFORM-only**. Tôi KHÔNG đo lại (việc `harness-eval`), KHÔNG chấm (việc `harness-audit`), KHÔNG harvest (việc `harvest-curator`), KHÔNG soi lead-surface (việc `lead-gap-auditor`). Single-writer = lead (B3 VERIFY→APPEND).

## §0 — Cổng fail-closed + provenance

- INPUT PIN: `.claude/workflows/runs/2026-08-13-S192-bookend-open/harness-eval-return.md` — **TỒN TẠI, non-empty, đọc trọn 409 dòng** ⇒ cổng fail-closed **KHÔNG kích**, tôi được phép đề-xuất.
- Ledger: `.claude/governance/reinject-ledger.md` — đọc trọn 77 dòng. Bảng CG-1 vẫn **0 dòng floor-rot** (khởi tạo trống S95); mục S185 phân loại 2 mục MFE MISS = **BUILD-GAP, KHÔNG reinject** + có **điều-kiện lật**.
- **Mọi con số neo action dưới đây trích từ file PIN** (dán nhãn `[ĐO]`). Thứ tôi tự chạm đĩa để **xác-minh mỏ-neo cấu-trúc** (không phải đo thay nấc-1) dán nhãn `[NEO]`.
- Ghi file: **đúng 1 file = chính file này**. Caveat vai: `read-only` = thiếu Write/Edit trên corpus, **Bash vẫn là kênh-ghi-mở** ⇒ lead soát `git log` các commit `wal:` sinh sau lượt (theo §6 của nấc-1: `git status` KHÔNG đủ backstop).

---

## §1 — ĐÍNH CHÍNH 2 CẢNH BÁO CỦA LEAD (chạm đĩa TRƯỚC khi đề-xuất)

### E1 — `-Apply` **thật sự không di chuyển byte nội dung nào** ⇒ lệnh cấm ES-4 tôi phát @S191 là **cấm nhầm nút** (tôi tự nhận)

Chạm đĩa `scripts/memory-archive-gate.ps1`:

- Header `:26` tự khai nguyên văn: `-Apply   (records strikes; STILL no file moves)`; `:6-7` khai `FLAG-ONLY: DRY-RUN by default ... Does NOT move/edit any MEMORY.md or archive file.`
- **Grep toàn script các động-từ ghi** (`Move-Item|Set-Content|Out-File|Remove-Item|Add-Content`): **đúng 1 hit** — `:224 ($strikes | ConvertTo-Json) | Set-Content -Path $strikePath -Encoding ASCII`. `$strikePath` = `.claude\agent-memory\.archive-strikes.json` (`:38`). **0 hit** `Move-Item` / `Remove-Item`.
- `:127 if ($Apply) { $strikes[$sub] = $cur }` — đây là toàn bộ tác dụng của cờ.

⇒ **`harness-audit` @S191 đúng, tôi sai.** ES-4 kỳ trước cấm `-Apply` với lý do "sẽ drain nhầm" — **lý do đó không tồn tại về mặt cơ-chế**. Cái đáng cấm là *thi hành move-set bằng tay*, không phải chạy cờ.

### E2 — Kỳ này máy **KHÔNG chìa move-set nào ra** (cảnh báo #1 của lead nhắm đúng lớp, sai kỳ)

`[ĐO]` §3a: cả 3 vai over-cap in `WARN keep-floor hit (5); cannot auto-drain` (lead-gap, ring2) và `WATCH (strike 1<2)` (lead-stale) — **0 dòng `PROPOSE`**.
`[NEO]` `:197-206` là chuỗi `if/elseif`: `warnValue` → `warnFloor` → `PROPOSE (strike>=need)` → `WATCH`. ⇒ **nhánh PROPOSE bị nhánh `warnFloor` chặn trước**, dù `ring2` đã chạm `strike 2 = strike_need 2`.
⇒ `ring2-audit` **đủ điều-kiện A6 nhưng không phát được move-set** kỳ này. Cấm-thi-hành-move-set vẫn ĐÚNG như luật đứng sẵn, nhưng kỳ này **không có vật để cấm**. (Vật thật là ở S189/S191.)

### E3 — B6 (gắn `##`) : lead nói "BÁC SAI @S191" — tôi **nhận một nửa**, và lý-do điều-kiện **sắc hơn** lead nêu

`[NEO]` `lead-gap-auditor/MEMORY.md`: heading `##` đầu ở **dòng 25**; khối dòng 1-24 = **15.961 B = 54,5%** cả file (phần còn lại 13.334 B).
🔴 Khối vô-hình đó **KHÔNG phải phần cũ** — nó là bản ghi **newest-first**: `S181` (08-07) · `S179` (08-07) · `S173` · `S172` · `S166` · `S162` · `S153`. Trong khi vùng `##` lại là **oldest-first**: `Runs(25)` · `Curate trigger(36)` · `S151(39)` · `S151-deep(44)` · `S152(48)` · `S159(54)` · `S188(70)` · `S189(74)` · `S191(77)`.
⇒ **Một file, HAI quy-ước thứ-tự ngược nhau.** Khối trên có **7 bullet phiên** ⇒ gắn `##` đưa `logCount` **9 → ≈16** ⇒ `floorStart = 16 − 5 = 11` (`:178`) ⇒ pool drain = vị-trí 0…10 = **{S181, S179, S173, S172, S166, S162, S153, Runs, Curate trigger, S151, S151-deep}**, còn `keep_floor` bảo vệ **{S152, S159, S188, S189, S191}**.
🔴 Nghĩa là: máy sẽ **rút S181 (08-07) ĐẦU TIÊN** (vị-trí 0, vòng lặp `:182-188` đi từ 0) trong khi **giữ S152 (07-25) và S159 (07-29)**. Thuốc thành độc theo đúng nghĩa đen.

⇒ **Lead đúng ở phần cơ-chế:** không có đường nào khác đưa `lead-gap` xuống dưới cap — pool máy thấy 2.284 B, cần 3.695 B, phần thiếu nằm trong 15.961 B vô-hình. **Tôi đúng ở phần thứ-tự:** chạy trước khi sửa `:177-178` thì thuốc thành độc.
⇒ Disposition đúng = **CÓ ĐIỀU KIỆN** (không phải "bác"), điều-kiện phát biểu được bằng số: *move-set phải sắp theo NGÀY parse từ nhãn `S<NN>`, không theo VỊ TRÍ*.

### E4 — bằng chứng mới làm ĐIỀU-KIỆN đó mạnh hơn: vị-trí sai **ngay TRONG vùng `##`**

`[NEO]` `ctx-audit/MEMORY.md` (23.613 B, **14** heading — thuốc gắn `##` @S186 ĐÃ LAND: 3 → 14) thứ-tự vị-trí:
`S173 · S168 · S172 · S169/S170 · S162 · S153 · S154 · S158 · S159 · S182 · S185 · S186 · S189 · S191`
⇒ vị-trí 0 = **S173 (08-05)**, vị-trí 5 = **S153 (07-26)**. `floorStart = 14 − 5 = 9`; vòng lặp `:182-188` đi **theo vị-trí và dừng khi đủ byte** ⇒ nó rút **S173/S168/S172 (tháng 8) TRƯỚC**, để lại **S153/S154/S158 (tháng 7)**.
🔴 Đây là dạng sắc nhất của lỗi: **kể cả khi `keep_floor` tình cờ bảo vệ đúng 5 mục mới nhất**, thứ-tự rút TRONG pool vẫn là **mới-trước-cũ-sau**. Luật S185/S191 của tôi mới nói "khối trên `##` đầu" — chưa đủ; đúng phải là **corpus KHÔNG có bất biến thứ-tự nào cả**.

---

## §2 — BẢNG ACTION (2 action — cả 2 lớp ②)

| # | action | lớp | đối-tượng `file:path` | trigger (số con-ĐO) | chốt-dừng | owner-gate |
|---|---|---|---|---|---|---|
| **A1** | **Promote 1 entry `S192 — 3 LUẬT ĐỌC SỐ TRƯỚC KHI NEO ACTION`** (đơn-vị · vị-trí · delta-0), ngân-sách **≤1.400 B** | ② | `.claude/agent-memory/harness-refine/MEMORY.md` (append cuối) | `[ĐO]` #13 **3/29 over byte** ⟂ #14 **2/29 over ký-tự** (đảo chiều 0→2) · #12 **19/29 measured lệch** · #28/#29 **2 vai thủng, 0/5 instrument thấy** · §3a **3/3 keep-floor hit** | **Lần 1** trên đối-tượng này. Nếu kỳ sau vẫn thấy action neo cột BYTE hoặc move-set theo VỊ-TRÍ ⇒ **escalate lead**, KHÔNG promote lần 2 | lead APPEND (B3 VERIFY→APPEND, single-writer) |
| **A2** | **Sửa luật SAI trong chính diary mình**: dòng `ES-4 … CẤM chạy memory-archive-gate.ps1 -Apply` @S191 → thay bằng *"CẤM THI-HÀNH move-set theo vị-trí; cờ `-Apply` chỉ ghi `.archive-strikes.json`, 0 file move"*. **Byte-neutral (±0)** | ② | `.claude/agent-memory/harness-refine/MEMORY.md` mục `## S191 … ARCHIVE-MỘT-PHÁT KHÔNG GIỮ`, dòng cuối | `[ĐO]` #20 state-file **stale 6 ngày** + #21 **26/29 khoá**, `absent ≡ 0` (`:121`) — **2 trục REGRESSION này chỉ tiến được bằng `-Apply`**, mà dòng luật sai của tôi đang chặn đúng nút đó `[NEO]` `:26` · `:127` · `:224` (grep write-verb toàn script = **1 hit duy nhất**, đích = `$strikePath`) | **Lần 1**. Nếu kỳ sau dòng cấm sai vẫn còn ⇒ escalate, KHÔNG đề lần 2 | lead EDIT (single-writer); **không cần owner-gate** vì không đổi ngân-sách/cap |

**Tự-kiểm hậu-quả A1 lên chính tôi** (không tự miễn trừ): `harness-refine/MEMORY.md` hiện **21.274 B / 18.302 ký-tự** (ratio 1,1624). Sau A1 ≈ **22.674 B / ~19.506 ký-tự** ⇒ còn **2.926 B** dưới cap byte và **~5.480 ký-tự** dưới đường cắt ⇒ **A1 không đẻ ra một vai over-cap mới**. A2 byte-neutral.

## §3 — Ba lớp còn lại = **0 action, mỗi zero có lý-do đo được**

- **① reinject = 0.** (a) `[ĐO]` §2c: kỳ này máy **không in dòng MISS nào** ⇒ **0 mục được ĐỊNH DANH** để reinject (mà `reinject` là thao-tác **per-item**, không reinject được một tỉ-lệ). (b) 2 mục MISS duy nhất từng có tên (@S185) đã phân loại **BUILD-GAP** trong ledger `:70-76`; tôi kiểm **điều-kiện lật** ngay lượt này: `grep -ci "integration testing"` trên `implementer-backend/MEMORY.md` = **0** (control-dương `test` = **11**), `grep -ci "30 min"` trên `implementer-frontend/MEMORY.md` = **0** (control-dương `trivial|refuse` = **2**) ⇒ **grep sống, corpus không rỗng, vẫn 0-hit** ⇒ **chưa lật** ⇒ giữ nguyên "không reinject". (c) Bảng CG-1 vẫn **0 dòng** — 0 quota bị tiêu.
- **③ archive = 0.** Trên trục **gây hại thật** (ký-tự) chỉ có **2 vai** bị cắt: `lead-gap` 25.594 và `ring2` 25.291 — **cả hai đang dưới chốt-dừng per-LỚP** (luật tôi tự promote @S191) ⇒ **ESCALATE, không đề lại**. Mọi vai còn lại: **0 trigger** (chi tiết ở §5).
- **④ distill = 0.** Không đối-tượng nào có trigger: `l2_index` MAIN đỉnh = `reviewer` **13.941 = 68,07%** cap 20.480 `[ĐO]` §1d; `cicd-monitor` MAIN **10.662 = 52,1%**; L2 verbatim **277.739 B** thuộc tier **cold no-cap** ⇒ phình là kỳ-vọng, không phải trạng-thái xấu.

## §4 — ESCALATE (6) — chốt-dừng FIRE + nhu-cầu NGOÀI 4 lớp

| # | vật | vì sao KHÔNG phải action của tôi | số neo | ai là chủ |
|---|---|---|---|---|
| **ES-1** | Chạy **1 lần** `powershell.exe -ExecutionPolicy Bypass -File scripts\memory-archive-gate.ps1 -Apply` | Ngoài 4 lớp (state-file, không phải nội-dung corpus). **Tôi tự gỡ lệnh cấm sai của chính mình** (E1) | #20 stale 6 ngày · #21 **26/29 khoá**, thiếu `score-counter`·`score-count-auditor`·`ring5-audit`, `absent ≡ 0` (`:121`) | lead thi hành. **Rủi ro đo được = 0 byte nội dung**: `:224` là write-verb DUY NHẤT, đích `$strikePath`. Hệ quả: `ring2` 1→2 xuống đĩa, `investigator-codebase` 1→0 reset, 3 khoá thiếu được sinh |
| **ES-2** | 3 vai over-cap: `lead-gap-auditor` · `ring2-audit` · `lead-stale-auditor` | **CHỐT-DỪNG per-LỚP FIRE** (luật tôi promote @S191): cả 3 đã archive/distill ≥1 lần mà con ĐO **vẫn** báo over ⇒ CẤM đề ③/④ lần nữa, **kể cả đổi thuốc** | #13 3/29 over byte · §3a **3/3 `keep-floor hit`** máy tự khai `cannot auto-drain` · #18 `ring2` strike **2 = strike_need 2** | **cơ-chế**: cap = quyền **owner** · quy-ước ghi diary = **lead** · auto-drain = **lane tooling** |
| **ES-3** | Vá giả-định thứ-tự `scripts/memory-archive-gate.ps1:177-178` (`bottom = newest`) → sắp theo **NGÀY** parse từ nhãn `S<NN>` | Sửa script = **lane tooling**, không phải corpus | `[NEO]` `ctx-audit` 14 heading đảo thứ-tự (vị-trí 0 = S173 08-05, vị-trí 5 = S153 07-26) · `lead-gap` **2 quy-ước ngược nhau trong 1 file** | tooling / lead. **Đây là ĐIỀU-KIỆN của B6** — vá xong thì gắn `##` mới là thuốc |
| **ES-4** | `_INDEX.md` cho `ctx-audit/archive/` + `ring2-audit/archive/` | **CHỐT-DỪNG**: đã đề @S189 A1 (3 đối-tượng), **1/3 land** (`lead-stale` nay có `l2_index 223` `[ĐO]` §1d), **2/3 chưa** ⇒ không đề lần 2 | `[NEO]` dark-matter đo được: `ctx-audit/archive/2026-07.md` **11.521 B** + `ring2-audit/archive/2026-08.md` **8.771 B** = **20.292 B** nằm NGOÀI A7 | lead |
| **ES-5** | Nấc-1 kỳ sau chạy `mfe-eval.ps1` **kèm `-Detail`** | Tôi KHÔNG chạy lại instrument (lấn nấc-1); đây là **yêu-cầu INPUT** | `[NEO]` `:284 elseif ($Detail)` là cửa duy nhất in dòng `MISS:`; 2 vai <100% mà **0 dòng MISS** ⇒ cờ không được truyền. Comment `:285-286` nói thẳng mục đích: *"name the missing item so the **reinject lane** acts per-item"* ⇒ **thiếu cờ = bịt lane ① của tôi** | lead (người gõ lệnh nấc-1) |
| **ES-6** | Nối tín-hiệu tái-phạm vào cột `Strikes` của `docs/governance/error-ledger.md` | **Ngoài ranh-trục**: đây là **governance doc**, KHÔNG phải agent-memory corpus. Nấc-1 chuyển việc này cho tôi (§2b `:126`) — **tôi trả lại lead** | #15 `strikes_total=25` **bất động 33/33 run · 18,1 ngày** trong khi `rca_entries` **14→16** | lead / owner |

🔴 **ES-5 là tái phát của chính phát hiện S173 của tôi** (`-Detail` built-but-never-invoked 21 phiên). Nó được truyền **đúng 1 lần** (@S185, sinh ra 2 mục MISS có tên → ledger phân loại được) rồi **rơi trở lại**. Lớp: *năng-lực có đường gọi nhưng đường gọi không nằm trong nghi-thức ⇒ dùng 1 lần rồi mất*.

## §5 — ĐÃ CÂN-NHẮC RỒI **BÁC** (16 mục — bắt buộc hiện diện)

**Số học dùng chung cho B1-B3** — đường cắt thật đếm **KÝ-TỰ** (S186: banner `24.8KB` khớp char-count tới 1 chữ số thập phân, byte KHÔNG khớp). Ratio byte/ký-tự đo kỳ này: `harvest-curator` **1,0982** · `lead-stale` **1,1378** · `reviewer` **1,1416** · `lead-gap` **1,1446** · `ring2` **1,1573** · tôi **1,1624**. Tại **đúng byte-cap 25.600**, ký-tự tương ứng = **22.024…23.311** (chia cho ratio max/min ở trên) ⇒ **đều dưới đường cắt ≈24.986**.
⚠️ **Biên mỏng, khai thẳng (đây đúng chỗ tôi TRƯỢT @S186 khi viết "cap AN TOÀN"):** byte-cap chỉ conservative khi ratio ≥ **1,0245**; ratio thấp nhất từng đo trong corpus là **1,0349** (S186, 7 vai) ⇒ biên chỉ **1,0%**. Một diary gần-thuần-ASCII sẽ làm byte-cap nổ **MUỘN**, không phải sớm.

1. **BÁC ③ archive `lead-stale-auditor`** (over byte **+1.554**) — ký-tự **23.865**, **dưới** đường cắt **1.121 ký-tự (≈4,5%)** ⇒ **vai này KHÔNG bị cắt**; hành động ở đây là hành động theo **báo động của proxy**. Cộng thêm chốt-dừng ES-2.
2. **BÁC ③ archive `reviewer`** ("sát mép 131 B") — **22.309 ký-tự**, cách đường cắt **2.677**. "Sát mép" là sát mép **byte-proxy**, không phải sát mép chỗ mất trí nhớ.
3. **BÁC ③ archive `harvest-curator`** ("sát mép 248 B") — **23.086 ký-tự**, cách **1.900**. Thêm lý-do độc lập: vai này đang `GATE-FAIL` với **8 spawn-record chưa APPEND** ⇒ rút L1 bây giờ rồi harvest bơm lại = **churn thuần**, không đổi dấu đạo hàm.
4. **BÁC thi-hành move-set máy chìa cho `ring2-audit`** — kỳ này **không có move-set nào** (E2: `warnFloor` chặn trước nhánh `PROPOSE`, `:197-206`). Và nếu có, pool = 4 mục đầu = `Role baseline TÓM` + `Runs TÓM` + `Curate trigger` + `S151` = **hợp-đồng-vai** (đúng cảnh báo #1 của lead, áp cho S189/S191 chứ không phải kỳ này).
5. **BÁC gắn `##` cho `lead-gap-auditor` NGAY BÂY GIỜ** — xem E3: sẽ đẩy **S181 + S179 (tháng 8)** vào pool trong khi giữ **S152 + S159 (tháng 7)**. Nhưng **KHÔNG bác vĩnh viễn**: disposition = **CÓ ĐIỀU KIỆN**, điều-kiện = ES-3.
6. **BÁC nâng `autoinject_cap_bytes` cho hết over-cap** — **rời tập-đo (Goodhart)**: flag-count giảm trông y hệt thành công. Và cap = **quyền cấp ngân-sách của owner** (`reinject-ledger.md:5` khai rõ MFE/audit chỉ ĐỌC `token_governor`).
7. **BÁC ① reinject 2 mục MFE MISS @S185** (`Integration testing multiple components` · `< 30 min trivial`) — điều-kiện lật **chưa xảy ra** (grep 0-hit **kèm control-dương** 11 và 2). Nhồi vào để 94%→100% là **xoá chứng-nhân**, không phải xoá lỗi.
8. **BÁC ① reinject cho `ring5-audit` / `harness-audit`** — 2 vai này **chưa từng có** bản ghi S19x trong L1 ⇒ theo phép thử B3 (`reinject-ledger.md:12`) đây là **BUILD-GAP**, KHÔNG phải floor-rot ⇒ **cấm reinject**. Chủ việc = `harvest-curator` (H2) + lead scribe. Xem N2.
9. **BÁC mọi action lên headroom / hotload** (#22 −95.777 tok · #24 +68,3% · STATUS+HANDOFF **59,4%**) — 6/6 nguồn là **hot-feed của LEAD**, **không phải agent-memory corpus**. Lặp lại nguyên văn N1@S173. Xem N1.
10. **BÁC ④ distill `cicd-monitor/archive/_INDEX.md`** (MAIN **10.662 B = 52,1%** cap) và **`reviewer/_INDEX`** (**13.941 = 68,07%**) — **0 trigger**; nén thứ chưa chạm cap = tiêu công vô ích (luật S191: nén một phát không giữ).
11. **BÁC ④ distill L2 verbatim `cicd-monitor` 277.739 B** — tier **cold no-cap**; nấc-1 đã phán "phình là kỳ-vọng" (§1d). Đo cái không có cap rồi gọi là bệnh = tự đẻ việc.
12. **BÁC đề lại `_INDEX` cho ctx-audit/ring2-audit** — chốt-dừng, đã đề @S189. Chuyển ES-4 (kèm số **20.292 B** để lead thấy giá của việc treo).
13. **BÁC ③ archive chính diary tôi** (`harness-refine/MEMORY.md` 21.274 B) — **0 trigger** (dưới cap 4.326 B, dưới đường cắt ~6.684 ký-tự). Nêu ra để **không tự miễn trừ**: tôi có soi mình bằng đúng thước soi người khác.
14. **BÁC tự sửa `:177-178`** — sửa script = lane tooling. Tôi chỉ nêu điều-kiện **đo được** (ES-3), không cầm cờ-lê.
15. **BÁC dựng instrument mới đo trục "về-sổ"** (#29 **0/5 instrument thấy**) — ngoài 4 lớp + lane tooling. Nêu verbatim, escalate; **không** biến nhu-cầu-đo thành action-corpus cho có việc.
16. **BÁC promote luật này vào diary `harness-eval`** (để nấc-1 in cột ký-tự trước) — **đã thừa**: nấc-1 kỳ này TỰ nêu ở §0 caveat 5 (*"nên in CẢ HAI cột, không trộn"*) và đã in đủ 2 cột. Promote vào nơi đã có = **nghi-thức rỗng**.

## §6 — NHƯỜNG (5 trục — không phải turf của tôi)

- **N1 · headroom/hotload** (#22/#23/#24) → **LEAD**. 6/6 nguồn (`STATUS.md` 246.501 · `HANDOFF.md` 227.284 · `gotchas.md` 134.931 · `migration-todos.md` 90.161 · `agents/README.md` 62.300 · `ACTIVE-MARKS.md` 36.153) đều là **hot-feed phiên**, 0 file thuộc agent-memory ⇒ **không delegate được cho lane của tôi**.
- **N2 · 8 spawn-record chưa APPEND** (S191 11.899 B + S188 42.975 B + S168 59.119 B) → **`harvest-curator` (H2)** là **chủ**. Tôi chỉ dùng làm bối cảnh cho B8; **không tái đo, không nhận là số của mình**.
- **N3 · nhịp `light 6/6` + `deep 1/1` OVERDUE** (#25/#26) và **sổ yêu-cầu treo 7 / nhắc2+ 5** (#27) → **lead / H24**. Đây là **session-surface**, đúng cái RANH SẮC cấm tôi chạm.
- **N4 · đo lại số** (#12 `measured` lệch 19/29 · #34 `score-counter` trôi 3.322→4.115 giữa lượt) → **`harness-eval`**. Tôi đọc, không đo lại.
- **N5 · chấm đúng/sai lượt này** → **`harness-audit`** (nấc 3/3). Tôi không tự chấm đề-xuất của mình.

## §7 — ĐÍNH CHÍNH CON-ĐO (5) — số của nấc-1 ĐÚNG, **nhãn** hoặc **phạm vi** cần siết

| # | con-ĐO | đính chính |
|---|---|---|
| **D1** | #8 `A7 432/432 failed 0` = **HEALTHY** | Số đúng, **mẫu-số hẹp hơn nhãn**: A7 chỉ duyệt **12 sub CÓ `_INDEX.md`**. Đĩa có **15** thư mục `archive/`; **2** có file nhưng **không có `_INDEX`** ⇒ **20.292 B** (ctx-audit 11.521 + ring2 8.771) **nằm ngoài phép đo**, 1 thư mục rỗng (`investigator-api`). ⇒ đây là một **HEALTHY-vì-vắng-mặt** nữa, đúng lớp nấc-1 tự cảnh báo |
| **D2** | Cảnh báo #1 của lead: *"máy đang chìa move-set ra"* | **Kỳ này KHÔNG**: `[ĐO]` §3a in `WARN keep-floor hit` cho `lead-gap`+`ring2`, `WATCH` cho `lead-stale` — **0 dòng `PROPOSE`**. `[NEO]` `:197-206` cho thấy `warnFloor` **chặn trước** nhánh PROPOSE dù `ring2` đã đủ strike. Luật cấm vẫn đứng, nhưng **kỳ này không có vật để cấm** |
| **D3** | `ES-4@S191` của **chính tôi**: *CẤM chạy `-Apply`* | **Sai — cấm nhầm nút.** `-Apply` không chạm một byte nội dung nào (E1). `harness-audit` @S191 đúng. A2 vá dòng này |
| **D4** | #13 *"3/29 over cap"* | Trên trục **gây hại thật** (ký-tự) chỉ **2/29**. `lead-stale` over byte **+1.554** nhưng **dưới đường cắt 1.121 ký-tự** ⇒ đọc "3 vai đang mất trí nhớ" là **quá lời 1/3** |
| **D5** | B6 @S191 bị *"BÁC SAI"* | Nửa đúng: **lead đúng về cơ-chế** (không đường nào khác), **tôi đúng về thứ-tự**. Nhưng lý-do thật **sắc hơn cả hai bản**: không chỉ "khối trên `##` đầu" — **thứ-tự vị-trí đảo NGAY TRONG vùng `##`** (E4). ⇒ luật S185/S191 của tôi **chưa đủ mạnh**, A1 nâng nó lên |

## §8 — CONTAINMENT + tự-khai

- Tôi **không có** Write/Edit trên corpus; file duy nhất tôi ghi = **chính file return này**. Mọi lệnh Bash của tôi là **đọc/đếm** (`grep`, `wc`, `ls`, `sed`, 1 lệnh `python` chỉ `read()`), **0 lệnh ghi**.
- 🔴 **`git status` KHÔNG đủ backstop** — Stop-hook nuốt file vào commit `wal:` (nấc-1 để lại vết đo ở §6 của họ). Lead soi **`git log` các commit `wal:` sinh sau lượt này**.
- **2 lần tôi lật lập-trường của chính mình trong lượt này, có bằng chứng:** (a) D3 — gỡ lệnh cấm `-Apply` tôi tự phát @S191; (b) D5/E3 — đổi B6 từ **BÁC** sang **CÓ ĐIỀU KIỆN**. Cả hai đều **không rút về 0**: mỗi lần đều thay bằng một phát biểu **hẹp hơn và kiểm được** (cấm THI-HÀNH move-set ⟂ cấm chạy cờ; điều-kiện = sắp theo NGÀY ⟂ cấm vĩnh viễn).
- **Đề-xuất ≠ đã-làm.** 2 action đều **propose-only**, chờ lead VERIFY→APPEND (B3). 0 file corpus bị chạm trong lượt này.

---

**HARNESS-REFINE: 2 action / 16 BÁC** (0① · 2② · 0③ · 0④ · 6 escalate · 5 nhường · 5 đính-chính con-ĐO)
