# runtime-verify synthesis — NHÓM A (A1·A2·A3) @S126 2026-07-16

> Stage 1 của run `2026-07-16-S126-adap-spec-execute` (thực-thi spec S125 §NHÓM A). Fan-out `wf_f960dae2-fa0`: 2 lane, Mode A return-delta-only, 43s, 0 error. Phép đo: `scripts/spawn-model-audit.ps1 -SessionId c0fa4300-e317-4d1c-ad41-e819e6eb0a42` (PA-2b — đọc resolved model từ transcript, KHÔNG tin lane tự khai).

## A1 · H23-precedence — KẾT QUẢ: **`fable`** (spawn-param THẮNG frontmatter hard-pin) ⇒ /fable-real SỐNG
- Lane `wf_f960dae2-fa0/agent-a6e8ca7bdaf910195.jsonl` · agentType=`reviewer` · spawn `tier:'fable'` (hmw.js resolveModel → `model:'fable'` vào agent()).
- Đối-kháng: frontmatter `reviewer.md:5 model: opus` + `:6 effort: max` (hard-pin S124; frontmatter đã ăn runtime — chứng bằng A2, không giả-định).
- Resolved ĐO ĐƯỢC: **`claude-fable-5`** (3 assistant records).
- ⇒ Acceptance "1 trong 2 chữ" = **`fable`**: spawn-param takes precedence over hard-pin ⇒ `/fable-real`·`/fable-clone` KHÔNG NO-OP, KHÔNG cần owner re-pin. Case này trước 2026-07-16 chưa có evidence — khác case frontmatter-`inherit` (wf_cb964f83-331, 07-15): ở đó `inherit` có thể chỉ là "defer to caller", không có contest; ở đây contest THẬT và param thắng.
- Carry `[carry:h23-fable-test-postrestart]`: vế đo → ĐÓNG; vế "báo hub" (hứa s124-report §3) → B6.

## A2 · worker-tier-pin runtime — KẾT QUẢ: **`opus`** (pin ăn THẬT)
- Lane `agent-a97d1fb7c0b985d21.jsonl` · agentType=`investigator-codebase` · KHÔNG tier (resolveModel → undefined → frontmatter tự lo).
- Resolved ĐO ĐƯỢC: **`claude-opus-4-8`** (9 records) = `TIER2_EXPECTED_FULL_ID` — audit lúc đo: 2 dispatch / 2 explicit / 0 mismatch ⚠️ *(COUNTS của script = cumulative CẢ PHIÊN, tăng theo spawn sau — reviewer-gate đo lại 14:27 đã 4/4/0 vì chính 2 lane review; evidence bền = per-lane theo run-id `wf_f960dae2-fa0`, KHÔNG phải số tổng)*.
- 🔴 Control MẠNH nhờ lệch-model ngoài kế-hoạch: **lead phiên = Fable 5** — nếu cơ-chế thật là inherit-lead thì lane này phải ra `claude-fable-5`. Nó ra `opus` ⇒ frontmatter pin LÀM VIỆC runtime. (Ở lead=Opus như WAL dự-kiến, "pin ăn" và "inherit-lead" cho CÙNG đáp-số — không phân-biệt được.)
- Tally đĩa (lane A2 đếm): **14/14 `model: opus` + 14/14 `effort: max`** (line 5/6 frontmatter từng file), README.md loại đúng, 0 file lệch.

## A3 · autoMemoryDirectory WRITE-path — file MỚI ghi được
- File mới: `.claude/auto-memory/project_h23_spawn_precedence.md` (mang fact THẬT từ A1/A2, không phải probe rỗng) + 1 dòng index `MEMORY.md`. Verify byte>0 chạy sau khi ghi (bài #53 0-byte-write).

## Finding phụ — stale-tooling cùng lớp "all-inherit" (chuyển đợt vá B1)
1. `scripts/spawn-model-audit.ps1` **Section D** còn enforce H8 all-inherit (script viết @S119, trước S124) → chạy hôm nay ra **14 MED FLAG dương-giả** "frontmatter pins 'model: opus' — H8 says every agent inherits". Vá = flush kỳ-vọng theo canonical S124 (opus+max); giữ răng detector bằng fault-inject `-RepoRoot` cây tạm.
2. Cùng file **Section E note 5**: "SE has 0 hard-pinned agents (12/12 inherit)" — stale (nay 14/14 hard-pin) + case hard-pin ĐÃ có evidence (chính phép đo A1 hôm nay). Header `:33-35`/`:41-54` đính-chính cùng đợt.
3. `hmw.js:9` (meta) + `:44-51` comment "H23-precedence CHƯA test — restart-để-ăn" → stale sau hôm nay (lesson S108: comment stale làm worker đọc sai runtime). Vá cùng đợt B1.

## Pilot H22 — datapoint D5
- `/pause` (S125, lead=Fable) → restart → `/tiep` (S126): sàn-3 §0 chạy đủ (3 tín-hiệu MẠNH đều CÓ và đều KHỚP chain — orphan folder = spec-holder đúng trạng-thái `[!]`), ground-truth verify 4/4 khớp, mạch nối 0 hỏi lại.
- **Leg "đổi-model" KHÔNG xảy ra:** WAL `next:` dự-kiến lead Opus 4.8 MAX, thực-tế owner mở phiên Fable 5 (owner-choice) ⇒ datapoint thu được = **cross-SESSION same-model resume OK**; pilot cross-MODEL resume vẫn PENDING. Ghi memory `h22` @closeout — KHÔNG claim quá phép đo.
