# sub-ring1-audit — S185 @bookend-close

**Vai:** `ring1-audit` — KIỂM vòng-ĐO tooling/harvest (C4/C4b, AUTO sau H1+H2 chốt).
**Ngày:** 2026-08-09/10 · **Run-folder:** `.claude/workflows/runs/2026-08-09-S185-bookend-close/`

---

## §0 — PIN + fail-safe (nghĩa-vụ (i))

Input pin đích-danh, verify TỒN-TẠI + TƯƠI trước khi chấm:

| Con-đo | File | Byte | mtime |
|---|---|---|---|
| H1 `tooling-auditor` | `sub-tooling-auditor.md` | 13.717 | 2026-08-10 01:51:38 |
| H2 `harvest-curator` | `sub-harvest-curator.md` | 43.771 | 2026-08-09 22:12:44 |

⇒ **PIN ĐẦY ĐỦ. KHÔNG NO-OP.** Cả 2 con-đo CÓ chạy phiên này.

**Tuần-tự C4b:** mtime của tao (file này) > mtime cả 2 ⇒ chạy SAU con-đo, không song song. ✅

_(đang ghi liên tục — đổ ruột trước khi kết luận)_

---

## §1 — VERDICT per-claim: H1 `tooling-auditor` (nghĩa-vụ (ii))

### 1.1 Bốn-mặt số (tự tái-dựng bằng engine RỜI, không re-chạy lệnh H1)

| # | Claim H1 | Phép tao chạy | Kết | Verdict |
|---|---|---|---|---|
| A-01 | roster **28** (đĩa 29 − README) | `ls .claude/agents/*.md`=29 · `grep -v README`=**28** · `git ls-files`=**28** · `ls -d agent-memory/*/`=**28** | 3 engine RỜI cùng ra 28 | **ĐẠT** |
| A-02 | roster khớp **5/5 bề-mặt**, `diff` tập-TÊN = IDENTICAL | so **TẬP** (không so SỐ): `diff` disk⟷agent-memory = `SET_IDENTICAL`; `VALID_ROLES` parse lại (neo `^const VALID_ROLES` … `^]`) = **28**, sym-diff = **[]** | ĐÚNG cả tập lẫn số | **ĐẠT** |
| A-03 | skill project **6** | `ls -d .claude/skills/*/` = 6 (README.md không phải dir ⇒ 0 bẫy glob) | 6 | **ĐẠT** |
| A-04 | skill user-global **23** | `ls ~/.claude/skills/ \| wc -l` = 23 | 23 | **ĐẠT** |
| A-05 | command **19** | `ls .claude/commands/*.md \| wc -l` = 19 | 19 | **ĐẠT** |
| A-06 | plugin **18 reg / 15 en / 3 dis**, tên 3 con disabled | **đổi cách parse** (`json.load` thay grep): keys=18 · true=15 · false=3 · tên khớp **3/3** (`pr-review-toolkit` · `code-modernization` · `hookify`) | khớp tuyệt đối | **ĐẠT** |
| A-07 | marketplace **37** | `ls ~/.claude/plugins/marketplaces/claude-plugins-official/plugins \| wc -l` = 37 | 37 | **ĐẠT** |
| A-08 | máy `scripts/*.ps1` = **36** (+1) | `ls scripts/*.ps1 \| wc -l` = 36 | 36 | **ĐẠT** |
| A-09 | `STATUS.md:478` = `\| Sub-agents \| **28** \|` | `sed -n '478p'` → đúng nguyên văn row canonical | khớp | **ĐẠT** |
| A-10 | `agents/README.md:27` "Roster THẬT (28 vai)" | `sed -n '27p'` → đúng, kèm chỉ-thị *"đếm phần-tử, KHÔNG grep số"* | khớp | **ĐẠT** |
| A-11 | `agents/README:231` khai "18 registered (15 en / 3 dis)" khớp đĩa | đọc `:232` (dòng thật) — nội dung khớp đĩa | khớp (neo lệch 1 dòng, xem R-2) | **ĐẠT** |

