← get-fableCONTENT HISTORY

Update to get-fable

Snapshot Sep 30, 2026 · 23:14 UTC · version 1.5.1

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Verify complex code changes against independent mathematical oracles, derived specifications, headless browser environments, and isolated sandbox states. Use when deriving independent verification oracles, testing algorithms against reference models, verifying UI with headless browsers, or testing state transitions in sandboxes — even if the user does not explicitly say \"fable-simulator\" (e.g. \"simulate this workflow\", \"verify with an independent oracle\", \"headless browser check\", \"derive a test oracle\"). Do NOT use for simple unit test runs (use fable-verify).",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 422
    },
    {
      "relative_path": "evals/scenarios.json",
      "size_in_bytes": 4104
    },
    {
      "relative_path": "examples/independent-oracle-verification.md",
      "size_in_bytes": 220
    },
    {
      "relative_path": "references/oracle-derivation-guide.md",
      "size_in_bytes": 1317
    },
    {
      "relative_path": "references/oracle-independence-and-simulation-boundaries.md",
      "size_in_bytes": 2632
    },
    {
      "relative_path": "skill.package.json",
      "size_in_bytes": 483
    },
    {
      "relative_path": "templates/oracle-contract.template.md",
      "size_in_bytes": 720
    }
  ],
  "name": "fable-simulator",
  "skill_md_contents": "---\nname: fable-simulator\ndescription: \"Verify complex code changes against independent mathematical oracles, derived specifications, headless browser environments, and isolated sandbox states. Use when deriving independent verification oracles, testing algorithms against reference models, verifying UI with headless browsers, or testing state transitions in sandboxes — even if the user does not explicitly say \\\"fable-simulator\\\" (e.g. \\\"simulate this workflow\\\", \\\"verify with an independent oracle\\\", \\\"headless browser check\\\", \\\"derive a test oracle\\\"). Do NOT use for simple unit test runs (use fable-verify).\"\nversion: 1.3.0\npack: system\ninputs:\n  - verification_target\nrequires:\n  - independent_oracle\nproduces:\n  - oracle_evidence\n  - causal_verification_matrix\ngates:\n  - oracle_independent\n  - untracked_files_preserved\nfallback: fable-verify\nmutatesWorkspace: false\nparallelSafe: false\nneural_links:\n  precursors:\n    - fable-verify\n  continuations:\n    - fable-verify\n    - fable-review\n  lateral_peers:\n    - fable-verify\n  recovery: fable-recover\n---\n\n# Fable Simulator\n\nCreate an independent model of expected behavior and compare it with the candidate without pretending the simulation itself is production evidence.\n\n## Mission\nSimulation is useful when ordinary tests risk sharing the same assumptions as the implementation, when a UI/agent flow needs controlled playthrough, or when failure injection can expose paths that are hard to reproduce safely.\n\nThe Skill must preserve a hard boundary between **simulated/oracle evidence** and **real runtime verification**.\n\n## Activate When\n- an algorithm/rewrite needs an independently derived oracle;\n- a contract is implicit across callers and needs reconstruction;\n- UI/agent state transitions benefit from scripted playthrough/failure injection;\n- testing destructive/rare conditions safely requires a model/sandbox;\n- differential testing between two independent implementations is valuable.\n\n## Do Not Activate When\n- normal tests/runtime evidence already proves the claim cheaply;\n- the proposed oracle is derived from the same code/assumptions under test;\n- simulation would be reported as proof that an external production system actually behaved that way.\n\n## Simulation Classification\n| Mode | Independence requirement |\n| --- | --- |\n| Golden fixtures | fixture expected outputs come from trusted contract/observations |\n| Reference implementation | independently written/maintained logic |\n| Differential provider/model | separate implementation/model with blinded oracle |\n| State-machine simulation | transitions/invariants defined from product contract |\n| Failure injection | controlled faults with explicit modeled assumptions |\n| UI playthrough | browser actions + observable DOM/network/runtime evidence |\n\n## Protocol\n### Stage 1 — Define the claim and oracle independence\nState what candidate behavior is being checked and why the oracle does not simply repeat candidate logic.\n\nList shared assumptions. If a shared assumption could cause both candidate and oracle to be wrong identically, record that coverage gap.\n\n### Stage 2 — Derive contract from independent sources\nUse public interfaces, callers, specs, historical golden outputs, primary docs, or separately maintained reference behavior. Avoid reading implementation details solely to recreate the same algorithm.\n\n### Stage 3 — Build representative and edge corpus\nInclude normal, boundary, invalid, stateful, adversarial, and failure cases relevant to the claim. Preserve user/untracked workspace files and run in isolated temp/sandbox locations where possible.\n\n### Stage 4 — Execute candidate and oracle separately\nCapture inputs, outputs, errors, side effects/state transitions, timing only when required, and tool/environment identity.\n\n### Stage 5 — Compare semantically\nNormalize only differences that the contract declares irrelevant. Do not normalize away a real behavioral difference just to reach zero diff.\n\nFor UI, compare causal rows:\n`action → expected observable → actual observable → evidence`\nnot pixels alone unless pixel fidelity is itself the contract.\n\n### Stage 6 — Triage divergence\nA mismatch means one of:\n- candidate wrong;\n- oracle wrong/stale;\n- contract ambiguous;\n- normalization invalid;\n- environment differs.\n\nDo not automatically \"fix candidate to oracle\" until the source of truth is established.\n\n### Stage 7 — Mark evidence scope\nReport simulation/oracle evidence distinctly. Hand off to `fable-verify` for real runtime/package/environment proof where the claim requires it.\n\n## Decision Rules\n- An oracle copied from candidate implementation is self-confirming and invalid.\n- A second LLM is not automatically an independent oracle if it receives the candidate answer or hidden expected output.\n- Golden fixtures need provenance; unexplained fixtures can encode old bugs.\n- UI screenshots without interaction/state evidence are weak for functional causality.\n- Failure injection proves behavior under the modeled fault, not that real infrastructure fails exactly that way.\n- Zero diff across a narrow corpus is not universal correctness; state coverage explicitly.\n- Never modify/delete untracked user files to make simulation deterministic.\n\n## Invariants\n- Oracle independence and shared assumptions are explicit.\n- Simulation evidence is labeled as simulation.\n- Input corpus and normalization are reproducible.\n- User/untracked workspace state is preserved.\n- Divergence is diagnosed before deciding which side is wrong.\n- Real-world claims receive real verification when required.\n\n## Failure Taxonomy\n### Tautological oracle\nOracle reuses candidate implementation/answer. Redesign independently.\n\n### Stale oracle\nReference behavior no longer matches accepted contract. Re-ground oracle before judging candidate.\n\n### Ambiguous contract\nCandidate and oracle differ but both are plausible. Route to plan/research rather than choose arbitrarily.\n\n### Over-normalization\nComparison strips a meaningful difference. Narrow normalization to contract-declared irrelevant fields.\n\n### Simulation/reality confusion\nSimulated pass is used as production/runtime proof. Downgrade claim and hand to verify/run.\n\n### Workspace contamination\nSimulation writes into real user state. Move to isolated sandbox and restore owned mutations only.\n\n## Anti-Patterns\n- implementing the oracle by copying candidate code;\n- giving an LLM oracle the expected answer;\n- demanding 100% zero diff without representative corpus reasoning;\n- treating screenshots as complete UI verification;\n- normalizing every mismatch until green;\n- claiming external service behavior from a fake;\n- deleting untracked files to reset simulation;\n- changing candidate immediately on any oracle mismatch.\n\n## Simulation Packet\n```text\nClaim:\nOracle type/source:\nIndependence + shared assumptions:\nCorpus/failure injections:\nCandidate environment:\nComparison/normalization:\nDivergences:\nOracle validity decision:\nSimulation verdict:\nReal evidence still required:\n```\n\n## Completion Criteria\nSimulation completes when:\n- oracle independence is credible and documented;\n- corpus covers the important contract dimensions;\n- candidate/oracle comparisons are reproducible;\n- divergence is classified instead of blindly resolved;\n- workspace remains safe;\n- evidence is labeled narrowly and handed to real verification where needed.\n\n## Progressive Resources\n- Deep guide: `references/oracle-independence-and-simulation-boundaries.md`\n- Existing guide: `references/oracle-derivation-guide.md`\n- Example: `examples/independent-oracle-verification.md`\n"
}

SHA-256 of public snapshot: d61c4cc2493ca301b7760a1dd48549b2a28395f028fa5a42eefe4d4de1f25561