Files
solution-erp/.claude/commands/fable-clone.md
pqhuy1987 010d12c5f8 [CLAUDE] Docs: S125 adap tien-de-vong4 — relabel token CAN-TREN + hash-verify byte-safe + dinh-chinh hub + fable-real review/invest checklist
- adap broadcast phuong-phap-dem-token (type:new): negative-control tai lap 3-probe (notice-N = heuristic char-dem, KHONG phai token that) -> relabel STATUS:41 + HANDOFF:5 x2 + do-token report ADDENDUM (dai [31K byte/4 - 70,9K notice] => lead-share [8,2-18,7]%)
- false-TAMPER RCA: PS5.1 Get-Content -Raw doc UTF-8-no-BOM bang ANSI -> va check-email/send-email byte-safe + verifier-suspect-first; stamp hub verify OK bang stamp_verify.py (exit-0)
- email dinh-chinh hub (58f5afd8, selftest exit-0 x2) + adap-report + adap-request hash-verify-byte-safe-decode + FYI 2 broadcast no-stamp
- STAGE-2: git mv 7 broadcast processed -> inbox/ai_infra/ (root sach)
- fable-real review+invest (vai compound reviewer+inv-cb): run-trace + spec 3-muc + checklist A-D cho hmw @Opus 4.8 MAX; va stale all-inherit fable-real.md:37 + fable-clone.md:43
- hook-curate inv-cb MEMORY 23,9->16,9KB moved-not-cut (14 dong + 2 digest -> archive/2026-07.md)
- h18 memory +sibling-test-2-chieu; monitor self-compact S125-start + counter tick=4

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 13:29:43 +07:00

9.2 KiB
Raw Blame History

description: /fable-clone <đề-bài> — ENGINE-ĐẮT LỆNH-B per-invocation (H21): 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 hmw.js parallel + em-main refute+synthesize) cho đề-bài đó — KHÔNG marker, KHÔNG mode persist. Thiếu/sai vai → em main hỏi lại anh 1 dòng, KHÔNG tự chọn. Cặp /fable-real. argument-hint: <vai ∈ roster 14> <đề-bài phán-quyết> — vd "reviewer rà commit X" · "investigator-codebase truy bug Y"

/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 HMW parallel) + 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à class view-stale-role-desclead-view-auditor soi). Lịch-sử: 10→12 (S110, +2 monitor tooling-auditor/harvest-curator) → 12→14 (S121 W2, +2 monitor H24 lead-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:

  1. Engine propose-only — vai chạy ensemble đề-xuất [đề-bài · cách làm · checklist]. Engine KHÔNG tự ghi.
  2. Lead verify — lead soi + chỉnh (P3/P4 refute + synthesize N lane).
  3. Lead ghi file .claude/workflows/runs/<run-id>/spec-<tên-tính-năng>-<dd-mm-yyyy>.md3 heading cố-định: ① Tính-năng/đề-bài · ② Cách implement · ③ Checklist (vai + deliverable + acceptance ĐO ĐƯỢC).
  4. 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:

  1. Scaffold .claude/workflows/runs/<run-id>/ (TRACKED) + run.md kèm ## taskList snapshot.
  2. 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.js VALID_ROLES = roster đầy-đủ, canonical → docs/STATUS.md §Sub-agents; KHÔNG gate vai — worker-tier-pin S124 che leak qua frontmatter opus (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 memoryDelta KHÔ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 inheritopus (worker-tier-pin S124) ⇒ thiếu tier → 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-real KHÔNG lên Fable được.

🔴 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 = opus (worker-tier-pin S124). Chưa ai test bên nào THẮNG (hmw.js:44-52 mang cùng ghi-chú này). 🔴 Nếu frontmatter (opus) thắng ⇒ tier:'fable' của /fable-real = NO-OP ⇒ KHÔNG escalate Fable được (owner dùng /model tay). (tier:'opus' thì trùng frontmatter, vô-hại.) Phép thử — NAY TESTABLE kể cả lead=Opus (đổi từ DEFER): vì frontmatter=opusfable, chạy 1 lane tier:'fable' → đọc model THỰC-TẾ resolve: fable=spawn thắng · opus=frontmatter thắng — phân-biệt được bất-kể lead. ⚠️ CHỜ RESTART kích-hoạt frontmatter mới rồi chạy (phiên kế). 🔴 Khai thẳng: CHƯA test lượt này, đừ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:53) + 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-đắtkể cả khi HMW-mode ON; chỉ chạy khi anh gõ lệnh.