🔴 **F-A BROKE VÀO CHÍNH TAO (đời 4) — khai trước khi ai hỏi:** lượt parse `VALID_ROLES` ĐẦU TIÊN của tao ra **20**, suýt tuyên H1 "bịa 28 / 8 vai không có trong hmw.js". Thủ phạm là thước của TAO: tao cắt cửa sổ `s[i:i+3000]` — khối `VALID_ROLES` (dòng 22→59) **dài hơn 3000 ký-tự** vì comment dày ⇒ `find('\n]')` trả `-1` ⇒ mảng bị **cắt cụt đúng sau `ring4-audit`** = 20 tên. Cộng thêm: `s.find('VALID_ROLES')` bắt vào **dòng 18 = comment**, không phải dòng khai báo. Sửa: neo `^const VALID_ROLES` + `^]`, bỏ cửa sổ ⇒ **28, sym-diff rỗng**. **Cùng LỚP với `head -120` mà H2 tự bắt ở §1.51 — thước tự cắt tập rồi báo cáo phần còn lại như toàn-thể.**

### 1.2 F-2 (HIGH) `loi-hua-may-scan.ps1` mồ-côi — **falsify F-B: HELD (mạnh hơn bản H1 nộp)**

Tao KHÔNG re-chạy lệnh H1; tao **mở rộng phạm-vi** để cố BẺ:

| Phép | Kết |
|---|---|
| `grep -rn "loi-hua-may" .claude/commands/` | **0 hit** (`rc=1`) — khớp H1 |
| `grep -rn "loi-hua-may" docs/` | **1 hit DUY NHẤT** `adap-reports/2026-07-19-…:21` — khớp H1 |
| 🔴 **Tao mở rộng: `grep -rn "loi-hua-may-scan" TOÀN REPO** (trừ `node_modules`/`.git`) | **0 cửa gọi.** 3 site H1 KHÔNG báo, tao soi từng cái: `memory-budget.json:49` = cụm chữ *"cua-duyet-loi-hua-may (goi-chot:52)"* = **tên DOCTRINE, không phải tên máy** · `implementer-backend/MEMORY.md:108` = **entry harvest** về lane dựng máy · `tooling-auditor/method_orphan_machine_audit.md:10` = sổ phương-pháp của chính H1. **0/3 là cửa gọi.** |
| `grep "loi-hua-may"` trong `.claude/settings*.json` + `~/.claude/settings.json` (hook) | **0 hit** — không có hook nào gọi |
| **Control-dương** (tái-lập của H1) `grep -rl "naming-scan" docs/ .claude/commands/` | **9 file** — trong đó `session-end.md` chứa **cửa `(k-ter)` gọi thật** (`powershell … scripts/naming-scan.ps1`). ⇒ thước SỐNG, 0-hit là **vắng-mặt THẬT**, không phải `absence_looks_like_clean` |

⇒ **F-2 ĐẠT.** Tao thử phá bằng 2 hướng (mở rộng phạm-vi + tìm hook) đều **không phá được**. 🔸 Ghi thêm cho lead: H1 báo hẹp (`commands/`+`docs/`) — kết-luận vẫn đứng, nhưng **phạm-vi H1 khai HẸP HƠN phạm-vi cần để kết-luận "mồ côi"**; tao đã bù bằng quét toàn repo.

### 1.3 Các claim còn lại của H1

| # | Claim | Phép | Verdict |
|---|---|---|---|
| A-12 | F-1: bảng skill-matrix **26 row**, thiếu **đúng 2** (`score-counter`·`score-count-auditor`) | parser bảng (neo heading `## …Skill assignment`, bỏ header+separator) → **26 body-row**; `set(disk) − set(bảng)` = **`['score-count-auditor','score-counter']`**, `set(bảng) − set(disk)` = **rỗng** | **ĐẠT** (khớp cả SỐ lẫn TẬP lẫn CHIỀU) |
| A-13 | F-3: `grep "4\.4"` cả file = **4 hit**, 0 hit trong ADDENDUM | §2 dưới | ĐẠT — xem §2 |
| A-14 | F-4: `2026-08-08` trong STATUS=0, HANDOFF=0 | §2 dưới | ĐẠT — xem §2 |
| A-15 | F-6: `run.md` 11 row `[ ]`, lệch tên artifact | §2 dưới | ĐẠT — xem §2 |
| A-16 | new-alloc skill **0** / plugin **0** / vai **0**; máy **+1** | A-03/04/06/08 đã dựng lại: 6·23·18/15/3·28 đều 0-delta; `scripts/*.ps1`=36 (+1) | **ĐẠT** |

