FILE 4 fable-clone.md -- GAP#6: lane ensemble PHAI mang tier:'opus'.
Thieu => inherit lead => lead=Fable thanh N x Fable = dot quota gap N lan VA pha dung
ly-do lenh ton tai (ensemble RE de THAY 1 luot Fable dat). lead=Opus thi tier:'opus'
≡ inherit => loi VO HINH, chi lo khi Fable UP (dung loi reviewer bat @S108).
+ khai CHUA VERIFY precedence spawn-param vs frontmatter (H23 §2(2)) => DEFER phien lead=Fable.
+ grep tier:'opus' = DIEU-KIEN CAN, KHONG DU (do CHU trong file, Goodhart-able 100%).
FILE 5 agents/README.md -- bo SO khoi 8 cho (khong doi so: doi thi roster ke lai stale).
File nay chinh la VI-DU minh-hoa cho class view-stale-role-desc trong lead-view-auditor.md:47.
+ canh-bao bay glob: `ls .claude/agents/*.md` bat LUON README.md => thua 1 (R2-C1).
+ khai: doi roster = doi 2 BE-MAT DOC-LAP (agents/*.md -> registry | VALID_ROLES -> agentType).
FILE 6 fable-real-runbook.md -- 14 hit (lead bao 8 = SAI, xem duoi). + hmw.js:22-30 -> :22-36 (stale line-ref).
FILE 7 sleep-recovery-memory-l2.md -- `all` tu hardcode 9 -> DAN-XUAT TU DIA (do ra 10).
Danh-sach cung 9 da ROT office-document (them S107) suot tu do. Tro-treu: chinh doc do
da ghi "luon quet dia that" cho con-so 4/9 ngay duoi, nhung hardcode roster phia tren.
FILE 8 workflows/README.md -- TRI-ACCEPT vao ORPHAN-AUTHORITY (:19-20) + B1 pointer.
FILE 9 ACTIVE-MARKS.md -- chu-thich cho mark RC-...20-42-01 (anh CHOT: giu ban ky nguyen ven,
them chu-thich; P4/P8). "roster 12" trong than mark = anh chup luc ky, KHONG phai gioi-han.
+ STATUS.md:25 -- STALE THAT trong chinh file CANONICAL: row ghi | Sub-agents | 14 | nhung
narrative CUNG DONG ghi "ca 12 sub model: inherit" (W2 sua row, bo sot narrative).
Bay mega-line TAI HIEN: grep -c = 1 vs grep -o|wc -l = 2.
+ spec v3-PATCH -- SUA ACCEPTANCE FIX#6 (ban goc BAT-KHA-THI, tien-le WAL:29):
"0 hit song" do CA phan CO Y khop => implementation DUNG van truot. Lan thu BA cung ho
R2-C1 (ls=14) + R3-M3 (TOTAL>=46). Acceptance moi = disposition TUNG DONG theo 6 nhom.
Sweep that sau W3: 14 hit song, 0 cai la stale-can-va (vi-du co chu-dich / trich lich-su /
ban da ky / so tam / W5 chua toi luot / canonical history-delta).
LEAD TU BAT 2 LOI DEM (deu o truc dem-ve-viec-minh, -> adap-report):
(a) bao "fable-real-runbook 8 hit" -- that la 14; lay output `head -40` DA BI CAT lam so tong.
(b) bao "do lai tai-hien CHINH XAC du-bao FIX#4" roi lay trung-khop lam cho dua, trong khi
CA FIX#4 LAN LEAD deu dang do TEN FILE. Con-so dung, huong do sai.
=> khop feedback_meta_count_selfcoverage_blindspot: lead DO tot, lead DEM VE MINH thi sai.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.7 KiB
/fable-clone — ENGINE-ĐẮT LỆNH-B: 1 vai × ENSEMBLE tier-2 (per-invocation, H21)
Cặp
/fable-real(lệnh-A single top-model). 🔴 restart Claude Code sau khi tạo/sửa (no hot-reload). Adopt H21 S110 (2026-07-11) — supersede semantics toggle-marker H19 (S101). KHÔNG còn mode-ảo mặc-định để "về", KHÔNG còn marker: cả 2 lệnh giờ = engine-đắt per-invocation, chỉ SỐNG trong lượt anh gõ. 📘 Runbook:docs/governance/fable-real-runbook.md· 🔧 Guard §K:docs/governance/harness-11-engine.md§K (engine).
Vai + đề-bài lượt này: $ARGUMENTS
🔴 Semantics per-invocation (H21 ①/②)
/fable-clone <vai> <đề-bài>= vai anh gán chạy ENSEMBLE tier-2-mạnh-nhất = N lane đa-lăng-kính CÙNG 1 VAI (qua HMWparallel) + em-main refute + synthesize (P3/P4) = "bản sao Fable". Rẻ quota top-model, giữ tầng phản-biện chống-đồng-thuận-sai.- Hiệu-lực CHỈ lượt đó — KHÔNG còn "về mặc-định", KHÔNG marker, KHÔNG persist (H19 mode thật/ảo đã retired H21). Lượt sau muốn ensemble = gõ lại lệnh.
🔴 Vai BẮT BUỘC ∈ roster 14 (H21 ②)
investigator-codebase · investigator-api · implementer-backend · implementer-frontend · frontend-designer · database-agent · office-document · test-specialist · reviewer · cicd-monitor · tooling-auditor · harvest-curator · lead-view-auditor · lead-omission-auditor.
- Thiếu
<vai>HOẶC vai ngoài roster → em main hỏi lại anh 1 dòng, KHÔNG tự chọn vai. - ✅ VALID_ROLES đủ roster 14 — canonical đếm ở
docs/STATUS.md§Sub-agents (B1 derived-trỏ-canonical; KHÔNG chép số ở đây khi roster đổi — đó chính là classview-stale-role-descmàlead-view-auditorsoi). Lịch-sử: 10→12 (S110, +2 monitortooling-auditor/harvest-curator) → 12→14 (S121 W2, +2 monitor H24lead-view-auditor/lead-omission-auditor). (🧊 limitation cũ 10-vai + H6-design "monitor ngoài workflow" superseded; monitor vẫn INFORM-only, lane RETURN-only.) - 🔒 Honest-note (a/b): bảo-đảm = owner-gated tầng lệnh + kỷ-luật lead, KHÔNG code-enforced; lệnh/alias = cách anh gán vai nhanh, hệ KHÔNG tự chọn vai.
🔴 Spec-file 3-mục BẮT BUỘC mỗi run (H21 ①)
Mỗi lần chạy engine-đắt PHẢI kết-tinh 1 spec theo pipeline propose → verify → ghi → thực-thi:
- Engine propose-only — vai chạy ensemble đề-xuất [đề-bài · cách làm · checklist]. Engine KHÔNG tự ghi.
- Lead verify — lead soi + chỉnh (P3/P4 refute + synthesize N lane).
- Lead ghi file
.claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md— 3 heading cố-định: ① Tính-năng/đề-bài · ② Cách implement · ③ Checklist (vai + deliverable + acceptance ĐO ĐƯỢC). - Worker thực-thi THEO spec — spec bơm QUA ARGS/prompt (worker KHÔNG tự Read file).
- 🔒 Honest-note (c): file spec do LEAD ghi SAU khi verify — engine KHÔNG tự ghi.
- 🔒 Honest-note (d): run chấm/verify CŨNG sinh spec-file (kế-hoạch xử issue = "cách làm" cần kết-tinh).
🔴 Cờ args.run — RUN-TRACE BẮT BUỘC khi ≥3 lane (Sàn-1 H22, cơ-khí-hoá S121 W2)
🔴 /fable-clone ensemble hầu như LUÔN ≥3 lane (run S119 = 5 lane) ⇒ cờ này gần như LUÔN bắt buộc.
Trước khi gọi Workflow hmw, lead PHẢI @P1:
- Scaffold
.claude/workflows/runs/<run-id>/(TRACKED) +run.mdkèm## taskList snapshot. - Truyền
args.run = { name:'<run-id>', dir:'.claude/workflows/runs/<run-id>' }.
Thiếu cờ + ≥3 task ⇒ hmw.js THROW (STOP-HARD), KHÔNG fail-soft. Vì sao gate: script chạy JS-sandbox KHÔNG filesystem ⇒ tự nó không tạo được folder ⇒ trước S121 sàn này chỉ là kỷ-luật người (đo thật @S119: git grep args.run .claude/commands/ = 0 hit ⇒ 4/4 wrapper KHÔNG cờ ⇒ sàn danh-nghĩa). Hậu-quả thật khi thiếu: chết giữa run ⇒ per-turn returns mất theo phiên, chỉ file trên đĩa sống sót ⇒ /tiep §4 không có vật-liệu cắt-gọt ⇒ chạy lại TỪ ĐẦU (S118 raw-Agent 7-spawn ⇒ 0 run-folder).
🔸 Khai thật: gate chỉ phủ đường hmw.js. Ngưỡng "hoặc ước >5 phút" KHÔNG cơ-khí-hoá được (script không đo trước thời-lượng) ⇒ phần đó vẫn là kỷ-luật lead. raw Workflow/Agent tool = kẽ CÒN-LẠI, đi thẳng không qua file này ⇒ mất writeGuard + run-trace.
🔴 Guard ensemble (§K engine — 3 floor-fidelity)
- ảo-ensemble = N lane CÙNG 1 vai phán-quyết (multi-lens trên 1 vai), KHÔNG mixed-roster fan-out (
hmw.jsVALID_ROLES = roster đầy-đủ, canonical →docs/STATUS.md§Sub-agents; KHÔNG gate vai — all-inherit che leak tới khi Fable về + phân-tầng). - N lane RETURN-only; em-main single-writer (B3) ghi 1 MEMORY entry đúng vai đó + gắn nhãn engine đã dùng (hmw SCHEMA
memoryDeltaKHÔNG field engine → em-main stamp @P3 harvest). - Một vai = một trí-nhớ dù N lane (chống AS-10 fragment N-lane).
🔴 GAP#6 — lane ensemble PHẢI mang tier:'opus' (KHÔNG để inherit)
🔴 Lệnh này tự định-nghĩa mình là "ENSEMBLE tier-2" ⇒ lane BUỘC phải chạy tier-2, KHÔNG phải tier của lead.
taskList: [ { role:'<vai anh gán>', tier:'opus', label:'lens-1', prompt:'…' },
{ role:'<vai anh gán>', tier:'opus', label:'lens-2', prompt:'…' }, … ]
Vì sao BẮT BUỘC (hmw.js:63-64 resolveModel(): if (tier==='fable'||tier==='opus') return tier):
- Thiếu
tier⇒ role-có-frontmatter →model: inherit→ lane ăn model của LEAD. - ⇒ lead = Fable thì ensemble 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 tier-2 RẺ để thay 1 lượt Fable đắt; cặp
/fable-realmới là đường single-top-model). - ⇒ lead = Opus thì
tier:'opus'≡ inherit ⇒ KHÔNG phân-biệt được ⇒ lỗi này vô-hình ở phiên lead=Opus và chỉ lộ khi Fable UP. Đúng lỗi 🟥 reviewer bắt @S108.
🔴 CHƯA VERIFY — precedence spawn-param ⟂ frontmatter (H23 §2(2), khai bắt-buộc)
Ở 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 (hmw.js:46-49 mang cùng ghi-chú này).
🔴 Nếu frontmatter thắng ⇒ TOÀN BỘ fix GAP#6 = NO-OP ⇒ floor-2 vẫn thủng khi Fable UP.
Phép thử phân-biệt được (H23 §6 #3): chạy 1 lane tier:'opus' KHI lead=Fable → đọc model THỰC-TẾ resolve → lệch ⇒ báo anh. ⚠️ DEFER tới phiên lead=Fable — lead=Opus thì 2 nhánh ra cùng kết-quả. 🔴 Khai thẳng: CHƯA test, đừng bán quá nấc.
Đang có (PA-2, anh chốt O1) = 2 lớp GIÁN-TIẾP, KHÔNG thay được phép thử trên: PA-2a hằng-số TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8' (hmw.js:50) + PA-2b scripts/spawn-model-audit.ps1 so resolved-vs-expected. 🔸 Neo-tại-spawn = bất-khả-thi (param chỉ nhận enum alias) — và chính mệnh-đề đó cũng CHƯA thử truyền full-id xem có bị từ-chối không (fix#8a).
⚠️ Grep
tier:'opus'≥1 hit = ĐIỀU-KIỆN CẦN, KHÔNG ĐỦ — nó chỉ đo CHỮ trong file, không đo runtime ⇒ Goodhart-able 100%.
🔴 Floor model-tier v3 + lead-discipline
- Lead = frontier-class do ANH chọn per-session {Fable 5 | Opus 4.8 — 1M MAX}; CẤM Sonnet/Haiku-class ghế lead. Engine-đắt per-invocation = đường DUY NHẤT nâng 1 vai lên hạng-nhất.
- ⚠️ Lead KHÔNG tự ý gọi engine-đắt — kể cả khi HMW-mode ON; chỉ chạy khi anh gõ lệnh.