# adap-report — H23 explicit-model-at-spawn (PA-2)

## 1. id-broadcast
`2026-07-13-Governance-harness-23-explicit-model-at-spawn`

## 2. nấc G-011
**executed** — 2 lớp PA-2 đã land và chạy. ~~🔴 **NHƯNG câu hỏi TRUNG-TÂM của broadcast vẫn CHƯA TEST** (xem §5(a)) ⇒ **KHÔNG được đọc đợt adopt này thành "H23 đã đóng"**.~~ → ✅ **UPDATE 2026-07-16 S126: câu hỏi trung-tâm ĐÃ TEST — spawn-param THẮNG frontmatter hard-pin** (evidence §5(a) khối UPDATE).

| Phần | Nấc |
|---|---|
| PA-1 (a)(b)(c)(d) — 4 file `.md`, 0 frontmatter, 0 config, 0 số, H8 nguyên-vẹn | **executed** |
| PA-2a — hằng-số `TIER2_EXPECTED_FULL_ID` | **executed + runtime-verified** (detector đổi trạng-thái đúng, §3) |
| PA-2b — `spawn-model-audit.ps1` so resolved-vs-expected | **executed + runtime-verified** (fail-loud ĐÚNG lúc thiếu → OK khi land; teeth-inject FLAG) |
| **Precedence spawn-param ⟂ frontmatter** (H23 §2(2)) | ✅ **executed + runtime-verified 2026-07-16 S126** (hết DEFER): lane `tier:'fable'` trên reviewer pin-`opus` → resolved **`claude-fable-5`** = param THẮNG hard-pin; control no-tier → `claude-opus-4-8` DÙ lead=Fable = pin ăn thật (§5(a) UPDATE) |

## 3. evidence

**Commit (ĐÃ PUSH, range `4727d16..c39ba9d`):**
- `d07bbb9` — `scripts/spawn-model-audit.ps1` (PA-2b, 25 606 B)
- `00a1c67` — `hmw.js:50` `const TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8'` (PA-2a) — trong **1 commit nguyên-tử** 9 file
- `53765b0` — `fable-clone.md` GAP#6 + `fable-real-runbook.md`

**Đo thật — PA-2b đổi trạng-thái ĐÚNG theo thiết-kế (2 mốc, đo bằng chính script):**
| Mốc | Output |
|---|---|
| TRƯỚC W2 land | `FAIL-LOUD: expected constant missing (W2 chưa land)` |
| SAU W2 land | `[OK] claude-opus-4-8 = owner-ratified` |
| **Teeth-inject** (lead tự tiêm `claude-opus-9-9`) | **FLAG mismatch** → sửa → hết FLAG |

⇒ script **có răng thật**, không phải happy-path xanh.

**GAP#6 land (`fable-clone.md`):** lane ensemble PHẢI mang `tier:'opus'`; `hmw.js:63-64` `resolveModel()`: `if (tier==='fable'||tier==='opus') return tier`.

## 4. tailored-gì + skip-gì-vì-sao

**TAILORED:**

