feat: add fable model tier and refresh per-harness model aliases

Add Claude Fable 5 (model: fable) as the tier above opus across the
adapter framework - native passthrough in Claude Code, mapped to each
harness's top model elsewhere. No agents are promoted yet; tier criteria
and cost guidance are documented in docs/agents.md and docs/authoring.md.

Refresh MODEL_ALIASES against current harness catalogs (June 2026):
- Codex: gpt-5 family -> gpt-5.5 / gpt-5.4-mini (per Codex model docs)
- Copilot: GPT-5 stand-ins -> native Claude models (claude-opus-4.8,
  claude-sonnet-4.6, claude-haiku-4.5) now that Copilot CLI serves them
- OpenCode: opus -> anthropic/claude-opus-4-8; haiku dated pin ->
  latest-tracking anthropic/claude-haiku-4-5
- Gemini: intentionally stays on GA gemini-2.5-* (3.x is preview-gated)
- plugin-eval judge opus tier -> claude-opus-4-8

Gates: generate-all (no committed drift), validate STRICT=1, garden,
test (442 passed), smoke-test all green.
This commit is contained in:
Seth Hobson
2026-06-12 10:55:25 +09:00
parent 75ebf8c644
commit cc37bfdd29
10 changed files with 90 additions and 36 deletions
@@ -54,7 +54,7 @@ _CAMEL_TOOL_PATTERN = re.compile(
_TOOL_PROSE_PATTERN = re.compile(rf"(?i:\bthe)\s+(?:`)?({_TOOL_ALTERNATION})(?:`)?\s+tool\b")
# Bare model aliases that don't map cleanly (Cursor/OpenCode/Gemini need full IDs)
_BARE_MODEL_ALIAS_PATTERN = re.compile(r"^(opus|sonnet|haiku)$")
_BARE_MODEL_ALIAS_PATTERN = re.compile(r"^(fable|opus|sonnet|haiku)$")
# Context file line cap (per harness-engineering principle)
_CONTEXT_FILE_LINE_CAP = 150
@@ -38,7 +38,7 @@ Score 1.0 — Perfectly calibrated: Minimal surface area, maximum cohesion, idea
_MODEL_MAP: dict[str, str] = {
"haiku": "claude-haiku-4-5-20251001",
"sonnet": "claude-sonnet-4-6",
"opus": "claude-opus-4-7",
"opus": "claude-opus-4-8",
}