---

## §2 — VERDICT per-claim: H2 `harvest-curator` + số lead ĐÃ APPEND

### 2.1 🔴 TỰ TÁI-DỰNG SỐ CÓ-THỂ-SAI **#2** — "16 entry" **SAI, thật là 17** ⇒ **TRƯỢT B-01**

H2 §4.3 bảng số cuối: `Entry đề-xuất soạn SẴN = **16** (§3.1-§3.11)`.
Tao đếm **bullet mở-đầu entry** (`^- \*\*S1\d\d `) **bên trong fence** của §3.1→§3.11:

```
3.1 lead-stale-auditor 2 · 3.2 lead-gap 1 · 3.3 tooling 1 · 3.4 ring1 1 · 3.5 ring2 1 · 3.6 ring4 1
3.7 test-spec 1 · 3.8 impl-fe 1 · 3.9 invest-cb 1 · 3.10 reviewer 6 · 3.11 harvest-curator 1  ⇒ TỔNG = 17
```
🔴 **Chính TIÊU-ĐỀ từng mục của H2 cộng lại = 17** (2+1+1+1+1+1+1+1+1+6+1). ⇒ đây là **mâu-thuẫn NỘI-TẠI trong cùng một artifact**: §3 nói 17, §4.3 nói 16. **Không cần trí nhớ để bắt.**
- **Vì sao đắt:** §4.3 là **bảng số cuối** — chỗ người ta chép vào return/HANDOFF. Lead lấy "16" làm đơn đặt hàng ⇒ **1 entry rơi im lặng**.
- **Vì sao lần này KHÔNG mất:** lead thi-hành theo **§3 từng mục**, không theo con số §4.3 (chứng ở 2.2). ⇒ TRƯỢT ở **claim số**, hậu-quả **0** lượt này.
- Cùng lớp `feedback_doctrine_line_undercounts` — đúng tệp mà chính H2 đề-xuất copy sang `reviewer/`.

### 2.2 Tái-dựng **#3** — 17 khối đề-xuất → hạ cánh mấy sổ? (bịa được tên, KHÔNG bịa được byte)

Rút **Tag `[...]` đầy-đủ** của từng entry đề-xuất rồi truy trên đĩa `agent-memory/<vai>/**`:

| đo | kết |
|---|---|
| FULLTAG khớp | **17/17 LANDED** (0 MISSING) |
| **VERBATIM cả DÒNG** (so nguyên dòng đề-xuất ⟷ dòng trên đĩa) | **17/17 IDENTICAL** |
| số sổ đích | **11 vai** — khớp claim `Vai có tên cần APPEND = 11` |

⇒ **B-02 ĐẠT** (11 vai) · **B-03 ĐẠT** (lead APPEND trọn, 0 rơi, 0 méo chữ). Dùng **so chuỗi verbatim**, không so tên/không đếm số — lens khác hẳn lens H2 dùng.

### 2.3 Tái-dựng **#4** — 7 tệp copy-nguyên: đủ trên đĩa `reviewer/` chưa?

| tệp | src byte | dst byte | md5 | index-pointer |
|---|---:|---:|---|---|
| `feedback_doctrine_line_undercounts` | 2.518 | 2.518 | **SAME** | `reviewer/MEMORY.md:117` |
| `feedback_measure_with_detectors_own_regex` | 1.936 | 1.936 | **SAME** | `:115` |
| `feedback_refuse_coordinator_suggested_verdict` | 2.439 | 2.439 | **SAME** | `:118` |
| `feedback_stale_anchor_born_dead` | 1.918 | 1.918 | **SAME** | `:114` |
| `feedback_unit_mismatch_keep_both` | 2.057 | 2.057 | **SAME** | `:116` |
| `proxy_predicate_blind_measure` | 2.136 | 2.136 | **SAME** | `:119` |
| `ranking_claim_needs_two_denominators` | 2.054 | 2.054 | **SAME** | `:120` |

