# sub-harvest-curator — V1 @open S182 (H2 harvest-integrity 5 trục)

**VERDICT: `HARVEST-CURATOR: GATE-FAIL — 7 finding`**
Scope: HEAD `936d1aed`, @open S182 (L13-w1). Read-only, propose-only — 0 Write/Edit.

> ⚠️ **#53 datum:** first-return = garble (*"Now the S169/S170 block. Let me verify the sleep-batch claim fresh since it swings ~237 KB."*). Recover bằng SendMessage-resume, path-2. **Mất 0 byte.**

---

## F-01 [Coverage] `runs/2026-08-07-S180-adap-upgrade-pack-phased/` — nợ **MỚI 229.823 B / 5 lượt-vai `reviewer`**, KHÔNG có trong HANDOFF slot 71

Vai `reviewer` đẻ 9 sub-file @S180; memory chỉ có 5 mục. Mồ côi: `sub-n3-lane-c-gd34.md` 72.156 + `sub-n3-lane-d-gd56.md` 43.795 + `sub-n3-lane-e-benh.md` 38.531 + `sub-n3-lane-f-maytay.md` 52.923 + `sub-review-n2-S180.md` 22.418 = **229.823 B**.

**Chứng bằng NỘI DUNG (không đo tên):** `grep -ric` trên `agent-memory/reviewer/` → `"bẫy A1"`=0 · `"sổ-3-khối"`=0 · `"gần xong nhất"`=0 · `"13,0/20"`=0 · `"3,0/17"`=0 · `"KHÔNG ÁP DỤNG có khai"`=0 · `"đóng-hụt"`=0 · `"máy ⟂ tay"`=0 · `"triết lý thứ hai"`=0 · `"F-10"`=0. **Control dương cùng lệnh:** `"S180"`=22, `"reviewer"`=108 ⇒ thước sống, 0-hit là 0 THẬT.

🔴 **Bẫy đã tránh:** `"lane C"`=7 / `"lane D"`=3 / `"lane E"`=2 hit — nhưng đọc ra thì đó là **trích dẫn hạng-hai bên trong mục N4** (`:71` · `:73`), không phải bài học của chính lane. **Đo TÊN ⇒ tưởng 3/5 đã về; đo RUỘT ⇒ 0/5.**

## F-02 [Coverage] `runs/2026-08-01-S168-bookend-close/` — nợ **82.383 B / 3 vai**, ĐỨNG YÊN từ S173

`sub-harvest-curator-close-S168.md` 29.299 + `sub-lead-gap-close-S168.md` 29.820 + `sub-lead-stale-close-S168.md` 23.264 = **82.383 B** (`stat -c%s`).
0 vai nào có mục mở đầu S168 (`grep -n "^[-*#]{1,4}\s*\**S168\b"` = **0 dòng**), trong khi cùng lệnh trả 1 dòng cho mỗi vai `ctx-audit` `ring1-audit` `ring2-audit` `tooling-auditor` `harness-audit` `harness-eval` `harness-refine` `cicd-monitor` (**control dương 8 vai**). 7/10 vai đã đóng, đúng 3 vai này thủng.

🔴 Con số **82.383 khớp TỪNG BYTE** với số S173 ghi 2 phiên trước ⇒ **hai phiên có tuyên bố uỷ-quyền-gom mà 0 byte được gom.**

## F-03 [Coverage] `runs/2026-08-01-S169-bookend-open/` — nợ **264.451 B / 10 lượt-vai** — khối LỚN NHẤT, HANDOFF slot 71 **HOÀN TOÀN VẮNG**

`harness-audit-return.md` 36.119 + `harness-eval-return.md` 24.015 + `harness-refine-return.md` 26.596 + `sub-harvest-curator-open-S169.md` 26.137 + `sub-lead-gap-open-S169.md` 18.318 + `sub-lead-stale-open-S169.md` 22.503 + `sub-ring1-audit-open-S169.md` 34.806 + `sub-ring2-audit-open-S169.md` 32.197 + `sub-tooling-auditor-open-S169.md` 23.236 = 243.927 **+ `sub-ring4-audit-sleep-S170.md` 20.122** = **264.451 B**.

**Đã về nhà, KHÔNG tính nợ:** `sub-ctx-audit-open-S169.md` 34.793 · `sub-reviewer-sleep-fidelity-S170.md` 38.167.

