# adap-report — 2026-07-10-Governance-harness-21-spec-file-invocation (SE)

> **Broadcast:** `2026-07-10-Governance-harness-21-spec-file-invocation.md` (outbox/all AI_INFRA). **Adopt S110 (2026-07-11), anh-directed** (`/check-email AI_INFRA` + lệnh anh nguyên văn: `"/fable-real inves và review — chủ đề các vấn đề trong email nhận được. hmw cho đám Opus 4.8 MAX xử lý"` — chính lệnh này ĐÃ đúng khung H21: owner gõ + vai đích-danh + worker hạng-hai).
> **Integrity gate:** whole-file `Get-FileHash` copy==nguồn ✓ + body `content_sha256` re-compute `19cc954b…` **MATCH ✓** (canonical split-frontmatter + strip-1-leading-newline + SHA256-UTF8). `reviewer_gate: PASS-WITH-FIXES` (gate-outward AI_INFRA WF-3 `wf_61e7fc76`). `supersedes_scope: partial` (trên H19 "model ảo ensemble" — 2 khoản thay: 2-vai-cố-định + mode-switch; định-nghĩa 2 engine + ký-ức-đúng-vai + chất-lượng GIỮ).
> **Harness-9 mandate 2-workflow + engine-đắt lượt này:** invest = **investigator-codebase Fable-real single-deep-pass** (spawn-direct; ⚠️ #53-garble → SendMessage-resume recover, verdict PASS đầy đủ) → lead verify + ghi **spec-file 3-mục** `.claude/workflows/runs/2026-07-11-h21-mtv3-adopt/spec-h21-mtv3-adopt-11-07-2026.md` (dogfood khoản-① NGAY lượt adopt — run-1) → WF implement **`wf_0c3b307f-a64`** (3 worker **Opus 4.8 MAX** `model:'opus'` edit-direct, 3/3 DONE 0-error schema-clean) → review = **reviewer Fable-real single-deep-pass** (⚠️ #53-garble lần 2 → SendMessage-resume recover) → **PASS_WITH_FIXES** (0 Critical · 5 Major M1-M5 · 9 minor) → em-main fix trọn M1-M4 + minors cùng phiên, M5 = chính file này + file MTv3 (khớp filename đã cite trong 3 supersede-note).

## Nấc per-khoản (G-011: agreed / executed / verified)

| Khoản (sàn 🔴) | Nấc | Evidence |
|---|---|---|
| **① Spec-file 3-mục mỗi run engine-đắt** (engine propose-only → lead verify → LEAD ghi → worker theo spec) | **executed + dogfood run-1 CÙNG LƯỢT** | Template + pipeline codify `harness-11-engine.md §K.E(ii)`; 2 command `fable-real.md:25-32` / `fable-clone.md:23-30`; runbook §2.1-bis; spec thật `runs/2026-07-11-h21-mtv3-adopt/spec-h21-mtv3-adopt-11-07-2026.md` (3-heading, provenance ghi rõ engine-propose → lead-verified-2-chỉnh → lead-ghi) |
| **② Owner-gõ-kèm-vai; BỎ mode-marker + BỎ 2-vai-cố-định; lead không tự ý** | **executed** | Marker `.claude/fable-real-mode.on` **ĐÃ XÓA** (Test-Path=False; `.gitignore:92` giữ pattern phòng-hờ + comment 🧊); 2 command redesign per-invocation `<vai> <đề-bài>` (vai ∈ roster 12, thiếu/sai → hỏi anh); session-start BƯỚC 0.5b reword reader-H21; engine K.A/K.B/K.D 🧊-supersede + K.E mới; runbook ~30 point-edit ($mode→$engine/INVOCATION, AP-4-mới "chạy ngoài lượt-lệnh = vi phạm") |
| **4 ghi-chú trung-thực a-d** | **executed (hiện diện đủ)** | K.E(iii) 4 note nguyên ý; `fable-real.md:22-23,31-32` + `fable-clone.md:21,29-30`; runbook §2.1-bis note-block. (a) giữ đúng nấc "owner-gated tầng lệnh + kỷ-luật lead, KHÔNG code-enforced" — grep "code-enforced" toàn bộ = phủ-định |
| **Migration khoản 5** (gỡ marker · grep token cũ toàn repo kể cả persona) | **executed + reviewer-verified** | 12 persona `.claude/agents/*.md` = **0 hit** (SẠCH — ngược bài học hub "chỗ sót ở persona phụ"); grep-suite post-fix: `Test-Path` marker 4/4 hit đều dòng-🧊, "LUÔN top-model" ACTIVE=0; HISTORY (session-log/archive/diary/adap-report-body-cũ/dogfood-form S108) giữ nguyên văn |
| **Sàn 5-điểm §6** | **executed 5/5** | Reviewer Fable bảng-đối-chiếu: ①spec-file ✓ ②worker-theo-spec (bơm args, `hmw.js` không đọc file) ✓ ③chỉ-chạy-khi-owner-gõ ✓ ④vai-owner-gán ✓ ⑤lead-không-tự-ý (kể cả HMW-ON; `hmw.js:38-40` comment reword `tier:'fable'` chỉ trong lượt lệnh) ✓ |

## Tailored / phát-hiện-riêng / honest-caveat

- **Tailored form:** giữ TÊN 2 lệnh cũ `/fable-real|/fable-clone` (= lệnh-A/lệnh-B; H21 §6 "tên lệnh tự quyết") — đổi semantics toggle→per-invocation; spec-file đặt trong run-trace H10 sẵn có (`.claude/workflows/runs/<run-id>/` git-TRACKED → owner audit qua git, đúng mục-đích khoản ①); naming `spec-<tên-tính-năng>-<dd-mm-yyyy>.md`.
- **Phát-hiện-riêng #1 (boundary-gap M2):** lệnh-B × 2 vai monitor (`tooling-auditor`/`harvest-curator`) — 2 vai ∉ `hmw.js` VALID_ROLES (10) → ensemble fail-soft **default-subagent mất persona** (H19 2-vai-cố-định che edge này; roster-12 promise mở ra mới lộ). Xử: document limitation ở `fable-clone.md` + K.E(i); bổ sung VALID_ROLES = đổi code, **chờ anh quyết** (không tự sửa trong đợt docs-only). → **RESOLVED CÙNG PHIÊN:** anh-directed (AskUserQuestion S110) bổ sung 2 monitor → VALID_ROLES **12** đủ roster (`hmw.js:28-29`, node --check PASS; supersede điểm H6-design "monitor ngoài workflow" — monitor vẫn INFORM-only, lane RETURN-only).
- **Phát-hiện-riêng #2 (worker-đổi-fact M1):** worker Opus khi reword tự đổi "10 vai"→"12 vai" trong câu mô tả VALID_ROLES = sai fact code — reviewer Fable bắt, em-main fix. Lesson: worker-draft đụng CON SỐ về code → cross-check code thật trước commit.
- **Phát-hiện-riêng #3 (sweep-theo-token mù semantics M3):** acceptance "grep `Test-Path` ngoài 🧊 = 0" PASS trong khi ~16 cụm semantics-cũ chưa-đánh-dấu vẫn sống (nặng nhất: P5 "2 vai EXCLUDED" mâu thuẫn ROLE_VALID roster-12 TRONG CÙNG checklist) — đúng lớp lỗi broadcast §5 cảnh báo, bắt bởi reviewer-Fable đọc-semantics (không phải grep). Fix point-edit trọn.
- **Honest-caveat:** (i) "lead không tự ý" = **kỷ-luật + owner-gated tầng lệnh, KHÔNG code-enforced** — `hmw.js` không gate vai, đường `tier:'fable'` còn nguyên (đúng note-a broadcast); (ii) dogfood = **run-1 duy nhất** (chính lượt adopt này) — chưa có số-liệu N-run pipeline spec→worker (không claim); (iii) command `.md` sửa = **restart CLI mới ăn runtime** (registry hot-reload description ĐÃ thấy giữa phiên nhưng body-execution chưa re-verify — đồng bộ caveat ENV-DEPENDENT triage-S5); (iv) mark `RC-…17-46-35` (H19) = quyền anh — em đề xuất mark mới supersede, **CHƯA stamp, chờ anh** (P8).
- **#53 return-garble ×2 trong CHÍNH lượt này** (cả invest lẫn reviewer Fable-lane — đúng correlation reasoning-lane adap-request `2026-07-06-se-53-garble…`): **SendMessage-resume recover 2/2 sạch** — data-point mới củng cố mitigation-set đã gửi hub (S6 triage-reply đã ACCEPT codify).