⇒ **7/7 BYTE-EXACT + MD5 trùng** (copy-nguyên đúng như H2 yêu cầu, **KHÔNG viết lại**) + **7/7 có dòng index THẬT**.
🔴 **Tao chặn bẫy tự-trích-dẫn:** `grep -rl` ra `cited=1` mỗi tệp — nếu con-trỏ đó là **chính nó** thì ĐẠT-ảo. Truy tên file citer: **cả 7 đều là `reviewer/MEMORY.md`**, không tệp nào tự-trích. ⇒ **B-04 ĐẠT**; nhánh (b) của Placement-FAIL mà H2 báo **nay đã ĐÓNG THẬT**.

### 2.4 Các claim số còn lại của H2 (1 dòng/claim)

| # | Claim | Phép tao chạy | Verdict |
|---|---|---|---|
| B-05 | **698.109 B** tổng nợ | **stat từ ĐĨA 33 đường dẫn** (không cộng cột của H2): 513.956 + 17.728 + 166.425 = **698.109**, `N-FILE=33`, 0 path thiếu | **ĐẠT** (khớp tuyệt đối) |
| B-06 | 7 lane S185 = **166.425 B** | stat 7 tệp `sub-opus-lane*.md` = **166.425** | **ĐẠT** |
| B-07 | `lane-memory-proposals/` = **17.728 B** | stat 8 tệp (7 + `MEMORY.md`) = **17.728** | **ĐẠT** |
| B-08 | Corruption **24 hit / 11 file**, khớp baseline S172 | **thách-CLEAN A** — xem §4.1 | **ĐẠT** |
| B-09 | Dương-giả **19/45 = 42%** | cộng bội-số từng dòng §2.2: 3+4+3+1+6+1+1 = **19** ✓; 19/45 = 42,2% ✓ | **ĐẠT** |
| B-10 | Fidelity `74.070` = 26.461+23.177+24.432 | số học: **74.070** ✓ (cộng lại đúng) | **ĐẠT** |
| B-11 | 7 lane "KHÔNG CÓ NHÀ" (Placement FAIL nhánh a) | nay **7/7 đã có nhà**: lane1+2+7→`implementer-backend:108` · lane3→`ctx-curator:26` · lane4→`lead-stale-auditor:70` · lane5→`investigator-codebase:65` · lane6→`harvest-curator:89` | **ĐẠT** (claim đúng lúc đo; lead đã đóng) |
| B-12 | Placement FAIL 2 nhánh (a)+(b) | cả 2 nhánh **ĐÓNG THẬT** (B-04 + B-11) | **ĐẠT** |

🟢 **Điểm sáng đáng ghi (không phải flag):** lead **lệch có khai** ở lane4 — H2 đề-xuất `ctx-curator`, lead đặt `lead-stale-auditor` và **ghi lý-do ngay trong entry**: *"chỉnh khỏi phương-án (a): flip-stale = nghề vai này, KHÔNG phải ctx-curator"*. Đúng khuôn propose-only: H2 đề-xuất, lead quyết + **khai chỗ lệch**, không lặng lẽ đổi.

---

## §3 — Falsify-log (nghĩa-vụ (iii)) — **6 phép: 4 HELD / 2 BROKE (cả 2 BROKE vào CHÍNH TAO)**

