# C15 — SE có dựa vào model-override sống qua resume không?

> Nghĩa vụ `goi-chot:73` SELF-CHECK (khoản 2 **nửa sau**) — v1 bỏ sót, R2 bắt (O-2).
> Đo trên đĩa 2026-07-22 (S144). **Đây là KHẢO SÁT, chưa phải phép đo runtime.**

## Hai đường model, khác nhau về mức phơi nhiễm

| Đường | Model đến từ | Có override tại spawn? | Phơi nhiễm khi resume |
|---|---|---|---|
| **Agent-tool spawn** | `frontmatter` (17/17 vai pin `model: opus`) | **KHÔNG** | 🟢 **KHÔNG** — không có override nào để mất |
| **hmw lane spawn** | `hmw.js:234` `model: resolveModel(role, raw, t && t.tier, i)` | **CÓ** | 🔴 **CÓ** |

## 🟢 Ca em dùng HÔM NAY = an toàn

Path-2 `SendMessage-resume` em chạy 2 lần (H1 `tooling-auditor`, H2 `harvest-curator`) đều là **Agent-tool spawn**. Model của chúng đến từ frontmatter, **không có spawn-param override** ⇒ resume không thể làm rớt thứ vốn không tồn tại. **Không cần lo cho 2 ca này.**

## 🔴 Ca THẬT SỰ phơi nhiễm — và nó nằm ngay trong runbook

`docs/governance/fable-real-runbook.md:120` ghi resume là đường recovery cho **lane workflow**:

> *"**Resume lane garble/truncate** | **SendMessage-resume in-session** | gửi lại agent đã spawn (KHÔNG re-spawn mới) | Lane trả wrong-slice (#53)"*

Mà lane workflow **có** override tại spawn. Và chỗ duy nhất SE dùng override **KHÁC** frontmatter là `/fable-real` (`tier:'fable'` vs frontmatter `opus`).

**Chuỗi hỏng giả định:**
1. `/fable-real <vai>` phóng lane với `tier:'fable'` → H23 đo S126: spawn-param **THẮNG** frontmatter ⇒ lane chạy Fable ✓
2. Lane garble (#53) → runbook bảo `SendMessage-resume`
3. **Nếu override không sống qua resume** → lane hồi sinh chạy **Opus** (frontmatter), không phải Fable
4. Nó vẫn trả verdict bình thường ⇒ **không ai biết**

⇒ Anh gõ `/fable-real` để mua một lượt hạng-nhất, nhận về kết quả hạng-hai, **và không có tín hiệu nào**.

## Nấc trung thực

- **H23 @S126 đo spawn-param THẮNG frontmatter** — nhưng đo **tại lúc SPAWN**. Không ai đo **sau RESUME**.
- Hub tự khai `goi-chot:36` bằng chứng resume-rớt-override là **n=1, env-dependent**, từ MỘT sister ⇒ chưa chắc đúng ở env SE.
- ⇒ **Chưa kết luận SE có hỏng.** Kết luận đúng nấc: **SE có bề mặt phơi nhiễm, và chưa bao giờ đo.**

## Đề xuất (owner-gated — em không tự chạy)

`goi-chot:38` *"Muốn giữ resume → **tự verify trên env mình trước**"*.
Phép đo rẻ: phóng 1 lane `/fable-real` với `tier:'fable'` → ép garble hoặc chủ động resume → đọc model resolved bằng `scripts/spawn-model-audit.ps1` (PA-2b đã có sẵn, so resolved-vs-expected).

**Trong lúc chưa đo** — 2 lựa chọn, cần anh chọn:
- **(a)** Runbook `:120` thêm cảnh báo: resume lane **có `tier:` override** thì phải re-check model sau resume, hoặc **re-spawn thay vì resume**.
- **(b)** Đo 1 lần rồi mới quyết.

🔸 Ranh: khoản 2 gói-chốt **KHÔNG retire** path-2 cho ca in-session (`goi-chot:37` giữ *"hội-thoại tiếp-diễn trong cùng lượt làm việc"*) ⇒ lưới #53 **giữ nguyên**. Đây chỉ là nghĩa vụ kèm theo mà v1 làm rơi.
