# h24-synthesis — vòng H24 force-fire S148, đóng sổ @S149

> Dạng-1 phẳng (bắt buộc cho run MỚI — `tiep.md §0` DUAL-ACCEPT giới-hạn 2). Đóng orphan mà Sàn-3 ① bắt được đầu phiên S149.

## Vì sao run này thành orphan

Vòng chạy @S148 (2026-07-24 18:06), W1+W2 **hoàn thành thật** nhưng:
- `run.md` stages không ai tick (`[!] [!] [ ]` nguyên trạng)
- **0 file `sub-*`** trong run-folder — output 2 con-đo ghi thẳng vào `agent-memory/*/MEMORY.md` (18:11 và 18:20)
- W3 `h24-audit` (vai KIỂM) **chưa từng chạy**

⇒ Máy đo hình-dạng run-folder xếp orphan. **FLAG đúng, không phải dương-giả** — nó bắt được `[ ] W3` chưa chạy thật.
🔴 Đối chứng: vòng **S146** để lại **3 file** `sub-*` trong run-folder; vòng S148 để lại **0**. Bằng-chứng-quá-trình S148 **mỏng hơn vòng trước**, dù S148 là vòng tự tuyên "chống #53 tốt hơn".

## Kết quả 3 stage

| Stage | Vai | Trạng thái | Sản phẩm |
|---|---|---|---|
| W1 | `lead-view-auditor` | ✅ XONG @S148 | 5 FLAG · diary `MEMORY.md` 18:11 |
| W2 | `lead-omission-auditor` | ✅ XONG @S148 | 4 FLAG + 4 INFORM + 2 honest-zero · diary 18:20 |
| W3 | `h24-audit` | ✅ XONG @S149 (relaunch cắt-gọt `/tiep §4`) | `sub-h24-audit-S149.md` 25.724B |

## VERDICT vai KIỂM — 7 ĐẠT · 0 TRƯỢT nội-dung · 2 KHÔNG-CHẤM-ĐƯỢC

**ĐẠT (7):** V1 canonical-poison test-count · V2 gotcha 82-vs-83 · V3 trio-first-run stale · O1 bảng owner-gated câm · O2 từ-chối-chỉ-có-vết-WAL · O3 verdict-JUMP-chìm · O4 mất-phạm-vi "1 session kéo 2-3 phiên".
**KHÔNG-CHẤM-ĐƯỢC (2):** V4/V5 của lead-view — **0 vết trên đĩa ở bất kỳ đâu**. Vai từ chối ĐẠT-ảo.

**Tự tái-dựng 3 số** (không chép claim): chạy `dotnet test` tươi = **45D+487I=532** · tự đếm anchor `gotchas.md` = **83** liên tục · **tự chọn thêm phép thứ-3** = đọc git 2 commit closeout S148.

**Falsify 7 phép:** 5 HELD · 1 BROKE-nghi-vấn-của-chính-nó (F7: nghi lead-view sót roster ⇒ đếm 20 file + kiểm 20 TÊN ⇒ roster sạch, lead-view im là ĐÚNG, ghi VERIFIED-CLEAN chống báo-động-giả) · 1 INCONCLUSIVE khai thật (F5).

## 🔴 3 phát hiện MỚI (ngoài phạm vi được giao — vai tự mở)

**① Nửa tally `view-*` bị bỏ @S148.** Đọc git 2 commit closeout: **chỉ 3 dòng `gap-*` được đổi, 0 dòng `view-*`**.
**GỐC:** `lead-view-auditor` **không gán class cho FLAG nào** @S148 — dù nó VẪN gán @S140, @S143, và @S146 dùng header chuẩn `## FLAG-N — class — SEV`. Không gán ⇒ không đếm được ⇒ sổ đứng yên.
**Đối chứng bất-đối-xứng (chống đổ lỗi lead):** cùng closeout đó `gap-*` ghi đủ 3 dòng — khác biệt DUY NHẤT là `lead-omission` **có đưa bảng tally có nguồn**.
✅ **Đã vá @S149:** `view-stale-count` 0→**1** · `view-stale-status` 0→**2** (2 vòng liên tiếp S146+S148) · `view-residual-asym` **GIỮ 1 + khai không-xác-định {0,3}** trong `_view_star_repair_S149` (ngoài map `counts` — tôn trọng bất-biến `2f39a7e` "map chỉ chứa SỐ").

**② Câu JUMP owner đang chờ = DẢI 3–4, không phải số 3.** Nếu 1 trong 2 FLAG mất tích là `view-residual-asym` thì nó =3 ⇒ chạm jump ⇒ **4 class armed**. Không suy luận nào giải được — nó nằm ở 2 FLAG đã biến mất khỏi đĩa. **CẤM ghi 0** (= khẳng định "S148 không fire" = ĐẠT-ảo) và **CẤM ghi 3** (= đoán lên).

**③ SEAM giữa 2 vai — honest-zero đẩy-turf mà không vai nào ôm.** `gap-incident-unrecorded=0` của lead-omission **đúng LUẬT** (2 sự-cố S146/S147 có trong sổ bền) nhưng nó đẩy phần "số cũ" sang `view-*` rồi thả — lead-view không nhận. Hệ quả đo được: garble S148 ×2 chưa vào sổ bền nào; **ba con số lũy-kế đang trôi** (`STATUS`=×27 · sổ bền=~×31 · tự cộng thân sổ=33).
👉 **Escalate owner, không tự chế class:** (a) làm rõ ranh "số cũ của một sự-cố" thuộc `view-stale-count` hay `gap-incident-unrecorded`, HOẶC (b) buộc mọi honest-zero đẩy-turf phải **nêu đích danh vai nhận**.

## GAP-3 lần 4 — nạn nhân là chính vai KIỂM
`.claude/agent-memory/h24-audit/` tồn tại **mà RỖNG** dù vai đã chạy @S146 ⇒ @S149 vào **mù hoàn toàn**, dựng baseline từ 0.
✅ **Đã seed on-behalf @S149** sau VERIFY (5.865B, byte-verified).

## #53 — garble ×2 trên chính vai KIỂM, 0 mất dữ-liệu
Lượt-1 return = *"Recording findings so far…"* · lượt-2 (sau resume) = *"Let me check my own role-diary convention…"*.
**Cả hai vớt trọn từ đĩa** nhờ ép ghi-đĩa-trong-lúc-làm ngay từ prompt: **7,7KB → 25,7KB**, đủ §0–§9e.
⇒ Xác nhận lần thứ 4: **chống #53 = thiết-kế artifact, KHÔNG phải thiết-kế prompt.** Nấc mới: **resume cũng garble return nhưng vẫn ghi đĩa đầy đủ.**

## Nghi-thức đề xuất cho vòng sau (rẻ, chống tái diễn)
Buộc mỗi vai H24 ghi `## FLAG-N — \`class\` — SEV` vào `runs/<id>/sub-<vai>-<S>.md` **ngay khi có FLAG** — đúng khuôn `sub-lead-view-S146.md` đã dùng tốt. Vòng S148 bỏ khuôn này và **mất 2/9 FLAG vĩnh viễn**.

## Post-wave assertion
`git status --short` sau khi vai chạy: **0 residual-write** ngoài file được phép (`sub-h24-audit-S149.md`) + counter do lead tick. Propose-only giữ đúng.
