solver-cache: add --max-iterations + --warm-start flags for backfill speed
2026-04-15 session: observed rate of ~240 snapshots/hour across 8 parallel workers on cloud-lab. Spec said 5 seconds per solve; actual was 60-200s. Two causes identified from the actual log:
2026-04-15 session: observed rate of ~240 snapshots/hour across 8 parallel workers on cloud-lab. Spec said 5 seconds per solve; actual was 60-200s. Two causes identified from the actual log:
(1) Runaway non-convergent solves were hitting the default 200-iteration cap at 30-50 minutes each. Sample: "Finished: 201 iterations, time=3055.6s". The output ratings on those runs are noisy by definition and consume enormous CPU for marginal value.
(2) Consecutive solves for the same league were converging to the EXACT same loss value (0.058682) in ~5 iterations but each one restarted from cold default ratings, wasting ~60-80 seconds per solve on redundant coordinate descent. Sample: 19 consecutive solves all landing at loss=0.058682 with 5-iter convergence, each taking 70-90s.
Fix: two new CLI flags, both opt-in (no behavior change for existing callers):
--max-iterations=N Cap the solver's inner loop at N iterations. Overrides baseConfig.maxIterations (default 200). For backfill runs, 30 keeps the converging solves unaffected and cuts the non-convergent tail from ~3000s to ~450s (6-7x speedup on the worst cases).
--warm-start Within a single league, reuse the PREVIOUS solve's output (team ratings + HA + lambda3 + avgGoalRate) as the NEXT solve's initial point. Consecutive solve dates differ by ~7 days; the optimum barely moves. Warm-started solves typically converge in 1-2 iterations instead of 5.
Combined, these should reduce the per-solve wall time dramatically without changing the output quality (the warm-started solver still converges to the same loss). Resets warm-start state between leagues so each league starts fresh from DEFAULT_SOLVER_CONFIG.
Does NOT touch DEFAULT_SOLVER_CONFIG or any production inference path. The flags are opt-in and only affect this script.
Refs: docs/specs/cloud-lab-apr15-retro.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>