# S146 — 2026-07-22 · Áp spec-v2 + 3 owner-decision session-model + closed.md/auto

> Vào bằng `/tiep` nối S145 (không `/session-start`). Governance/config-only — **0 file prod-code, 0 migration**.
> Lead: Opus 4.8 · HMW-mode ON · 1 lần `/pause` giữa closeout rồi `/tiep` chạy tiếp.

## Arc đã đóng

**1. Relaunch-cắt-gọt workflow chết giữa chừng.** `wf_f9f24694-12b` (S145) chết ở `/pause`, chỉ axis B landed. `/tiep §4` → bỏ hẳn run cũ (cross-session resume KHÔNG hợp-lệ) → `wf_3d803740-41d` 3 worker DISJOINT-file, **3/3 DONE** (511k tok, ~20′). Harvest-hồi-tố axis B bằng **đo đĩa**, không tin return đã mất.

**2. 🎯 LIVE-VERIFY hook 4-path trong repo THẬT.** Commit `da7ee8a` nuốt `.claude/sessions/session-1/probe.md`. Worker CE chỉ verify được **cây tạm** và **khai thật** không quan-sát được repo-thật từ subagent (hook ở `Stop`, không phải `SubagentStop`) ⇒ lead làm nốt. Khai đúng phạm-vi = lý do mảnh này không thành claim rỗng.

**3. Owner chốt 3 câu session-model** (`"1 và 2 → giống hub. 3 → auto."`):
- **(1) scaffold IDEMPOTENT** — gỡ mâu-thuẫn thật giữa `session-start:88` ("CHỈ /session-start") và `pause:25` ("chưa có thì tạo"). Gốc lỗi = **gộp 2 khái-niệm**: nay tách **cấp SỐ** (độc-quyền `/session-start`) ⟂ **tạo THƯ-MỤC** (idempotent).
- **(2) `closed.md`** = `_end` chốt-kết hub → `session-end §6.3-bis`, FROZEN 4 trường, idempotent NO-OP, **NO-OP im-lặng nếu 0 thư-mục** (cấm sổ rỗng giả). Khoá nốt vòng ORPHAN-L.
- **(3) V2 "auto"** — gỡ **cổng NGƯỜI** ở 3 chỗ, **GIỮ cổng NHỊP** `6/15/3`. Khai rõ vào doc: *"auto = bỏ HỎI, không phải bỏ ĐẾM"* ⇒ **chưa** phải bookend-hub.

**4. `session_ctx_kb = 64`** (owner lật từ "để trống"). Kèm `_owner_set` + **GIỮ caveat ghost-wire** (0 script đọc khoá). Có số ≠ có hành-vi.

**5. Cơ-chế session-model chạy THẬT lần đầu, end-to-end.** `session-1/pause-S146-*.md` (context-block đầu tiên) → `/tiep` → `resume-S146-*.md` → **ORPHAN-L cân sổ, im đúng**. Tín-hiệu **⑤ fire lần đầu và fire ĐÚNG** — không vacuous.

## 🔴 3 lỗi của LEAD trong phiên (ghi để không tái)

**(a) Phép quét cardinality sửa 4 LẦN trong 1 phiên:** quá rộng (nuốt câu đúng `session-end.md:162`) → quá hẹp (**lọt 4 ca thật**, reviewer F2 bắt, gồm chính F1) → rộng lại (kéo 3 miền khác) → chốt.
🔴 Cả 4 đều vì **cố mã-hoá ý-định NGỮ-NGHĨA vào một regex khôn**. Nấc đúng = **lưới-soát-cho-người + allowlist CÓ TÊN + `use ⟂ mention` (🧊)**. Lần 4 = **citation-trap** (bộ dò bắt chính nốt-vá vì nốt vá trích giá-trị cũ); giới-hạn kèm: 🧊 lọc theo **DÒNG** ⇒ **mega-line cấm dùng 🧊**.

**(b) Trả lời SAI về `/snapshot`.** Lead nói *"không có, bẫy tên gọi"* — kết-luận từ đĩa SE mà **không mở manifest hub**. Thực tế `101e69d6 §1` liệt **3 lệnh**, lệnh thứ-3 = **chụp-nhanh không-dừng**, là **floor thật**. Đã đính-chính.

**(c) F1 residual có người chỉ tận nơi mà vẫn rơi.** Worker CE liệt đúng 2 dòng `hook-3-path` trong sub-file, gắn nhãn "cần → 4, worker-3 sở-hữu"; worker D không vá; lead cũng không bắt vì (a). Reviewer bắt.

## Số đo
- detector **TOTAL 47** · counter **20** (tick @`/tiep`; `/pause` + `/tiep` sau đều **NO-OP đúng OR-guard** — chặn bẫy +2/chu-kỳ **2 lần** trong 1 phiên)
- `NHIP-NO: kiem light 3/6 deep 3/15 ok | tran-bo-nho 1 over-cap | run-chua-gom 0 | pull-cach 0 ngay`
- orphan run-folder **3 → 0** (retro-harvest 2 folder S144 + implement-synthesis S145)
- `wf: hmw-implement-spec-v2-relaunch run=.claude/workflows/runs/2026-07-22-S145-apply-hub-answers runId=wf_3d803740-41d done=3/3 harvested=yes`

## Còn treo (carry)
1. `/snapshot` — lệnh chụp-nhanh không-dừng (hub floor) — **chưa dựng**
2. `_context` tầng **STOCK** + nén-thành-con-trỏ — SE mới có tầng *flow*
3. Bookend đủ **5/5** vòng? — đo được: V1+V3 = 2 đầu thật · V2 auto-khi-tới-nhịp · V4 on-signal · V5 liên-tục
4. **Meld-forward** `.claude/sessions/` qua squash — **CHƯA ĐO**
5. 14 carry cũ ở `docs/HANDOFF.md`
