chameleon 2.43.0
Reviewer model ladder (roadmap #6). The main loop may run a stronger model than
the flat-sonnet correctness reviewer, so the reviewer is structurally weaker than
the author it checks. This escalates the reviewer on exactly the turns that
matter most. All advisory — no deny path, no hook hot-path cost.
Added
- Route-keyed correctness-judge model (default on; kill with
CHAMELEON_JUDGE_TIERING=0). A high-risk route (risk_high/ intent-forced /
security-surface — security and blast-unknown both fold intorisk_high)
escalates the turn-end judge toCHAMELEON_JUDGE_MODEL_HIGH(defaultopus);
low-risk routes (risk_elevated/first_low_risk) keep
CHAMELEON_JUDGE_MODEL(sonnet). The escalation runs ONLY on the detached
async path (CHAMELEON_JUDGE_ASYNC=1or the auto-detach on a known bare-auth
failure), whose generous fallback budget the slower model needs; the sync Stop
path (capped by the 55s hook wrapper) keeps the base model, because a slower
model there would time out and fail-open to zero findings on exactly the
high-risk turns — a coverage regression, not a win. So a default sync turn is
unchanged. Raise-only and never garbage: an unrecognized model (not an exact
tier token or aclaude-…id) falls back to the valid base rather than being
spawned, because a bad--modelwould fail-open the judge to zero findings —
the ladder can only strengthen the reviewer or leave it unchanged, never
silently disable it. - Severity-keyed refuter model: a BLOCK / high / critical finding is refuted
withCHAMELEON_REFUTER_MODEL_HIGH(defaultopus), nits keep
CHAMELEON_REFUTER_MODEL. Same raise-only guard andCHAMELEON_JUDGE_TIERING=0
kill switch. CHAMELEON_DUP_MODELknob for the duplication confirm spawn (default
sonnet, unchanged from riding the judge default), now independently tunable.
Notes
- Escalation lift (opus-beats-sonnet as a reviewer) is unmeasured; A/B it via the
effectiveness harness's model-tier arms (shipped in 2.42.0) before locking the
default. Because the escalation is gated to the detached path, a default (sync)
session is behaviorally unchanged — enableCHAMELEON_JUDGE_ASYNC=1to activate
it under the generous budget. Deferred to a follow-up: per-repo committable
model fields and statusline session-model capture (the hot-path piece).