| Field | Value |
|---|---|
| Decision ID | ADR-013 |
| Initiative | unsorry Phase 3 — harder targets |
| Proposed By | unsorry maintainers |
| Date | 2026-06-11 |
| Status | Accepted |
In the context of pointing the swarm at genuinely hard targets (difficulty 3–4), where phase2-run-002 showed the default model one-shots the easy band but stalled on all three hard targets it attempted,
facing the fact that a failed prove attempt wastes a full UNSORRY_WALL window plus a Lean build, so success-probability-per-attempt — not per-token speed — dominates end-to-end time-to-proved,
we decided for defaulting all proof-surface claude calls (prove, decompose) to the most capable available model (fable) at maximum effort (max), env-overridable via UNSORRY_MODEL/UNSORRY_EFFORT, with the --effort flag dropped fail-soft when the installed CLI does not advertise it, and translation staying on the cheaper default (it is not a proof run),
and neglected a CI gate on model identity, difficulty-routed model selection, and keeping the old flat default,
to achieve the best attainable per-attempt success rate on the hard band — fewer wasted wall+build cycles, faster effective time-to-proved, and stronger decomposition quality when budget exhaustion triggers ADR-009,
accepting that per-attempt latency may rise (more reasoning tokens; the 5–10 min Lean build floor is model-independent anyway), subscription credit burn increases on easy goals the cheaper model already closes (user-approved trade), and enforcement is by defaults plus metrics-recorded run config rather than CI — the kernel and gates make model choice a performance knob, never a soundness one, so a model gate is neither possible nor needed.
Phase 3 threads A and B drive the swarm at difficulty-3/4 targets. The evidence from run-002: sonnet proved the easy Faulhaber k=4 directly but made no terminal progress on platonic-schlafli-core, not-prime-pow-four-add-four, or alternating-sum-naturals within their walls. On hard targets the binding constraint is whether an attempt succeeds, because every failure costs the full wall plus a mathlib-cache build before the next try (or before decomposition fires).
Honest expectations, stated up front: this policy does not make individual attempts faster — max effort spends more reasoning tokens and the Lean build floor is unchanged. It raises the probability that an attempt (or a decomposition proposal) is good, which is what actually moves wall-clock-to-proved on the hard band. Soundness is untouched either way: Gate A, the axiom audit, kernel replay, and the ADR-011 binding obligation judge the output identically whatever model produced it.
Defaults in agent.sh (resolve_model_effort), recorded in the startup log and run metrics; contributors can override or run older CLIs without breakage.
Pros: maximum capability where it counts; simple, predictable policy; zero soundness coupling; degrades gracefully.
Cons: credit burn on easy goals; slower single attempts.
fable for difficulty ≥3, sonnet below. Better credit economics, but a second policy axis to maintain and the user explicitly chose uniform maximum capability for proof runs; revisit if credit limits bite.
Impossible and unnecessary: nothing in a merged proof attests which model wrote it, and nothing needs to — the gates decide soundness. Enforcement-by-gate would be security theatre.
sonnet default (Rejected)Demonstrably stalls on the hard band (run-002); the whole point of Phase 3 is that band.
| Relationship | ADR ID | Title | Notes |
|————–|——–|——-|——-|
| Relates To | ADR-009 | Goal Decomposition | Decomposition quality benefits directly |
| Relates To | ADR-007 | Agent Identity & Budgets | UNSORRY_* env surface extended |
| Evidence | — | phase2-run-002 | The hard-band stall this answers |
| Reference ID | Title | Type | Location | |————–|——-|——|———-| | REF-1 | SPEC-013-A — Model/effort plumbing | Specification | specs/SPEC-013-A-Model-Effort-Policy.md | | REF-2 | phase2-run-002 metrics | Evidence | ../metrics/phase2-run-002.md |
| Status | Approver | Date | |——–|———-|——| | Proposed | unsorry maintainers | 2026-06-11 | | Accepted | unsorry maintainers | 2026-06-11 |