| # | Phép thử phủ-định | Kết |
|---|---|---|
| **F-A** | *"H1 bịa roster 28 — `VALID_ROLES` chỉ có 20 vai"* | 🔴 **BROKE VÀO CHÍNH TAO.** Thước tao cắt cửa-sổ 3000 ký-tự; khối dài hơn ⇒ mảng cụt sau `ring4-audit`. Neo lại `^const…^]` ⇒ **28, sym-diff rỗng**. H1 **HELD**. |
| **F-B** | *"F-2 sai — máy CÓ cửa gọi, H1 quét hẹp nên không thấy"* | **HELD.** Quét `loi-hua-may-scan` **toàn repo** + hook + `settings.json` = **0 cửa**; 3 site H1 bỏ sót đều **không phải cửa** (doctrine-name · entry harvest · sổ method). Control-dương `naming-scan`=9 file có cửa `(k-ter)` thật ⇒ thước sống. |
| **F-C** | *"698.109 B là số cộng-tay, sẽ lệch như ca +402 B @S182"* | **HELD.** Cộng từ **ĐĨA** (33 file) = **698.109**, khớp từng byte. Phá không được. |
| **F-D** | *"tự-compact của H1 = MẤT CHỮ (S153 rơi 5.944 ký-tự)"* | 🔴 **BROKE VÀO CHÍNH TAO lần 2.** Bộ tách khối của tao gom nhầm **phần khung file** (`## Role baseline` · `## Anti-patterns` · `## Method distilled`) vào "khối S153". Tách lại đúng ranh entry ⇒ **10/10 entry verbatim, MẤT = 0**. |
| **F-E** | *"corruption 24/11 là số của perl; engine khác sẽ ra khác"* | **HELD.** Engine **python byte-count** độc lập ⇒ **24 hit / 11 file**, trùng khít + trùng baseline S172. |
| **F-F** | *"7 tệp `cited=1` là TỰ-TRÍCH ⇒ ĐẠT-ảo"* | **HELD.** Truy tên file citer: **7/7 là `reviewer/MEMORY.md`** (dòng index `:114-120`), 0 ca tự-trích. |

🔴 **Tự khai: 2/6 phép phá đầu tiên đều là dương-giả của CHÍNH THƯỚC TAO** — nếu nộp thẳng thì tao **tố oan H1 hai lần** (một lần "bịa roster", một lần "compact mất chữ"). Cả 2 đều cùng LỚP **thước tự cắt tập rồi báo cáo phần còn lại như toàn-thể** — y hệt lỗi `head -120` mà H2 tự bắt ở §1.51 phiên này. Đời 5 của mạch hỏng-thước của tao (`grep -c||`S153 → `grep -v Snapshot`S162/S180 → non-greedy S168 → `--since` S173 → **cửa-sổ-cắt S185**).

---

## §4 — thách-CLEAN BẮT BUỘC (nghĩa-vụ (iv)) — 3 mặt

### 4.1 🟢 mặt A — H2 báo `Corruption ✅ PASS` ⇒ **CHỊU**
Không tin trần, đo lại bằng **lens sạch**: engine **python** (H2 dùng **perl**), đếm **LẦN** (`b.count`) trên toàn `.claude/**/*.md` ⇒ **24 hit / 11 file** — trùng H2 và trùng **baseline S172**.
- **Mở 1 mẫu** (`cicd-monitor/archive/2026-06.md` offset 42.715): byte hỏng nằm trong câu *"console showed `C�ng` = sqlcmd codepage mangle of `ô`, **NOT data corruption**"* ⇒ đúng lớp **use⟂mention**: tài-liệu đang **trích** một mangle làm bằng-chứng. Không phải hỏng mới.
- **Control-dương TAO TỰ DỰNG** (không mượn của H2): 2 tệp tạm — `pos.md` chứa U+FFFD → **hits=1** · `neg.md` sạch → **hits=0** ⇒ **thước CÓ RĂNG**, số 24 không phải 0-hit-giả.
- 🔸 Đơn-vị đúng: H2 đếm **LẦN** (24), khớp baseline. **Không tái diễn** lỗi lẫn DÒNG(22)⟂LẦN(24) mà chính H2 mắc @S168.

### 4.2 🟡 mặt B — H1 khen `PASS mẫu mực` (header `tien-kiem-cua.ps1`) ⇒ **CHỊU phần THỰC-CHẤT, THỦNG phần TÁI-LẬP** → **R-1**
Mở đúng 1 claim rồi đo lại **4/4 vế**:

