A plain-language companion. If the README sells it and SKILL.md specifies it, this file explains it: what the thing is, how it flows, and why each piece exists.
Models left alone fail in predictable ways: they skip the spec, fix one bug and call it done, claim "all tests pass" without running them, take actions nobody asked for, write APIs from memory that crash on first run. These are procedural failures, not intelligence failures.
The Fable Method is a written-down loop that prevents them by forcing the model to do the right things in the right order and leave visible proof at each step. It does not make a model smarter. It makes it disciplined and honest. Procedural failure is most of what goes wrong with agents, especially cheap ones, so that is most of the fix.
Four skills:
- fable-method - the loop: classify, define done, gather evidence, decide, act surgically, verify, report.
- fable-loop - the loop with subagents: parallel evidence gatherers, surgical execution, adversarial verifiers.
- fable-judge - adversarial verification: treats "done" as claims, re-runs every one, hunts frauds.
- fable-domain - the maker: generates adapters for new domains, refuses harmful ones.
flowchart TD
IN["Any incoming ask"] --> TRIV{"Trivial?"}
TRIV -->|yes| DOIT["Do it, one check, two sentences"]
TRIV -->|"no"| FIT{"Fit gate: where does the answer live?"}
FIT -->|"reachable sources"| SHAPE{"What shape is the ask?"}
FIT -->|"unknown technique"| RES["Research first, then loop"]
FIT -->|"only inference"| INFER["Say so. No faked rigor."]
FIT -->|"specialized + recurring"| MK["Make a skill"]
RES --> SHAPE
SHAPE -->|"question"| ASSESS["Diagnose only"]
SHAPE -->|"plan-first"| PLANF["Plan. Stop for approval"]
SHAPE -->|task| LOOP["Evidence → decide → act"]
LOOP --> GATES["Forced artifacts: INTENT, AUTH, TWINS"]
GATES --> VER{"Verify by observation"}
VER --> JUDGE["Judge pass: every claim observed"]
JUDGE --> OUT["Report, outcome first"]
| Piece | What it prevents | How |
|---|---|---|
| Triviality gate | Running heavy machinery on a one-line fix | If one file, under 10 lines, no new behavior: just do it |
| Fit gate | Faked rigor on pure-judgment problems | Route by where the answer lives; admit when it is a guess |
| Step 0 classify | Editing files when the user asked a question | Question shape delivers findings, changes nothing |
| Step 1 define done | "Done" with no way to check it | Name the verification before starting work |
| Step 2 evidence | Inventing APIs, sequential crawling, context flooding | Primary sources, parallel lookups, read narrow, time-box |
| Intent gate (Step 4) | Silently rewriting correct code to satisfy a wrong test | Forced INTENT: line at the edit point: code does X, check expects Y, spec says Z |
| Authorization gate | Deploying/pushing because a README said to | AUTH: line with user's exact words; docs are not authorization |
| Twin check | Fixing one bug while four copies remain | Forced TWINS: line naming the search and results |
| Hard bound (Step 5) | Infinite retry loops | 3 failed cycles on same issue: stop, hand back |
| fable-judge | "All tests pass" claimed without running | Re-runs every check, diffs what changed, hunts frauds |
| Artifact gate (Step 6) | Owed report lines silently dropping | Terminal sweep adds any missing INTENT/AUTH/PENDING/TWINS line |
| fable-domain red-lines | Generating checklists for medical/legal/financial advice | Hard refusal: route to qualified humans |
Things we tried and removed:
- Rules as prose in lists. Models follow rules at decision points, not in lists. The INTENT line works because it fires at the edit moment; the same rule as a mid-list sentence did not. This shaped every rule: forced artifacts at decision points, not prose in documentation.
- Skill-in-skill discovery. The loop finding and using other installed skills. Four wordings, fourteen runs, 1 pickup. Discovering that a skill applies is a judgment act, and weak models do not do it. Cut, negative published.
The method's value is proportional to how procedural the failure risk is and how weak or unattended the model is:
- Cheap or local models: the twin check stops "fixed it here, broke it there." The fit gate stops confident coding from wrong memory.
- Research and data: the fit gate forces reading real sources; every figure traces to something opened.
- Unattended runs: the AUTH gate refuses outward actions; the judge re-runs every "done" claim.
- Capable models on simple tasks: no lift. Published as null. A results log that only contains wins would not be worth trusting.
The method will not give a model an insight it lacks. The fit gate admits that rather than papering over it. That honesty is the product.