# sub-harvest-S152 — H2 harvest-curator RE-REPORT @open (bookend S152, 2026-07-25 tối)

> INFORM-only · propose-only · read-only ngoài file này. Mỗi SỐ kèm LỆNH sinh ra nó.
> APPEND TRONG LÚC LÀM (anti-#53 / AS-17 skeleton-ruột-rỗng).

---

## 1. Orphan-run scan C5 (dual-accept dạng-1 flat + dạng-2 legacy `harvest/`)

**LỆNH (universe = MỌI dir, KHÔNG lọc run.md — m#19 S151: khai tiêu-chí lọc):**
```bash
cd .claude/workflows/runs
for d in */ ; do d="${d%/}"; n=$(find "$d" -name "*-synthesis.md" -size +0c | wc -l);
  if [ "$n" -eq 0 ]; then echo "NO-SYNTH: $d [run.md=$([ -f "$d/run.md" ] && echo yes || echo no)] files=$(find "$d" -type f | wc -l)"; fi; done
ls -1d */ | wc -l    # 55
```

**Kết quả — 55 dir tổng · 3 dir KHÔNG có `*-synthesis.md` non-0-byte:**

| dir | run.md | files | phán |
|---|---|---|---|
| `2026-07-14-S117-pe-approve-minmax-range` | no | 1 (spec 4.202B) | **by-design spec-only** — không phải run, không orphan (baseline S132 đã ghi "2 = spec-only S117") |
| `2026-07-14-S117-pe-luyke-finalize` | no | 1 (spec 5.828B) | **by-design spec-only** — nt |
| `2026-07-25-S152-h24-open-bookend` | yes | 5 (đang tăng) | **IN-PROGRESS** — chính wave đang chạy, KHÔNG flag (nhiệm-vụ §4) |

**⇒ ORPHAN THẬT = 0.** Khớp claim máy `run-chua-gom 0` (`machine-baseline.md`) — verify ĐỘC-LẬP, không đọc số máy trước khi đo.

### 1b. Nợ S151 ring1: `2026-07-22-S144-bootstrap` — ĐÓNG (không phải orphan nội-dung)

**LỆNH:** `find 2026-07-22-S144-bootstrap -type f -printf "%s\t%p\n" | sort -n`
```
1239   bootstrap-synthesis.md
16732  sub-tooling-auditor-1.md
18326  sub-harvest-curator-1.md
```
→ CÓ synthesis non-0-byte ⇒ **đã gom, KHÔNG orphan**. Cái ring1 bắt @S151 là **lỗi MẪU-SỐ của tao** (universe lọc `run.md`-only ⇒ 3 dir không-run.md rơi ngoài lưới: 52+3=55), KHÔNG phải folder thiếu vết. Phiên này đo bằng universe ĐẦY-ĐỦ 55 ⇒ lỗ đã bịt. Cái còn thiếu ở S144-bootstrap chỉ là `run.md` (dir sinh từ đường bootstrap, không qua scaffold) — **nit, không phải orphan**.

---

## 2. Delta mồ-côi chưa-APPEND — vai chạy @S151 vs diary

### 2a. Roster vai CHẠY @S151 (đếm từ ĐĨA, không từ brief — m#17 provenance)

**LỆNH:** `ls -1 runs/2026-07-25-S151-h24-open-bookend/ runs/2026-07-25-S151-trio-memory/`
→ 9 vai distinct: `harvest-curator` · `lead-gap-auditor` · `lead-stale-auditor` · `ring1-audit` · `ring2-audit` · `tooling-auditor` · `harness-eval` · `harness-refine` · `harness-audit`

**LỆNH (20 role-dir, m#11 guard `find -type d` KHÔNG `cut -f3`):**
```bash
cd .claude/agent-memory
find . -mindepth 1 -maxdepth 1 -type d | wc -l   # 20 (2 file root .mfe-state.json + memory-budget.json KHÔNG tính)
for d in $(find . -mindepth 1 -maxdepth 1 -type d -printf "%f\n"|sort); do echo "$d | S151-hits=$(grep -c S151 $d/MEMORY.md)"; done
```
**Kết quả: 9/9 vai-đã-chạy CÓ mục `## S151` THẬT** (heading, không phải mention lướt) — hits: lead-gap 3 · lead-stale 3 · ring1 2 · ring2 2 · tooling 2 · harvest 2 · h-eval 2 · h-refine 1 · h-audit 1. 11 vai không chạy = 0 hit ⇒ **không nợ** (không-spawn ≠ mồ-côi).
⇒ **GAP-3 lớp VAI = 0.** M9-append @closeout S151 phủ đủ 9 vai.

### 2b. 🔴 FLAG-1 — `harvest-delta-orphan` — SEV **HIGH**: TRỌN lượt DEEP @close KHÔNG vào diary vai nào

Lượt **DEEP @close S151** ("trả nợ dải JUMP", owner #21) chạy 3 lane THẬT, mỗi lane là một round audit đầy-đủ có FLAG riêng:

| deep-file | bytes | mtime | nội-dung |
|---|---|---|---|
| `sub-lead-stale-deep-S151.md` | 22.056B | **19:46:35** | 4 FLAG (`view-stale-status`/`view-residual-asym`×2/`view-stale-header`) + truy-thu 5 FLAG @open + khai-giới-hạn-coverage |
| `sub-lead-gap-deep-S151.md` | 22.157B | **19:48:49** | FLAG-1 `gap-decision-sunk` MED-HIGH · FLAG-2 `gap-carry-aged` MED · 3 CLEAN-kèm-lệnh · `gap-underfill` bất-khả-đo · số đo cho `#21` |
| `sub-ring2-deep-S151.md` | 22.843B | **20:09:56** | verdict 6 FLAG cặp H24 + tái-dựng counter + FALSIFY-LOG 8 phép (3 bác chính nó) + thách-CLEAN |

**Chứng-cứ 4 lớp (mỗi cái 1 lệnh):**
1. **Thời-gian bất-khả (m#3 mtime-chain / m#12 mẫu-số-có-PHÚT):** `stat -c "%y %n"` → **cả 3 diary mtime = `19:29:03`** (batch, cùng giây) < mtime 3 deep-file (19:46 / 19:48 / 20:09) ⇒ entry viết XONG **17–41 phút TRƯỚC KHI** deep-finding tồn tại.
2. **0 cite:** `grep -rn "deep-S151" .claude/agent-memory/` = **0** · `grep -rn "22\.157\|22\.056\|22\.843"` = **0** (evidence-path 3 deep-file không xuất hiện ở đâu trong 20 diary).
3. **0 token trong khối:** trong khối `## S151` của 3 vai: `grep -ci deep` = **0 / 0 / 0** (2 hit "deep" ở lead-gap + 1 ở lead-stale đều thuộc khối **S143** deep cũ).
4. **Cùng commit, khác thời-điểm-sinh (bằng chứng KHÔNG-phải-chưa-kịp):** `git show --stat 1b85713` (**20:13:25**) chứa ĐỒNG THỜI 3 deep-file (**+214/+171/+219 = 604 dòng**) VÀ 9 diary-append (chỉ **+4/+5 dòng** mỗi cái). Tức lúc commit, deep-file đã nằm trên đĩa **≥3 phút** (ring2-deep 20:09 → commit 20:13) mà diary KHÔNG được append lượt 2. `git log -1` từng diary → cả 3 dừng ở `1b85713`, không có commit sau.

**Phán:** ~67KB / 604 dòng finding của lượt DEEP hiện **CHỈ sống ở run-folder**, per-role diary **không sở-hữu** ⇒ đúng **GAP-3 class** ("knowledge sống CHỈ ở run-folder ⇒ lớp không ai sở-hữu tới khi seed" — E-011/S132, tái-diễn lần **6**: S123/S125→S132 · S146→S148 · S149-ring2 · S150-ring1 · **S151-deep**).
**Vì sao nguy:** khác GAP-3 các lần trước (vai CHƯA có nhà), lần này vai **CÓ nhà + CÓ entry S151** ⇒ đếm-theo-vai cho **9/9 PASS**, trông y hệt phủ-hết. Lỗ nằm ở **lớp LƯỢT (round) trong cùng session**, mà thước hiện tại chỉ đếm lớp VAI ⇒ **vắng-mặt trông giống ổn**.
**PROPOSE (em-main quyết, tao KHÔNG ghi):** append lượt-2 vào 3 diary `lead-gap-auditor` / `lead-stale-auditor` / `ring2-audit` dạng `## S151-deep (@close)` distill từ 3 deep-file — **idempotent-safe**: đã verify 0 cite/0 token ⇒ APPEND không double. Kèm sửa THƯỚC: tiêu-chí coverage đổi từ "vai có mục Sxxx" → **"mỗi sub-file trong run-folder truy được về ≥1 dòng diary"** (file-level, không role-level).

---

## 3. Skeleton / 0-byte check (#53 + AS-17 `skeleton-ruột-rỗng`)

**LỆNH:**
```bash
find runs/2026-07-25-S151-h24-open-bookend runs/2026-07-25-S151-trio-memory \
     runs/2026-07-25-S152-h24-open-bookend -type f -size -400c -printf "%s\t%p\n" | sort -n
find .claude/workflows/runs .claude/agent-memory -type f -size 0c -printf "%s\t%p\n"
find .claude/agent-memory -name MEMORY.md -printf "%s\t%p\n" | sort -n | head -5
```

- **(A) 3 folder S151×2 + S152: 0 file < 400B.** Nhỏ nhất trong S151-bookend = `run.md` 1.861B; trio = `run.md` 1.947B / `trio-synthesis.md` 1.971B. ⇒ **0 skeleton-ruột-rỗng**, không có ca AS-17 nào phiên trước.
- **(B) 0-byte toàn `runs/` + `agent-memory/`: 10 hit, TẤT CẢ là `.gitkeep`** trong 5 folder legacy dạng-2 `2026-06-18-h10-*` / `h910-*` (`sub-md/.gitkeep` + `harvest/.gitkeep`) ⇒ **placeholder by-design, KHÔNG phải truncate**. 0 file nội-dung 0-byte (gotcha #53 closeout-truncate: sạch).
- **(C) 5 diary nhỏ nhất — m#19 "file nhỏ = NGHI-VẤN, đọc RUỘT mới phán":** `ring4-audit` 1.047B · `harness-audit` 2.060B · `harness-refine` 2.131B · `harness-eval` 2.149B · `office-document` 3.323B.
  - **`ring4-audit` 1.047B — ĐỌC FULL: CÓ RUỘT, KHÔNG skeleton.** Có role-def + bất-biến kiểm ("gist ADDITIVE, KHÔNG đè `<period>.md` gốc") + fail-safe ("lượt nén không chạy ⇒ NO-OP im-lặng, **CẤM ĐẠT-ảo**") + provenance seed đúng ("nguồn seed: H2 FLAG-F2 @S150"). Nhỏ vì **chưa chạy round nào** (vòng nén gần nhất @S140 < ngày vai land S145b) — nhỏ đúng-lý, không phải rỗng. ⇒ **F2 @S150 của tao ĐÓNG** (vai đã có nhà trước lần chạy đầu).
  - 3 diary trio 2.0–2.1KB: mỗi cái có mục `## S151` thật + seed S141 ⇒ nhỏ đúng-lý (mới chạy 1 lượt).

## 4. Run-folder S152 (phiên này) — IN-PROGRESS, KHÔNG flag orphan

**LỆNH:** `ls -la runs/2026-07-25-S152-h24-open-bookend/` · `git status --porcelain --ignored .claude/workflows/runs`

- Nội dung lúc tao đo: `run.md` 1.597B · `machine-baseline.md` 4.578B · `sub-lead-gap-S152.md` (đang tăng) · + file của tao. `*-synthesis.md` **CHƯA có** = **đúng nhịp** (synthesis sinh sau đợt-2 ring1/ring2 theo `run.md` taskList 3–5) ⇒ **ghi nhận IN-PROGRESS, KHÔNG tính orphan** (§1 đã loại tường-minh).
- Ghi nhận Harness-10: folder này hiện `?? untracked` (chưa commit) — tracked-ness đến ở closeout. Không phải vi-phạm containment; chỉ nghĩa là **git-diff CHƯA soi được** wave đang chạy ⇒ lớp bảo-vệ trong-phiên vẫn là em-main single-writer (G-015: KHÔNG overclaim "read-only enforced").
- **Containment check (Harness-10):** ngoài `runs/<run-id>/`, vùng tracked KHÔNG được đổi bởi sub. `git status --porcelain .claude/agent-memory/` = **0 dòng** ⇒ **0 vi-phạm**: không sub nào (kể cả tao) chạm diary phiên này. Đúng luật M9 (chỉ em-main APPEND @closeout).

---

## 5. Fidelity spot-check (trục 3/5) — `ring2-audit` mục S151 vs `sub-ring2-S151.md`

Mẫu chọn: entry `## S151` trong `.claude/agent-memory/ring2-audit/MEMORY.md:52-55` (3 dòng, M9 on-behalf) → đối-chiếu **từng mệnh-đề** vs nguồn `sub-ring2-S151.md`.

| # | mệnh-đề trong diary | neo trong nguồn (LỆNH: `grep -n` / `sed -n`) | phán |
|---|---|---|---|
| 1 | evidence `sub-ring2-S151.md` **18.785B** | `stat -c %s` = **18785** | **KHỚP EXACT** |
| 2 | **8/8 ĐẠT** | `grep -nE "^### [SG]-[0-9]"` → S-1..S-5 + G-1..G-3 = **8 heading, cả 8 `**ĐẠT**`** (:44,50,56,63,69,79,94,99) | **KHỚP EXACT** (8 = 5 FLAG stale + 3 FLAG gap) |
| 3 | **falsify 5** | `:107` "§4 — Falsify-log — **5 phép**" · `:186` "HELD ×4 … BROKE ×1" | **KHỚP EXACT** |
| 4 | RE-IMPLEMENT H24-2 bằng Python độc lập **(67seg/20carry/∩=∅)** | `:80` "re-implement độc-lập bằng **Python** đúng 4 bước `governance-detectors.ps1`" · `:83` "**segs = 67 \| carryLines = 20**" · `:129` "67 seg / 20 carry-line / **streak≡1 / 0 flag**" | **TƯƠNG-ĐƯƠNG** — số 67/20 exact; `∩=∅` là **ký-hiệu nén** của "streak≡1 / 0 flag" (không có literal `∅` trong nguồn) ⇒ paraphrase hợp-lệ, truy được về số nguồn |
| 5 | thách-CLEAN **BROKE đúng dòng không-kèm-lệnh** | `:138` "§6 thách-CLEAN — **BROKE 1 dòng VERIFIED-CLEAN**" · `:189` "phần INFORM CLEAN của nó là **chỗ duy-nhất không kèm lệnh, và đúng chỗ đó vỡ**" | **KHỚP EXACT** (nguồn dùng đúng chữ "không kèm lệnh") |
| 6 | D-2 escalated: **counts 10-key / enum-11** thiếu `gap-underfill` | `:134` "**`counts` chỉ có 10 key trong khi enum 11 class** — thiếu `gap-underfill`" · `:177` "…**escalate lead**" | **KHỚP EXACT** |

**⇒ Fidelity PASS STRONG: 6/6 truy được về đĩa · 5 EXACT + 1 TƯƠNG-ĐƯƠNG(nén ký-hiệu) · 0 BEYOND-SOURCE · 0 bịa.** Byte-cite khớp tuyệt-đối (18785) — dấu hiệu ghi-từ-đĩa chứ không từ trí-nhớ.
**Dấu hiệu chất-lượng thêm (không phải flag):** nguồn tự gài chống-vu-oan — `:157` "phần lớn hit thừa **đúng là** attribution hợp-lệ ⇒ KẾT-LUẬN '0 residue mới' nhiều khả năng vẫn đúng; cái BROKE là **bằng-chứng**, không nhất-thiết là kết-luận" + `:160` kiểm chéo 1 trục CLEAN khác thấy ĐỨNG ("không tạo báo-động giả"). Diary nén 3 dòng vẫn giữ được ranh chứng-cứ⟂kết-luận này ở mức chấp-nhận-được.

---

## 5-bis. Corruption đo THẬT (m#16 — "máy im" phải hỏi lưới có phủ tới)

**LỆNH:** `grep -c $'�'` từng file (KHÔNG grep `Ã|â€` — m#6: false-positive generator trên VN UTF-8) + `iconv -f UTF-8 -t UTF-8`
- **U+FFFD = 0** trên **toàn bộ** 20 `agent-memory/*/MEMORY.md` + 12 file S151-bookend + 6 file trio + 4 file S152. (FFFD-baseline giữ **0** kể từ S118.)
- **iconv round-trip: VALID 12/12 INVALID 0** (9 diary vai-chạy-@S151 + 3 deep-file).
- **moved-not-cut: N/A** — phạm-vi phiên trước KHÔNG chạm `archive/*` nào (`git show --stat 1b85713` không có dòng `archive/`), nên không có ca move cần verify byte-identical.

---

## Verdict

**GATE-PASS-WITH-FLAGS** — 1 FLAG HIGH + 2 nit. Không FAIL (không mất dữ-liệu, không corruption, delta còn nguyên trên đĩa và vá được bằng 1 lượt APPEND).

| # | trục | verdict | số đo (kèm lệnh ở mục trên) |
|---|---|---|---|
| 1 | **Coverage** | **PASS** | orphan-run **0 thật / 55 dir** (universe ĐẦY-ĐỦ, không lọc `run.md`) · **9/9 vai** chạy @S151 có mục `## S151` thật · nợ S151-ring1 (`S144-bootstrap`) **ĐÓNG** |
| 2 | **Completeness** | 🔴 **FLAG ×1 (HIGH)** | **FLAG-1 `harvest-delta-orphan`**: trọn lượt **DEEP @close S151** (3 lane · 67.056B · **+604 dòng** commit `1b85713`) **0 dòng** vào diary vai nào — 4 lớp chứng: diary mtime 19:29:03 < deep-mtime 19:46/19:48/20:09 · `grep "deep-S151"` = 0 · `grep "22.157\|22.056\|22.843"` = 0 · 0 token "deep" trong khối S151. Còn lại: 4-field đủ ở 9/9 entry lượt @open |
| 3 | **Fidelity** | **PASS STRONG** | mẫu `ring2` S151: **6/6 mệnh-đề truy được** (5 EXACT + 1 tương-đương-nén) · byte-cite 18.785B == `stat` 18785 · **0 bịa** |
| 4 | **Placement** | **PASS** | `git status --porcelain .claude/agent-memory` = **0** · `find .claude -type d -empty` = **0** (m#13 git-MÙ) · stray cwd-relative `*/agent-memory` ngoài root = **0** (lớp S54) · 20/20 role-dir có `MEMORY.md` · containment Harness-10 **0 vi-phạm** |
| 5 | **Corruption** | **PASS** | U+FFFD **0** (20 diary + 22 file run) · iconv **VALID 12/12** · file nội-dung 0-byte **0** (10 hit 0-byte đều là `.gitkeep` legacy by-design) · file <400B trong 3 folder S151/S152 = **0** ⇒ 0 skeleton-ruột-rỗng (AS-17 sạch phiên trước) · moved-not-cut N/A |

**PROPOSE cho em-main (tao KHÔNG ghi — propose-only):**
1. **[HIGH]** APPEND `## S151-deep (@close)` vào 3 diary `lead-gap-auditor` · `lead-stale-auditor` · `ring2-audit`, distill từ 3 deep-file. **Idempotent-safe đã verify** (0 cite / 0 token ⇒ không double-append).
2. **[MED — sửa THƯỚC, chống tái-phát]** tiêu-chí coverage harvest đổi **role-level → file-level**: "mỗi `sub-*.md` trong run-folder truy được về ≥1 dòng diary". Lý do: lần này 9/9-theo-vai **PASS** mà vẫn hở trọn 1 lượt ⇒ thước cũ không thấy lớp **LƯỢT trong cùng session** (vắng-mặt trông giống ổn).
3. **[nit]** `runs/2026-07-22-S144-bootstrap/` thiếu `run.md` (có synthesis, không orphan) — thêm `run.md` tối-thiểu hoặc ghi 1 dòng miễn-trừ để lượt scan sau không phải điều-tra lại.
4. **[nit — ĐÓNG]** `ring4-audit` F2@S150 đã có nhà + ruột thật (1.047B, nhỏ đúng-lý vì chưa tới lượt nén) ⇒ gỡ khỏi carry.

**Tự-khai giới-hạn (CẤM đọc thành "sạch"):** (a) Fidelity chỉ spot-check **1/9** entry — 8 entry còn lại **chưa chấm mệnh-đề**, PASS-STRONG chỉ nói về mẫu ring2. (b) Coverage lượt-DEEP đo bằng grep-cite + mtime; tao KHÔNG đọc trọn 604 dòng deep để loại-trừ khả-năng một ý lẻ đã lọt vào diary dưới **cách diễn-đạt khác** — nhưng 0/4 chỉ-dấu đều âm nên xác-suất thấp. (c) Trục Completeness lượt @open chấm ở mức 4-field-có-mặt, không chấm độ-sâu distill.

**Trạng thái: DONE.**

