Product documentation — installation, licensing, and integration guides.
SolvScout / SolvTune
Release notes
0.2.0

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_config carries the complete runnable knob set for the solvsrk arm — continuation backend, EK step size and budget, CVODE tolerances, method policy and switch thresholds. The generic config envelope cannot express those fields, so a caller that read only config was 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=...) accepts balanced, precision, survival, and efficiency. 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. Pass enrich=False for stiffness-class fallback only.
  • Integration difficulty, decoupled from eigenvalue stiffness. ProblemProfile gains integration_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() and ARM_DISPLAY_NAMES — presentation names for arm slugs.
  • ACTIVE_ARMS is 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 active
import solvscout
solvscout.native_version()   # engine version, for support requests

See the version list.