Files
solution-erp/.claude/workflows/runs/2026-08-09-S185-bookend-close/sub-ring1-audit.md
2026-08-10 02:12:02 +07:00

224 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`**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****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.**