SolvScout / SolvTune 0.2.0
Date: 2026-08-26
SolvTune now returns a SolvSRK configuration you can actually run, and its rankings come from a new noise-aware evidence corpus. 0.1.0 shipped a Windows wheel only; 0.2.0 ships all five platforms.
Recommendations you can act on
-
Full SolvSRK settings on every recommendation.
ArmRecommendation.solvsrk_configcarries the complete runnable knob set for thesolvsrkarm — continuation backend, EK step size and budget, CVODE tolerances, method policy and switch thresholds. The genericconfigenvelope cannot express those fields, so a caller that read onlyconfigwas running SolvSRK untuned. With SolvSRK 2.5.0 it is two lines from recommendation to solve:rec = recommend(profile, objective="precision") cfg = solvsrk.config(mode="acmode", rtol=1e-12, atol=1e-12, ek_max_steps=0) -
Per-objective rankings.
recommend(profile, objective=...)acceptsbalanced,precision,survival, andefficiency. Each objective has its own ranking and its own SolvSRK configuration; clean-accuracy problems are routed to SolvSRK's accuracy mode rather than the default stiff path. -
Measured SciPy
max_step. Baseline arms come back with the step ceiling that produced the evidence instead of a generic default, so a SciPy comparison you run locally matches the one the recommendation was scored against.
New evidence corpus (frozen 2026-08-13)
- Pre-ranked, noise-aware tables covering 398 benchmark problems × 6 noise
levels × 4 objectives, embedded in
libsolvscout.recommend()reads a pre-ranked cell rather than scoring at call time. - Dead-zone warnings for noise and horizon. Measured noise σ* thresholds and horizon ceilings annotate the ranking, so an arm known to fail at your noise level or integration horizon says so instead of ranking silently.
Sharper problem profiles
- Automatic profile enrichment.
recommend(profile, enrich=True)— new keyword, on by default — matches an unnamed profile to its nearest corpus problem by fingerprint before the table lookup. Passenrich=Falsefor stiffness-class fallback only. - Integration difficulty, decoupled from eigenvalue stiffness.
ProblemProfilegainsintegration_difficulty(easy,moderate,hard,extreme,unknown),integration_difficulty_confidence, and the probe step-size evidence behind them (probe_dt_max,probe_dt_ratio). A problem that is not stiff but is still hard to integrate is no longer treated as easy.
Diagnostics and naming
native_version()— version string of the embedded engine. Include it when you open a support request.public_arm_name()andARM_DISPLAY_NAMES— presentation names for arm slugs.ACTIVE_ARMSis the 14 ranked arms: SolvSRK, six SciPy baselines (bdf,radau,rk45,lsoda,dop853,rk23), and seven external arms.
Licensing
The license-gated entry points are now stated explicitly: classify,
recommend, compare, recommend_jump, recommend_product, and the briefs
built on them. Machine code, activation, and license status work without a seat.
The free lifetime seat after registration is unchanged, and existing
solvscout.lic files stay valid — no reactivation needed for this upgrade.
Packaging
Per-platform download bundles for Linux x86_64 and aarch64, macOS arm64 and
x86_64, and Windows AMD64. Each solvscout-0.2.0-<platform>-bundle.zip contains
the wheel, examples/, and a quick-start README. Download from
resonix.io/account (opens in a new tab).
Upgrading
# Download the new bundle for your OS, extract, then:
pip install --force-reinstall ./solvscout-0.2.0-*.whl
python -m solvscout # confirms the seat is still activeimport solvscout
solvscout.native_version() # engine version, for support requestsSee the version list.