Files
claude/lib/model-gate.md
T
bchanot 1f2d33b7a6 feat(model-router): wave 2-B — orchestrators declare phases, shifters and pins removed, frontmatter = off-state floor
The 15 Skill(effort-*) citers now call mcp__model-router__route per phase
(orchestrate at a dispatch span, reflect/plan for the skill's own level,
apply at the bookkeeping tail, escalate at the verify-secure caps); built-in
judgment dispatches carry an explicit effort= param. lib/effort-shift.md is
the route doctrine, lib/model-gate.md the mod rule (route answer = witness,
/route on as remedy). Deleted: skills/effort-*, lib/effort-pins.txt/.sh,
lib/model-check.sh, their tests, the installers' re-apply blocks. The mod
drops its Skill(effort-*) bridge. The tracked model:/effort: frontmatter
stays as the off-state floor, census-locked equal to the rows
(lib/tests/effort-routing.test.sh rewritten, 140 checks; analyzer → xhigh).

Contract .claude/tasks/contracts/2026-10-10-model-router-w2b-1045.md, plan
r4 § W2-B: GATE 0 MET, verifier ECARTS(7) then CONFORME 10/10, security
PASS, full make test green (design-tool-gate env red only).
2026-10-10 11:24:54 +02:00

1.4 KiB

Model gate — reflection requires a big model (BLOCKING)

Shared include, runs FIRST in an orchestrator whose reflection executes inline (BDR-066). The witness is the model-router mod's own route tool.

Entry call

ALWAYS call mcp__model-router__route with phase = the skill's row phase (reflect or plan), no self-check shortcut. Tool not loaded (deferred) → ToolSearch("select:mcp__model-router__route") once per session, then call. The answer names the id main runs on next.

answer action
names a fable or opus id proceed, SILENT
names sonnet, haiku, anything else; "is off"; tool absent STOP

STOP means: print exactly ⛔ MODEL GATE — session on <model>. Reflection steps of this skill require Fable or Opus. Switch with /model, then relaunch the skill. (mod off: say so, /route on resumes it), then end the turn. No later step runs, no agent is dispatched, nothing is edited.

Dispatch tiers (BDR-077 — no inherit)

The gate guards the MAIN loop only. Typed agents are routed by their model-router row (model: frontmatter = off-state floor). Built-ins (general-purpose / Explore / Plan) carry an explicit model= at every call site: model: "fable" when the child reflects/orchestrates for the main loop (skill-runners), else its tier (opus = dispatched judgment, sonnet = execution, haiku = mechanical probes). A built-in judgment dispatch also carries an explicit effort= (lib/effort-shift.md).