Skip to content

feat: add fable as the escalation ceiling above opus in sdd - #113

Open
adthoms wants to merge 2 commits into
NeoLabHQ:masterfrom
adthoms:feature/sdd-fable-model-tier
Open

feat: add fable as the escalation ceiling above opus in sdd#113
adthoms wants to merge 2 commits into
NeoLabHQ:masterfrom
adthoms:feature/sdd-fable-model-tier

Conversation

@adthoms

@adthoms adthoms commented Sep 2, 2026

Copy link
Copy Markdown

Claude Code exposes fable (Claude Fable, the tier above Opus) as a model alias for sub-agents. The sdd plan-task and implement-task skills only know the haiku / sonnet / opus ladder, so --model fable is not accepted, the task-file Model: / Reviewer model: enums reject it, and an opus-tier failure has nowhere to escalate except back to the user.

This PR adds fable as a fourth tier at the top of the ladder. Automatic selection is unchanged.

What changes

File Change
plugins/sdd/skills/plan-task/SKILL.md --model accepts fable. Escalation ladder becomes haikusonnetopusfable, with fable as the ceiling. Tier-default and cap paragraphs state that fable is never auto-selected. Cross-provider table gains a fable row. Phase 5 agent lists and Judge 5 know the tier.
plugins/sdd/skills/implement-task/SKILL.md --model and MODEL_OVERRIDE accept fable. The "Ceiling" reasoning step names the ladder so a fix can escalate opusfable. Task-file enums accept fable.
plugins/sdd/agents/tech-lead.md Available-agent list, step template and Reviewer model: format accept fable. Tier-default paragraph, reviewer rule and a new anti-pattern row say fable is never pre-assigned. Cross-provider table gains a fable row.
docs/plugins/sdd/plan-task.md, docs/plugins/sdd/implement-task.md --model reference updated.
plugins/sdd/.claude-plugin/plugin.json, .claude-plugin/marketplace.json sdd 3.6.0 → 3.7.0, marketplace 3.10.0 → 3.11.0 via just set-version / just set-marketplace-version.
skills/, agents/, antigravity/, gemini-extension.json Regenerated with just sync-provider-formats in a separate commit.

Design

fable is reachable in exactly two ways:

  1. Escalation. When opus-tier work fails a judge or review, the Escalation Rule bumps the phase (or fix) and its judge to fable instead of stopping at opus. If fable also fails, the orchestrator reports to the user as before.
  2. Explicit request. --model fable runs every agent and judge at fable, the same way the existing override works for the other tiers.

The Selection Rules tables, the Phase 3 "+1 capped at opus" rule, and the reviewer "+1" rule are untouched. A run that never fails at opus behaves and costs exactly as it does today. This follows the policy's own principle that a stronger model must be earned rather than provisioned pre-emptively. If you would rather have the caps move to fable as well, that is a two-line change in the same paragraphs.

For non-Anthropic providers, the equivalence tables map fable to the provider's deliberate-reasoning edition above its opus-class model, or collapse it onto opus when no such tier exists.

Verification

  • Every edit was applied by a script that asserts an exact single match per target string, so no unintended occurrence changed.
  • grep over plugins/sdd and docs/plugins/sdd confirms the only remaining three-tier lists are worked examples and the precedence prose, which are correct as they stand.
  • just sync-provider-formats was re-run after committing; the tree stayed clean, so the fork-PR drift check in CI will pass.

Not in scope: the sadd plugin (do-in-parallel, do-and-judge, do-in-steps) has the same --model opus|sonnet|haiku enum. Happy to follow up with the same treatment there if wanted.

🤖 Generated with Claude Code

https://claude.ai/code/session_011j7h5Ytw56h4D198aHUKG6

adthoms and others added 2 commits September 1, 2026 17:43
Claude Code now exposes `fable` (Claude Fable, the tier above Opus) as a
model alias, but the sdd plan-task and implement-task skills only knew the
haiku/sonnet/opus ladder, so `--model fable` was not accepted and an
`opus`-tier failure had nowhere to escalate.

- Accept `fable` in the `--model` argument of plan-task and implement-task
  and in the `Model:` / `Reviewer model:` enums of the task file format.
- Extend the escalation ladder to haiku -> sonnet -> opus -> fable; fable
  is the new ceiling.
- Keep automatic selection unchanged: the tier tables still top out at
  opus, the Phase 3 / reviewer "+1" caps stay at opus, and fable is never
  pre-assigned. It is spent only after an opus attempt has failed or on
  explicit request, so no existing run changes cost or behaviour unless
  opus already failed.
- Add a fable row to the cross-provider equivalence tables and a
  "fable pre-assigned" row to the tech-lead anti-pattern table; Judge 5
  now checks that plans do not pre-assign fable.
- Bump sdd to 3.7.0 and the marketplace to 3.11.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011j7h5Ytw56h4D198aHUKG6
@adthoms

adthoms commented Sep 3, 2026

Copy link
Copy Markdown
Author

Feature request (out of scope for this PR, noted here for tracking): a plan-time option that pins one model on every step.

Today there are two --model flags, and neither produces a task file whose steps all carry one model:

  • implement-task --model <tier> overrides every Model: and Reviewer model: at run time. The task file itself is unchanged.
  • plan-task --model <tier> sets the tier of the planning agents and judges only. The tech-lead still assigns per-step tiers from the Model Selection Guide, so the task file records a mix of haiku / sonnet / opus.

Use case: a team that runs one tier for all implementation work (all opus, or all fable once this PR lands) wants the plan to say so. With the current design, the single-model intent lives only in the flag a person remembers to pass at implement time. A --continue, a --refine, or a hand-off to another person silently falls back to the mixed per-step tiers.

Proposed behaviour, one of:

  1. A new plan-task option, for example --step-model <tier>, that makes the tech-lead write Model: <tier> on every step and Reviewer model: <tier> on every phase. Judge 4's model-policy items treat the pinned tier as satisfied.
  2. Or let plan-task --model <tier> also pin the step and reviewer assignments, so one flag covers agents, judges, and the plan's own step models.

Option 1 keeps the existing --model semantics intact and is the smaller change. Happy to open an issue or a follow-up PR for whichever shape you prefer.

@adthoms

adthoms commented Sep 3, 2026

Copy link
Copy Markdown
Author

@LeoVS09 Please let me know if using Fable (and Astra) is planned for sdd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant