| Field | Value |
|---|---|
| Decision ID | ADR-106 |
| Initiative | throughput / dispatch fairness |
| Proposed By | unsorry maintainers |
| Date | 2026-06-26 |
| Status | Proposed |
A live audit (2026-06-26) of the queue dashboard found 389 submissions waiting, of which
336 belong to a single solver (@ohdearquant) and are low-difficulty template proofs
(template-ring-cofactor, template-zmod-decide, ring, …) — some queued for a week. Meanwhile
the genuinely hard work that moves the needle — the four v2.0.0 benchmark suites (putnam/imo/
minif2f/combibench) — is rare (≈0→6→17/day) and competes for the same governed dispatch slots.
ADR-075 already round-robins the queue by solver so one high-volume contributor can’t starve
the rest (max-min fairness). But it is difficulty-blind: within the fair share, a solver’s
trivial template floods dispatch on equal footing with hard proofs. The project’s own
score_policy weights difficulty_points ×100 vs credited_proofs ×25 — raw template volume is
deliberately the minor term — so spending scarce dispatch/verify capacity on template floods
ahead of hard proofs is misaligned with what the system values.
The queue board (docs/queue.json, ADR-066) already records a model per queued branch, which
labels the template generators precisely — so the difficulty signal needed to reorder is already
present at dispatch time.
Add a difficulty tier to the dispatcher’s ordering: dispatch high-difficulty branches before low-difficulty (template) ones, with ADR-075 per-solver round-robin applied WITHIN each tier.
model matches a known template/trivial-
tactic marker (template, ring, decide, sympy, norm_num). A branch with no model
or an unrecognised model is high — fail-safe: only KNOWN-trivial work is deprioritised,
never blindly.tools/dispatch/fair_order.py); agent.sh::fair_dispatch_
order calls it. Reversible: UNSORRY_DIFFICULTY_DISPATCH=0 → fairness-only (ADR-075);
UNSORRY_FAIR_DISPATCH=0 → legacy lexical.model field is advisory metadata,
never a trust input.ADR-075 (per-solver round-robin fairness — extended here), ADR-066 (queue board provenance / the
model field), ADR-064/071 (dispatch dedup), ADR-058 (governor caps), ADR-005 (autonomous merge).
Leaderboard score_policy (difficulty-weighted scoring). Audit tracked on #5678.