1. **PA-2 KHÔNG neo-tại-spawn — vì neo-tại-spawn BẤT-KHẢ-THI ở SE.** Param `model:` của Agent-tool chỉ nhận **enum alias** (`sonnet|opus|haiku|fable`), không nhận full-id; và SE **0 full-id** vì H8 all-inherit. ⇒ anh chủ-dự-án chốt (O1) đổi **hình-thức** sang **PA-2a hằng-số + PA-2b audit so resolved-vs-expected**. 🔴 **Đây là đổi HÌNH-THỨC một quyết-định owner đã ký** ⇒ đã report-before-stamp và **anh ack riêng** (fix#8a).

2. **GAP#6 diễn-giải theo project-fit SE:** `/fable-clone` tự định-nghĩa là *"ENSEMBLE **tier-2**"* ⇒ lane **BUỘC** mang `tier:'opus'`. Thiếu ⇒ lane `inherit` lead ⇒ **lead=Fable thì thành N× Fable** = vừa đốt quota top-model gấp N lần, vừa **phá đúng lý-do lệnh tồn-tại** (ensemble rẻ để **thay** 1 lượt Fable đắt).

3. **Acceptance v1 `grep tier:'opus' ≥1 hit` giữ làm ĐIỀU-KIỆN CẦN, KHÔNG ĐỦ** — nó chỉ đo **CHỮ trong file**, không đo runtime ⇒ **Goodhart-able 100%**.

**SKIP / n-a:** không skip điểm nào của broadcast.

## 5. honest-caveat

🔴 **(a) LỖ TRUNG-TÂM CHƯA TEST — chính thứ H23 §2(2) BẮT BUỘC phải khai.**
Nguyên-văn broadcast đòi khai: *"thứ-tự ưu-tiên giữa **'tham-số tại spawn'** và **'pin ở tệp định-nghĩa'** khi **CẢ HAI cùng hiện-diện** — rất có thể **chưa từng được test**."*
**Ở SE cả hai ĐANG cùng hiện-diện:** `hmw.js` trả alias vào `agent(…, {model:…})` **TRONG KHI** frontmatter **toàn roster** = `inherit`. **Chưa ai test bên nào THẮNG.**
🔴 **Hệ-quả nếu frontmatter thắng: TOÀN BỘ fix GAP#6 = NO-OP** ⇒ floor-2 vẫn thủng khi Fable UP — **đúng lỗi 🟥 reviewer đã bắt @S108**.
**Phép thử phân-biệt được (H23 §6 phép-thử-phá #3):** chạy 1 lane `tier:'opus'` **KHI lead=Fable** → đọc model **THỰC-TẾ resolve** → lệch ⇒ báo owner.
⚠️ **Phiên adopt này lead=Opus** ⇒ `tier:'opus'` ≡ `inherit` ⇒ **2 nhánh ra CÙNG kết-quả** ⇒ **KHÔNG phân-biệt được** ⇒ **DEFER tới phiên lead=Fable**. 🔴 Khai thẳng: **CHƯA test, KHÔNG giả-vờ đã test.**
⇒ **PA-2a/PA-2b là 2 lớp GIÁN-TIẾP, KHÔNG THAY được phép thử trên.** Chúng chứng *"hằng-số đúng và audit đọc được"*, **không** chứng *"param có thắng frontmatter không"*.

✅ **UPDATE 2026-07-16 S126 — LỖ (a) ĐÃ ĐÓNG, phép thử còn MẠNH HƠN thiết-kế gốc.** Bối-cảnh đổi: S124 owner-decision pin cứng 14/14 frontmatter `model: opus` (hết all-inherit) ⇒ contest chuyển từ *param ⟂ inherit* (mơ-hồ — `inherit` có thể chỉ là "defer to caller") thành **param ⟂ HARD-PIN (contest thật)**. Đo phiên đầu sau restart, 2 lane `wf_f960dae2-fa0`, đọc bằng chính `spawn-model-audit.ps1 -SessionId c0fa4300…`:
- Lane `reviewer` (pin `opus`) + spawn `tier:'fable'` → resolved **`claude-fable-5`** (3 records) ⇒ **SPAWN-PARAM THẮNG** ⇒ `/fable-real`·`/fable-clone` SỐNG, **GAP#6 fix KHÔNG phải NO-OP** (hệ-quả 🔴 ở trên KHÔNG xảy ra).
- Lane `investigator-codebase` KHÔNG override → resolved **`claude-opus-4-8`** (9 records) **DÙ lead=Fable 5** ⇒ pin frontmatter ăn runtime, loại giả-thuyết inherit-lead. (Lead=Fable làm control phân-biệt được — đúng tinh-thần phép-thử-phá #3, chỉ đảo chiều alias.)
- Audit tại thời-điểm đo (run contest `wf_f960dae2-fa0`, 2 lane): 0 mismatch. ⚠️ COUNTS của script = cumulative CẢ PHIÊN (2/2/0 lúc đo → 4/4/0 sau 2 lane review cùng phiên) ⇒ evidence bền = bảng per-lane theo run-id, KHÔNG phải số tổng. Evidence nội-bộ: `runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md`. Đã báo hub: `2026-07-16-se-to-ai_infra-h23-precedence-test-result`.
- ⚠️ Giới-hạn khai thẳng: (i) đo trên SE frontmatter ALIAS `opus` — hub pin FULL-ID, KHÔNG generalize sang hình-thức đó (bài ENV-DEPENDENT); (ii) retrospective 1 phiên — không hứa spawn TƯƠNG-LAI (đúng caveat PA-2b); (iii) fix#8a (param có từ-chối full-id?) VẪN chưa thử — không thuộc phép đo này.

🔴 **(b) Chính mệnh-đề "param chỉ nhận alias" cũng CHƯA THỬ.** Cổng-cuối `/fable-real reviewer` bắt đúng: bullet *"param `model:` chỉ nhận enum alias"* trong `owner-decisions` **dán nhãn "Đo" nhưng KHÔNG nêu phép đo**. Nấc trung-thực đã hạ xuống: *"theo tài-liệu harness (Agent-tool `model` enum = `sonnet|opus|haiku|fable`), **CHƯA thử truyền full-id để xem có bị từ-chối không**"* (fix#8a — anh đã ack hình-thức PA-2a+PA-2b trên nền nấc đã hạ này).
🔸 Đây là **tiền-đề** biến PA-2-nguyên-bản thành "bất-khả-thi" ⇒ nó **đỡ cả kết-luận O1**. Nếu tiền-đề sai, hình-thức PA-2 cần xét lại.

🔴 **(c) `hmw.js:46-49` mang cùng ghi-chú này trong mã** — không chỉ ở report. Có chủ-đích: người đọc mã phải thấy lỗ ngay chỗ có thể bị lừa.

🟡 **(d) → adap-request R1 (GIỮ, evidenced):** H8 all-inherit ⟂ pin-simple ⟂ H23 — **hub tự pin 17/17** trong khi broadcast nói all-inherit. SE giữ H8 nguyên-vẹn (0 frontmatter đổi) và đề-nghị hub làm rõ.

---
*Ghi @S122 (2026-07-15) · lead **Opus 4.8** — 🔴 chính vì lead=Opus mà §5(a) KHÔNG test được phiên này · chain ĐÃ PUSH `4727d16..c39ba9d`, tree clean*
*UPDATE @S126 (2026-07-16) · lead **Fable 5** — §5(a) ĐÓNG bằng phép đo thật (khối UPDATE trong §5(a)); (b) fix#8a vẫn mở.*
