fable-simulator について
fable-simulatorは、独立した動作モデルを作り、候補実装と比較するテスト用Skillです。暗黙の契約、状態遷移、まれな障害を扱い、シミュレーションの証拠と実環境での検証を明確に分けます。
主な機能
- 01独立した期待動作モデルの構築
- 02境界・障害テストコーパスの作成
- 03候補実装とオラクルの個別実行
- 04契約に基づく結果と状態変化の比較
- 05シミュレーション証拠と実行時検証の区別
活用シーン
- 01アルゴリズム改修用の独立オラクル作成
- 02UIやエージェントフローの状態遷移確認
- 03再現困難な障害条件の安全なモデル化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ immamdouhaboammar/ get-fable --skill fable-simulatorインストール後、Claude Code で/fable-simulatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
skill.package.jsonagents/openai.yamlevals/scenarios.jsonexamples/independent-oracle-verification.mdreferences/oracle-derivation-guide.mdoracle-independence-and-simulation-boundaries.mdtemplates/oracle-contract.template.md詳細
Fable Simulator
本番環境での証拠であるかのように装うことなく、期待される動作の独立したモデルを作成し、候補と比較します。
ミッション
通常のテストでは実装と同じ前提を共有するおそれがある場合、UI/エージェントのフローを制御された手順で実行する必要がある場合、または障害注入によって安全に再現しにくい経路を明らかにできる場合、シミュレーションが役立ちます。
このスキルでは、シミュレーション/オラクルの証拠と実際のランタイム検証との間に明確な境界を維持する必要があります。
次の場合に有効化
- アルゴリズム/書き換えについて、独立して導出したオラクルが必要な場合。
- 呼び出し元に暗黙の契約が存在し、その再構築が必要な場合。
- UI/エージェントの状態遷移に、スクリプト化された手順での実行/障害注入が有効な場合。
- 破壊的な条件やまれな条件を安全にテストするために、モデル/サンドボックスが必要な場合。
- 独立した 2 つの実装間での差分テストに価値がある場合。
次の場合は有効化しない
- 通常のテスト/ランタイムの証拠で、主張を低コストで立証できる場合。
- 提案するオラクルが、テスト対象と同じコード/前提から導出されている場合。
- 外部の本番システムが実際にそのように動作したことの証明として、シミュレーションを報告する場合。
シミュレーションの分類
| モード | 独立性の要件 |
|---|---|
| ゴールデンフィクスチャ | フィクスチャの期待出力は、信頼できる契約/観測に基づく |
| 参照実装 | 独立して作成/保守されたロジック |
| 差分プロバイダー/モデル | オラクルをブラインド化した別個の実装/モデル |
| 状態機械シミュレーション | プロダクト契約に基づいて定義された遷移/不変条件 |
| 障害注入 | 明示的にモデル化された前提に基づく制御された障害 |
| UI の一連の実行 | ブラウザー操作と、観測可能な DOM/ネットワーク/ランタイムの証拠 |
プロトコル
ステージ 1 — 主張とオラクルの独立性を定義する
どの候補の動作を検証するのか、またオラクルが候補のロジックを単に繰り返すものではない理由を明示します。
共有されている前提を列挙します。共有された前提が原因で候補とオラクルの両方が同じように誤る可能性がある場合、そのカバレッジの不足を記録します。
ステージ 2 — 独立した情報源から契約を導出する
公開インターフェース、呼び出し元、仕様、過去のゴールデン出力、一次資料、または別個に保守されている参照動作を使用します。同じアルゴリズムを再現するためだけに実装の詳細を読み解くことは避けてください。
ステージ 3 — 代表的なケースとエッジケースのコーパスを構築する
主張に関連する通常、境界、無効、状態依存、敵対的、障害のケースを含めます。ユーザーのファイル/未追跡のワークスペースファイルを保持し、可能な限り隔離された一時ディレクトリ/サンドボックスで実行します。
ステージ 4 — 候補とオラクルを別々に実行する
入力、出力、エラー、副作用/状態遷移、必要な場合に限りタイミング、ツール/環境の識別情報を記録します。
ステージ 5 — 意味に基づいて比較する
契約上無関係と定められている差異のみを正規化します。差分をゼロにするために、実際の動作の違いまで正規化して消してはいけません。
UI では、ピクセルの比較だけではなく、因果関係に基づく次の行を比較します。ただし、ピクセルの忠実度自体が契約である場合は除きます。
action → expected observable → actual observable → evidence
ステージ 6 — 差異をトリアージする
不一致の原因は次のいずれかです。
- 候補が誤っている。
- オラクルが誤っている/古くなっている。
- 契約が曖昧である。
- 正規化が無効である。
- 環境が異なる。
根拠となる情報源を特定するまでは、「候補をオラクルに合わせて修正」してはいけません。
ステージ 7 — 証拠の範囲を明記する
シミュレーション/オラクルによる証拠は、実際のランタイム/パッケージ/環境の立証が必要な主張について、fable-verify に明確に引き継ぎます。
判定ルール
- 候補実装をコピーしたオラクルは自己確認的であり、無効です。
- 2 つ目の LLM が候補の回答や非公開の期待出力を受け取る場合、独立したオラクルであるとは限りません。
- ゴールデンフィクスチャには出所が必要です。説明のないフィクスチャには、古いバグが含まれている可能性があります。
- インタラクションや状態の証拠がない UI スクリーンショットは、機能的な因果関係を示す証拠として不十分です。
- 障害注入で証明できるのはモデル化された障害下での動作であり、実際のインフラがまさにそのとおりに障害を起こすことではありません。
- 限定的なコーパスで差分がゼロでも、普遍的な正しさを示すわけではありません。状態の網羅範囲を明示してください。
- シミュレーションを決定論的にするために、未追跡のユーザーファイルを変更または削除してはいけません。
不変条件
- オラクルの独立性と共通の前提を明示します。
- シミュレーションの証拠には、シミュレーションであることを明記します。
- 入力コーパスと正規化を再現可能にします。
- ユーザーのワークスペース状態と未追跡のワークスペース状態を保持します。
- どちらが誤っているか判断する前に、差異を診断します。
- 実環境についての主張には、必要に応じて実際の検証を行います。
失敗の分類
循環論法的なオラクル
オラクルが候補の実装や回答を再利用しています。独立した方法で再設計してください。
古いオラクル
参照動作が、現在受け入れられている契約と一致しなくなっています。候補を評価する前に、オラクルの根拠を改めて確認してください。
曖昧な契約
候補とオラクルは異なりますが、どちらも妥当な可能性があります。恣意的に選ばず、計画策定または調査に回してください。
過剰な正規化
比較によって、意味のある差異が取り除かれています。契約で無関係と明示されたフィールドに限って正規化してください。
シミュレーションと現実の混同
シミュレーションの合格を本番環境や実行時の証明として扱っています。主張の範囲を狭め、検証または実行に回してください。
ワークスペースの汚染
シミュレーションが実際のユーザー状態に書き込んでいます。隔離されたサンドボックスに移し、所有する変更のみを復元してください。
アンチパターン
- 候補のコードをコピーしてオラクルを実装する;
- 期待される回答を LLM オラクルに与える;
- 代表的なコーパスを根拠に検討せず、差分ゼロを 100% 求める;
- スクリーンショットを完全な UI 検証として扱う;
- すべての不一致を正規化して合格にする;
- 偽の仕組みから外部サービスの動作を主張する;
- シミュレーションをリセットするために未追跡ファイルを削除する;
- オラクルとの不一致があれば、すぐに候補を変更する。
シミュレーションパケット
Claim:
Oracle type/source:
Independence + shared assumptions:
Corpus/failure injections:
Candidate environment:
Comparison/normalization:
Divergences:
Oracle validity decision:
Simulation verdict:
Real evidence still required:
完了条件
シミュレーションは、以下を満たした時点で完了です。
- オラクルの独立性に信頼性があり、文書化されている;
- コーパスが重要な契約上の側面を網羅している;
- 候補とオラクルの比較を再現できる;
- 差異がやみくもに解決されるのではなく、分類されている;
- ワークスペースが安全に保たれている;
- 証拠の範囲が限定して明記され、必要に応じて実際の検証に引き継がれている。
段階的なリソース
- 詳細ガイド:
references/oracle-independence-and-simulation-boundaries.md - 既存のガイド:
references/oracle-derivation-guide.md - 例:
examples/independent-oracle-verification.md