# RUN — retro-harvest 7 orphan run-folder (S122, 2026-07-15)

**run-id:** `2026-07-15-S122-retro-harvest-7-orphan`
**status:** ✅ **CLOSE** — `retro-harvest-synthesis.md` ghi @C4 per-turn (cùng lượt fan-out, không để sang phiên). 7/7 folder đích đã chuẩn-hoá; dual-accept-orphan **8 → 2** (còn S119 wave-đang-chạy + run này).
🔴 **Kết-quả LẬT tiền-đề của chính run:** 0/7 là việc mất — 7/7 đã xong, chỉ ghi synthesis SAI CHỖ. Chi-tiết → `retro-harvest-synthesis.md`.
**wf-id:** `wf_5ce007c4-980` (điền sau phóng — engine sinh id lúc launch; marker `wf:` + folder + run.md đã có TRƯỚC, đúng Sàn-1)
**engine:** `/hmw` RUN-TRACE (`.claude/workflows/hmw.js`) — KHÔNG raw-Workflow (đường đó mất writeGuard + gate)
**lead:** em-main (Opus 4.8, 1M, Max)
**scaffold @P1:** TRƯỚC khi phóng (Sàn-1 `hmw.js:147` — luật = đăng-ký marker TRƯỚC; W1 @S121 lead đã vi-phạm đúng điểm này, ghi WAL:13(a))

---

## Vì sao có run này

Anh CHỐT @S122 (AskUserQuestion): **đóng thật 7 orphan bằng retro-harvest**, KHÔNG scope, KHÔNG allowlist.

**Ngã ba sinh ra từ mâu-thuẫn nội-tại của spec v3 FIX#4:**
- Thân fix: *"W0.5: mtime → `git log -1 --format=%cI -- <folder>` so mốc `3fde8af`"* ⇒ **SCOPE**
- Acceptance ngay dưới: *"scan mới ⇒ đúng `{S119}` **sau khi đóng 7 tồn-đọng**"* ⇒ **ĐÓNG**

Đây vốn là **2 nhánh loại-trừ** mà v1:110 nêu rõ (*"Đóng (thêm `*-synthesis.md`) **HOẶC** scope scan"*). FIX#4 lấy mỗi nhánh một nơi.

**Scope bị loại** vì: run bỏ-quên 2 phiên sau cũng sẽ IM — đúng kịch-bản mà Sàn-3 sinh ra để chống (*"sổ trống nhưng còn việc dở"*).
**Bịa synthesis bị cấm:** v1:110 — *"**KHÔNG** tạo `*-synthesis.md` giả (Goodhart — R3 flag)"*.

⇒ Còn đúng một đường: **đóng THẬT, nội-dung partial-honest**.

## Đo nền (S122, tái-hiện CHÍNH XÁC dự-báo FIX#4)

```
total run.md = 25  |  naive-orphan = 13  |  dual-accept-orphan = 8  |  C8 cứu = 5
```
C8 cứu đúng 5 folder h10/h910 (`h10-invest` · `h10-implement` · `h10-review` · `h910-curate` · `h910-finalize`)
⇒ mệnh-đề C8 **BẮT BUỘC** vào `tiep.md` §0; thiếu = 5 dương-giả ngay lượt đầu.
8 dual-orphan = **7 tồn-đọng** (run này đóng) **+ 1** = `2026-07-15-S119-adap-6-broadcast` (đang bay hợp-lệ, KHÔNG đóng).

## 🔴 Ranh-giới ghi (B6 + `workflows/README.md:17`)

**`*-synthesis.md` = EM-MAIN single-writer.** Sub **CẤM** ghi file `-synthesis.md`.
⇒ 7 sub = **READ-ONLY**, chỉ `findings` + return. Lead đọc return → **VERIFY** → tự ghi 7 synthesis (B3 no-overwrite-unverified).
Sub KHÔNG ghi `agent-memory/*` · KHÔNG MD canonical · KHÔNG sub-MD của agent khác · KHÔNG đụng 7 folder đích (read-only).

## taskList snapshot

