- Owner 3-quyết: (30) JUMP để-nguyên-theo-nhịp · (31) 4 persona +NEVER-block (restart ĐÃ THOẢ) · (32) vòng 1→5 AUTO — lô consent gỡ 9 site (5 H1 + ring1-tự-bắt + 3 trio; E-013 EXT) - Memory-ops TRỌN: A1-A4/D1/D2/R1/B-series — A7 392/392 · mfe 20/20-100% lần đầu · lead-gap drain 24.728→16.485B · strike-ledger + WARN-latch (-Ack = owner-action) - V4 sleep AUTO đầu: 1 shard thật/16 KÊU · ring4 đầu-đời TRƯỢT-4/5 → 4 fix gist (scribe sub-ring4-close vì return-only) - Thư model re-stamp: 59ce1d0f → 9c909007 published (G-024a) — adap-report Đính-chính @S152 + sweep 13 bề-mặt LIVE - Bookend @close: stale 6 FLAG + gap 2 FLAG → vá 8/8; ring2 8/8 ĐẠT (4-A pin-bản-cắt → slot 33) · ring1 48Đ/5T/59-claim - M9 13 đơn-vị diary (3 S151-deep hồi-tố) · #53 ×10-chắc → tally 60-cận-dưới + errata subject-1b85713 - Session-log 2 run= + completeness-gate 5-vòng ĐẠT · HANDOFF segment S152 (carry 3-đóng/3-mới/23-giữ; slot 33/34) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 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 (canonical → STATUS §Sub-agents; B1 — KHÔNG hardcode số) (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-stale-auditor · lead-gap-auditor · harness-eval · harness-refine · harness-audit · ring1-audit · ring2-audit · ring4-audit (round-KIỂM ×3 S145).
- 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 — 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-stale-auditorsoi). Lịch-sử: 10→12 (S110, +2 monitortooling-auditor/harvest-curator) → 12→14 (S121 W2, +2 monitor H24lead-stale-auditor/lead-gap-auditor) → 14→17 (S141, +3 trio-memoryharness-eval/harness-refine/harness-audit— read-only INFORM-only, TUẦN TỰ eval→refine→audit) → 17→20 (S145, +3 round-KIỂMring1-audit/ring2-audit/ring4-audit— C4/C4b TÁCH mỗi-vòng-1-con, AUTO fire-after-measure). (🧊 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.
🔴 ĐÓNG GÓI LANE THEO TRẦN LƯỢT (C2 — adap đợt-11 S144, có repro)
Sự cố gốc wf_491c05a8-6dc (2026-07-22): 5 lane investigator-codebase (maxTurns: 20) — 3 CHẾT, ~490K token đốt, 0 sản phẩm.
Đo từ transcript: lane sống dùng 21/23 tool-use · lane chết dùng 28/34/35 ⇒ cháy lượt khi vẫn đang đọc, chưa tới bước ghi.
🔴 Cơ chế phạt NGƯỢC ĐỜI: lane càng cẩn thận càng chắc chết. Lỗi ở LỆNH của lead, không ở lane — lead giao lane-5 mười file với trần 20 lượt.
3 luật đóng gói (áp mọi /fable-clone từ nay):
- ≤3 file/lane. Lane phải đọc nhiều hơn ⇒ tách lane, đừng nới việc. 🔸 Số 3 = AI tự đặt, đảo được (không phải số owner).
- 🔴 ÉP GHI KHUNG RỖNG Ở LƯỢT 1-2 — trước khi đọc bất cứ gì. Rồi append dần.
Vì sao "dặn ghi sớm" KHÔNG đủ: prompt run-hỏng đã ghi "ghi NGAY khi tìm ra từng cái", lane vẫn tự xếp việc ghi sau việc đọc ⇒ "ngay" của lead rơi sau vạch chết.
Bằng chứng đối chứng: run review
wf_301d3943-144đổi đúng chỗ này (ép khung rỗng lượt 1-2,maxTurns: 25) ⇒ 3/3 lane sạch, 0 chết. Cùng harness, cùng model, khác thứ tự ghi. - Nêu trần lượt NGAY ĐẦU prompt + phân bổ gợi ý (đọc → verify → chốt), để lane tự lượng sức.
Acceptance (đã siết theo R3 — bỏ đếm-chữ):
- ❌ KHÔNG dùng
grep -c 'trần lượt'làm tiêu chí (gõ đúng cụm chữ là đạt = Goodhart thuần). - ✅ Đo ở run KẾ: 0 lane chết.
- 🔸 Khai hạn chế thật:
hmw.jsC1 chỉ biết lane trảnull, KHÔNG phân biệt được NGUYÊN NHÂN ⇒ mệnh đề "chết vì cháy lượt" hiện chưa đo được bằng máy, phải mở transcript đếm tool-use.
🔴 KHUÔN LABEL 4 THÀNH-PHẦN (C3 — spawn-label:22-27, BINDING)
Mọi spawn (Agent-tool description · hmw label · monitor · cổng review) mang đủ 4 thành-phần:
{nhóm|Vòng-N|Core|Gate|WF} {vai} {pha/wave} s{N}
Ví dụ đang chạy: Gate reviewer anchor s144 (24 ký tự) · Vòng-3 harness-eval w1 @start s144.
- Vừa panel ~≤40 ký tự; xung đột thì đủ-thành-phần thắng ngắn-gọn (
:25). - Một khuôn duy nhất toàn repo (
:26). - Áp từ phiên kế (
:51) — spawn trước đó giữ nguyên làm vết, KHÔNG sửa lùi (khuôn hub:43).
Acceptance (siết theo R3 — thêm control + neo artifact):
- ✅ Negative-control: cắm 1 label thiếu {pha·phiên} → phép đọc-lại PHẢI TRƯỢT. Không trượt = thước mù.
- ✅ Neo artifact: label phải xuất hiện trong
runs/<id>/run.md— panel là ephemeral,grepkhông truy được ⇒ không neo thì không tái lập, không audit được. - ❌ Bỏ tiêu chí "chọn 3 task nói được {ai·gì·nhịp·phiên}" đứng một mình — đó là tự chấm chính label mình vừa viết, n=3, không artifact.
🔴 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 — worker-tier-pin S124 che leak qua frontmatteropus(xem :57), hết thời all-inherit ăn-theo-lead). - 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 GIỮ (đổi nấc S124) (hmw.js resolveModel(): if (tier==='fable'||tier==='opus') return tier):
- 🔴 N×Fable-risk NAY được PIN che: frontmatter đổi
inherit→opus(worker-tier-pin S124) ⇒ thiếutier→ role-có-frontmatter →model: opus→ lane = opus (tier-2), KHÔNG còn ăn lead. Vậy dù lead=Fable, lane vẫn opus (KHÔNG còn N×Fable). ⇒tier:'opus'nay = belt-and-suspenders (explicit-is-better), KHÔNG còn là chốt-chặn DUY-NHẤT như thời all-inherit. - ⇒ Lỗi cũ 🟥 reviewer @S108 (lead=Fable → ensemble N×Fable) = đã vá bằng pin, giữ mô-tả làm lịch-sử.
- 🔴 Lỗ THẬT còn lại =
tier:'fable'của/fable-real(KHÁC frontmatter opus) → H23-precedence (xem dưới): nếu frontmatter thắng,/fable-realKHÔNG lên Fable được.
✅ ĐÃ VERIFY S126 (2026-07-16) — precedence spawn-param ⟂ frontmatter (H23 §2(2); flip từ "CHƯA VERIFY")
Đo thật (run wf_f960dae2-fa0, phiên đầu sau restart kích-hoạt frontmatter S124): lane reviewer (frontmatter opus) + tier:'fable' → resolved claude-fable-5 ⇒ SPAWN-PARAM THẮNG hard-pin ⇒ tier:'fable' của /fable-real KHÔNG NO-OP — escalate Fable ĐƯỢC (hmw.js:44-51 mang kết-quả + caveat cùng nội-dung). (tier:'opus' trùng frontmatter, vô-hại như cũ.)
Control: lane no-tier → claude-opus-4-8 DÙ lead=Fable ⇒ pin ăn runtime (loại inherit-lead). Caveat GIỮ: retrospective (không hứa spawn tương-lai — PA-2b) · ALIAS-pin only (hub full-id KHÔNG covered) · fix#8a vẫn mở (param từ-chối full-id? chưa thử). Evidence: runs/2026-07-16-S126-adap-spec-execute/runtime-verify-synthesis.md.
PA-2 (anh chốt O1) = 2 lớp GIÁN-TIẾP bổ-trợ: PA-2a hằng-số TIER2_EXPECTED_FULL_ID = 'claude-opus-4-8' (hmw.js:53) + PA-2b scripts/spawn-model-audit.ps1 so resolved-vs-expected.
⚠️ 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 = DEFAULT Opus 5 MAX (thư
9c909007@S149 (re-stamp 07-25 G-024a; pre59ce1d0f); cao hơn = anh/modelhoặc/fable-real— 🧊 idiom owner-choice-per-session superseded-VALUE); 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.