| vế | H1/header khai | tao đo | kết |
|---|---|---|---|
| `OVERDUE:jump` | 0 | `grep -c … scripts/nhip-no-probe.ps1` = **0** | ✓ |
| control `OVERDUE` | 6 | `grep -c … scripts/nhip-no-probe.ps1` = **6** | ✓ |
| `harness-11-engine.md:587` | khớp nguyên văn vế soak | dòng **587** = *"…**+ rider-jump W2 đã soak INFORM ≥1 phiên** (❌ **chưa**…)"* — khớp **đúng số dòng** | ✓ |
| `_context-s-12.md:55` | P1 = PA-2 | dòng **55** = *"**P1 = PA-2** hai mã thoát trong MỘT máy"* | ✓ |

⇒ **thực-chất ĐẠT 4/4** — khen "mẫu mực" là **có căn cứ** (header còn cố ý **không trích lại câu cũ** để khỏi đẻ hit grep sống mãi = đúng bài citation-trap).
🔴 **NHƯNG THỦNG ở chỗ tái-lập — R-1 (LOW, riêng của tao):** H1 chép lệnh vào báo-cáo **RỤNG MẤT TOÁN-HẠNG tệp**: `grep -c "OVERDUE:jump"` = 0 · `grep -c "OVERDUE"` = 6. Chạy **đúng như H1 in ra** (repo-wide) cho **14** và **282**, không phải 0 và 6. Phạm-vi `scripts/nhip-no-probe.ps1` chỉ tồn tại **trong header `.ps1`**, không có trong báo-cáo H1. ⇒ người kiểm lại theo chữ H1 sẽ tưởng **H1 bịa số**. Vá 1 chữ: chép cả tên tệp vào lệnh.

### 4.3 🟢 mặt C — kiểm-của-kiểm: tự-compact diary `tooling-auditor` (31.696 → 14.852) ⇒ **KHÔNG MẤT CHỮ** → nhưng **R-2**
Lấy bản **TRƯỚC compact** từ git (`7b1ac2cd`, blob **31.696 B** — đúng số H1 khai) rồi so **từng entry**:

| kết | số |
|---|---|
| entry trước compact | **10** |
| giữ ở L1 `MEMORY.md` **verbatim** | **7** (S185·S181·S179·S173·S180·S182·S169) |
| chuyển `archive/2026-08.md` **verbatim** | **3** (S168 1.115 · S172 1.497 · S153 1.624 ký-tự — **char-identical từng khối**) |
| 🔴 **MẤT CHỮ** | **0** |

⇒ **"move-not-cut" là THẬT**, không phải lời khai. (Spot 2 khối theo yêu-cầu = S168 + S172: **identical, delta 0**; tao làm luôn cả 10.) Archive `2026-08.md` mới **sinh ở lượt này** (trước đó chưa tồn tại) — 17.406 B.
🔴 **R-2 (LOW):** manifest tự-khai của archive **lệch chính danh-sách nó liệt**: `archive/2026-08.md:4` ghi *"Gom **10** khoi: S168 - S172 - S153 - FIFO 2026-06/07 - S123/S125 - S126/S140/S143-pointer - S150 - S151 - S152 - S159 - S162"* — **liệt 11 mục, khai 10**. `MEMORY.md:15` ghi **11** (đúng). ⇒ **cùng LỚP với B-01 của H2** (bảng tổng dưới-đếm chính phần liệt-kê của mình) — 2 con-đo **giẫm cùng một lỗi trong cùng một phiên**.

---

## §5 — TỔNG KẾT

### 5.1 Bảng verdict (KHÔNG gộp — mọi TRƯỢT hiện riêng, chống meta-count blind-spot S119)

| Con | ĐẠT | TRƯỢT |
|---|---:|---|
| **H1** `tooling-auditor` | **18** | **1** — R-1 (§4.2, lệnh tái-lập rụng toán-hạng) |
| **H2** `harvest-curator` | **11** | **1** — B-01 (§2.1, "16 entry" trong khi §3 của chính nó = **17**) |
| **compact-audit** (kiểm-của-kiểm) | **1** | **1** — R-2 (§4.3, manifest "10" ⟂ liệt 11) |
| **TỔNG** | **30** | **3** |