## F-04 [Fidelity] 🔴 TỰ BÁC con số của CHÍNH VAI NÀY — sleep-batch **237.251 B KHÔNG phải nợ**; nhưng "14/16" trong sổ cũng SAI, đo tươi ra **16/17**

`sub-harvest-curator-sleep-batchA-S170.md` 113.797 + `batchB` 123.454 = 237.251 B là **bản nháp gia công**, không phải delta cần gom.
Đếm đích thật: `grep -h "^## "` → **17 đích gist**. Kiểm tồn tại: **16 LANDED** (vd `cicd-monitor/archive/2026-05-runs.gist.md` 31.779 · `test-specialist/archive/baseline-history.gist.md` 28.437 · `implementer-frontend/archive/2026-H2.gist.md` 30.144); mtime đích **08-03 10:51/11:03** > mtime nháp **09:51/09:52** ⇒ nháp đã thi hành.

**1 MISSING:** `.claude/agent-memory/cicd-monitor/archive/2026-08.gist.md` **không tồn tại** (thư mục có `2026-08.md` 5.912 B mà **không có** `.gist.md` anh em) ⇒ nợ THẬT còn lại của khối S170, đúng 1 đích.

🔴 **Khai giới hạn thước:** vai đo **tồn-tại + thứ-tự mtime**, KHÔNG đo **byte-exact**. Sổ ghi "14/16 byte-exact"; vai ra "16/17 tồn-tại". Hai phép đo **KHÁC CÂU HỎI** ⇒ **không chọn bừa một số**. Mẫu-số 16 trong sổ **SAI** (đích thật 17, đếm được). Tử-số 14 vs 16 thì thước **không đủ mạnh để bác** ⇒ **`CHƯA ĐO`** cho vế byte-exact, cần md5.

## F-05 [Coverage] `S171-khkk-ui-mirror-pe` = **ĐÃ ĐÓNG** — HANDOFF slot 71 đang mang **NỢ MA 143.682 B**

4 vai / 6 tệp đều có mục thật: `implementer-backend/MEMORY.md:9` · `implementer-frontend/MEMORY.md:3` · `investigator-codebase/MEMORY.md:14` + `archive/2026-08-curate-s180.md:15` · `reviewer/archive/2026-08.md:36` — mục sau ghi thẳng *"cả 3 CHẾT hết-giới-hạn nhưng ĐĨA CỨU 74.070 B"*, và 26.461+23.177+24.432 = **74.070 khớp từng byte**. Cộng 11.650+13.132+44.830 ⇒ **143.682 B** đúng bằng số HANDOFF đang ghi là nợ.

**Cùng lớp, cũng đã đóng:** S172 10/10 · S173 10/10 · S174 · S176 · S181 (9 vai). `S159-bookend-open` KHÔNG tính nợ (theo lệnh).

## F-06 [Placement] HANDOFF nói **8** dir rỗng mis-land class-S54 — đo tươi còn **0**

`find . -type d -empty -not -path "./.git/*"` → **5 dòng, 0 dòng class-S54**: `.vs/sd` · 2× `node_modules/.vite-temp` · 2× `obj/{Debug,Release}/net10.0/staticwebassets` — toàn rác IDE/build.
7 dir dưới `runs/2026-08-01-S169-bookend-open/` và `fe-user/.claude` mà HANDOFF liệt: **không còn**.
**Kiểm chéo lệnh khác chiều:** `find . -type d -name ".claude" | grep -v "^./.claude$"` → **rỗng** ⇒ 0 stray lồng.
⇒ Trục Placement **PASS**, nhưng số trong HANDOFF là **neo thối cần lật**.

## F-07 [Completeness] **5 vai** có thư mục memory mà chưa từng có delta của chính mình

- 🔴 **`ring4-audit` THỦNG CÓ BẰNG CHỨNG:** `MEMORY.md` 2.315 B, mtime **2026-07-26**, `grep -c "S170"`=0 **dù** `sub-ring4-audit-sleep-S170.md` 20.122 B nằm trên đĩa ⇒ **vai chạy thật, sổ đóng băng 12 ngày**.
- **LOW (không kết luận thủng):** `database-agent` 9.038 B mtime 07-29 · `investigator-api` 9.021 B mtime **07-25** · `office-document` 3.323 B mtime **07-10** — 0 hit S168→S181, **nhưng có thể đơn giản là không được spawn**. Control dương: cùng lệnh trả 8 hit S168 cho `harvest-curator`.
- ✅ **`score-counter` 2.075 B / `score-count-auditor` 2.033 B nay ĐÃ CÓ mục S181** (mtime 08-07 23:10) ⇒ **FLAG F-02 của S181 coi như ĐÓNG** — cần lead xác nhận dòng seed cũ *"CHƯA CHẠY LẦN NÀO"* đã bị **thay** chứ không phải **nằm cạnh**.