| # | role | folder đích | vật-liệu trên đĩa |
|---|---|---|---|
| 0 | investigator-codebase | `2026-07-12-S112-pe-signoff-close-review` | run.md + spec + `review-L1-state.md` + `review-L2-security.md` (4 file, 44KB) |
| 1 | investigator-codebase | `2026-07-12-S112-pe-signoff-save-advance` | run.md + spec + `sub-invest-A/B/C.md` + `sub-reviewer.md` (6 file, 72KB) |
| 2 | investigator-codebase | `2026-07-12-S112-supplier-excel-import` | run.md + spec + `sub-invest-codebase-A/B/C.md` + `sub-reviewer-0.md` (6 file, 64KB) |
| 3 | investigator-codebase | `2026-07-12-S112-supplier-import-close-review` | run.md + spec + `review-L1-BE-adjust.md` + `review-L2-FE-deploy.md` (4 file, 24KB) |
| 4 | investigator-codebase | `2026-07-12-S113-supplier-import-v2-invest` | run.md + spec **CHỈ 2 file, 24KB — KHÔNG có dấu-vết thực-thi** |
| 5 | investigator-codebase | `2026-07-12-S114-multi-ncc-per-hangmuc` | run.md + spec **CHỈ 2 file, 16KB — KHÔNG có dấu-vết thực-thi** |
| 6 | investigator-codebase | `2026-07-13-pe-negative-quote` | run.md + spec **CHỈ 2 file, 20KB — KHÔNG có dấu-vết thực-thi** |

> 🔴 **Task 4/5/6 = ca KHÁC BẢN CHẤT.** Chỉ có plan, không có sub-MD ⇒ **CẤM suy** "chắc là xong rồi". Phải truy `git log` xem việc có land không, và nếu land mà không có sub-MD thì **khai đúng nấc đó** (run-trace thủng, việc vẫn xong) — KHÔNG lấp bằng văn-vẻ.

## Guard

- **S1:** repo SOLUTION_ERP only.
- **Sàn-1:** 7 task (≥3) ⇒ `args.run` BẮT BUỘC — đã scaffold folder này + run.md **TRƯỚC** khi phóng.
- **Anti-fabrication:** mỗi claim phải có `file:line` hoặc commit-sha THẬT. Không có bằng-chứng ⇒ ghi `KHÔNG XÁC ĐỊNH ĐƯỢC`, **CẤM đoán**. (Bài học WAL:19 — schema-pressure kéo agent chế dữ-liệu; WAL:11 — #53 tái-hiện 2/2 với `tool_uses=0` + bịa.)
- **Honest-marker:** mọi synthesis lead ghi PHẢI mang nhãn `partial-honest — viết muộn @S122` + lý-do vì sao muộn.

## Kết quả

✅ **XONG** — `retro-harvest-synthesis.md` (bản gom đầy-đủ) + **7 file** đã ghi vào 7 folder đích:

| Folder đích | File | Bytes |
|---|---|---|
| S112-pe-signoff-close-review | `review-synthesis.md` | 6545 |
| S112-pe-signoff-save-advance | `invest-synthesis.md` | 7076 |
| S112-supplier-excel-import | `invest-synthesis.md` | 7172 |
| S112-supplier-import-close-review | `review-synthesis.md` | 5698 🟡 nấc thấp (lane rỗng) |
| S113-supplier-import-v2-invest | `invest-synthesis.md` | 6582 |
| S114-multi-ncc-per-hangmuc | `invest-synthesis.md` | 6483 |
| pe-negative-quote (**S116**, không phải S113) | `implement-synthesis.md` | 8249 |

**Đo trước/sau:** `naive 13→7` · `dual-accept 8→2` · 7 tồn-đọng **→ 0**. 7/7 file non-zero (verify byte — bẫy #53).
**Containment (B6):** `git status --porcelain` RỖNG sau P2 · 7 folder đích 0 thay-đổi · 0 file synthesis do sub ghi ⇒ sub read-only tuyệt-đối, synthesis 100% lead.
**Fan-out:** 6/6 lane có return neo SHA thật, 0 garble · 1 lane RỖNG (`parallel[3]`, schema fail) — **dữ-liệu KHÔNG mất**, lấy lại từ đĩa (`/tiep` §2: per-turn ≠ per-task).