### 5.2 Ba TRƯỢT — đều là **under-count roll-up**, không cái nào ở số load-bearing
Cả 3 cùng một hình-dạng: **bảng tổng-kết đếm HỤT chính phần liệt-kê của mình**, hoặc **lệnh in ra hẹp hơn lệnh đã chạy**. Không có TRƯỢT nào làm sai kết-luận:
- B-01 **không mất entry nào** vì lead thi-hành theo §3 (17 mục), không theo con số §4.3.
- R-1 **không sai sự-thật**, chỉ không tái-lập được theo chữ.
- R-2 **không mất khối nào** (0 mất chữ, đã đo).

### 5.3 Time-drift — 1 ca, **KHÔNG chấm TRƯỢT** (bài E1@S150: hỏi *"sai, hay ĐÃ-ĐƯỢC-XỬ?"*)
H1 F-6 báo `run.md` **tick 0/11**. Tao đo lúc này: **8 `[x]` / 3 `[ ]`**. **Không phải H1 sai** — H1 đo @01:51, lead tick sau đó (đúng theo đề-xuất F-6). Chấm TRƯỢT ở đây = **phạt con-đo vì nó đúng VÀ được nghe theo**. ⇒ **A-15 ĐẠT tại pin của con-đo.**

### 5.4 Số TỰ TÁI-DỰNG — **7 số, 6 khớp / 1 lệch**
roster **28** (3 engine + so TẬP `SET_IDENTICAL`) · skill-matrix **26**, thiếu **đúng 2** đúng chiều · **698.109 B** từ đĩa (33 file) · corruption **24/11** engine khác · **17/17** entry hạ cánh verbatim · **7/7** tệp byte-exact + index thật · **10/10** entry compact không mất chữ.
🔴 **1 LỆCH = B-01:** H2 khai **16**, tao đếm **17** — in cả 2 số theo luật.

### 5.5 Đề-xuất cho lead (propose-only — G-015)
1. **R-1:** thêm tên tệp vào 2 lệnh trong hàng BÁC của H1 (`… scripts/nhip-no-probe.ps1`) — 1 chữ, chặn tố-oan kỳ sau.
2. **R-2:** sửa `archive/2026-08.md:4` **"10 khoi" → "11 khoi"** (con số, KHÔNG đụng danh-sách).
3. **B-01:** sửa `sub-harvest-curator.md §4.3` **16 → 17** — 🔸 nhưng đây là **artifact ĐÃ ĐÓNG của phiên**; nếu doctrine cấm sửa bản đã chốt thì **ghi addendum**, đừng sơn đè (luật ảnh-chụp S181).
4. **F-2 (HIGH, của H1):** vẫn **MỞ** — máy `loi-hua-may-scan.ps1` chưa có cửa; tao xác nhận **0 cửa toàn repo**. Rẻ nhất = 1 dòng vào `(k-ter)`.
5. 🔸 `reviewer/MEMORY.md` nay **31.341 B** (H2 đo 22.430 lúc đó) — vượt trần mềm 17,1 KB **xa hơn** sau khi APPEND 6 entry; `archive/2026-08.md` của `reviewer` **mtime 08-08**, chưa nhận verbatim lượt này. Đề-xuất curate của H2 (§4.4) **chưa thi-hành** — NÊU, không tự làm.

### 5.6 Ranh-trục đã giữ
KHÔNG soi trio-memory (`harness-audit`) · KHÔNG soi LEAD-surface (H24) · KHÔNG chấm code-diff (`reviewer`) · **KHÔNG tự harvest** (chỉ KIỂM H2, mọi thao-tác harvest = NÊU). no-self-exempt: tao ≠ H1/H2. Vai **propose-only**, `Bash` còn mở ⇒ **KHÔNG** tuyên "read-only enforced"; containment thật = lead single-writer + `git diff`. **0 Write/Edit ngoài tệp này.**

---

**RING1-CHOT: `30Đ / 3T` trên 33 claim** · falsify **6 (4 HELD / 2 BROKE — cả 2 vào chính tao)** · tái-dựng **7 số (6 khớp / 1 lệch)** · thách-CLEAN **3 mặt: A chịu · B chịu-thực-chất/thủng-tái-lập · C chịu (0 mất chữ)**.

**END sub-ring1-audit S185 @close.**