---

## Mục bắt buộc — chốt số

**1. Orphan run-folder (DUAL-ACCEPT `tiep.md §0` verbatim):** quét **89 thư mục**, **86 có `run.md`** (mẫu số thật). Kết quả **1 dòng ORPHAN duy nhất = `runs/2026-08-07-S182-bookend-open/`** — chính folder phiên này, mở 23:43, mới có `run.md` 652 B ⇒ **ĐANG CHẠY, không phải orphan thật**.
🔴 **Cảnh báo:** S182 đóng mà không đẻ `*-synthesis.md` ⇒ thành orphan thật y hệt cách 4 món S169-S172 sinh ra.
3 thư mục không có `run.md` ⇒ ngoài định nghĩa: `S117-pe-approve-minmax-range` · `S117-pe-luyke-finalize` (spec-only) · `S144-bootstrap` (có `bootstrap-synthesis.md`).

**2. Nợ harvest đo TƯƠI — tổng 576.657 B / 18 lượt-vai:**

| khối | byte | vai | so với HANDOFF slot 71 |
|---|---|---|---|
| S168-bookend-close | **82.383** | 3 | slot ghi 162.916 / 9 vai ⇒ **quá cao** (6 vai đã gom @S172) |
| S169-bookend-open (+ring4 S170) | **264.451** | 10 | 🔴 **HOÀN TOÀN VẮNG** |
| S180-adap 5 lượt `reviewer` | **229.823** | 5 | 🔴 **MỚI, chưa ai ghi** |
| `cicd-monitor/archive/2026-08.gist.md` | 1 đích | — | dư từ khối S170 |
| **TỔNG** | **576.657 B** | **18** | slot ghi ~306 KB ⇒ **thiếu gần nửa** |
| S171-khkk-ui-mirror-pe | **0** | 0 | slot ghi 143.682 = **NỢ MA** (F-05) |
| sleep-batch A+B 237.251 B | **0** | — | **KHÔNG phải nợ** (F-04) |

`a2bbcb9` / `b5799fc` mở từ S162: **CHƯA ĐO** (chưa chạm `git log -S`, không lấp bằng trí nhớ).

**3. Stray / empty-dir:** **5 dir rỗng, 0 class-S54; 0 stray `.claude` lồng.** Số 8 trong HANDOFF đã chết.

**4. Diary 0-delta:** `ring4-audit` thủng có bằng chứng · 3 vai LOW chưa kết luận · nhóm vai mới còn lại **đã có delta** (`ctx-curator` S175/S177 · `ctx-verifier` S171-S181 · `ctx-audit` S168-S173 · 3 vai style S179 ×2 · 2 vai score S181).

**5. Corruption: `CHƯA ĐO`.** Không chạy census U+FFFD ⇒ **KHÔNG tuyên "0 corruption"**. Baseline gần nhất = 24 hit / 11 file (S172). Bẫy đơn-vị S180 F-05 (22 **dòng** ⟂ 24 **lần**) — kỳ sau phải khai đơn-vị + control dương trước khi đọc số.

## Đề xuất cho lead (propose-only, idempotent)

1. **Lật slot 71 HANDOFF:** bỏ S171 (nợ ma) · sửa S168 xuống 82.383/3 vai · **thêm S169 264.451/10 vai + S180-reviewer 229.823/5 vai** · sửa "8 dir rỗng" → 0.
2. **Khi gom:** lấy danh sách từ **`ls runs/<id>/` (GỐC)**, tuyệt đối không từ bảng dẫn xuất — đúng cơ chế đã làm hụt 2 sổ H24 @S172 (53.084 B khớp từng byte).
3. **Trước khi đóng S182:** đẻ `*-synthesis.md` khác 0-byte trong run-folder này, nếu không nó thành **orphan thứ 5 cùng lớp**.
