solverpilot 0.1.0rc2__tar.gz → 0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- solverpilot-0.2/BACKEND-CONTRACT-V0_1_0.json +38 -0
- solverpilot-0.2/BACKEND-CONTRACT-V0_2_0.json +42 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/CHANGELOG.md +23 -0
- solverpilot-0.2/KNOWN-LIMITATIONS.md +33 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/MANIFEST.in +10 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/PKG-INFO +13 -6
- solverpilot-0.2/PUBLIC-API-V0_1_0.json +475 -0
- solverpilot-0.2/PUBLIC-API-V0_2_0.json +475 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/README.md +10 -5
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/RELEASING.md +1 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/api/EXTENDED-MODELING-API.md +9 -5
- solverpilot-0.2/docs/release/README-CHECKLIST-0.1.md +15 -0
- solverpilot-0.2/docs/release/README-CHECKLIST-0.2.md +12 -0
- solverpilot-0.2/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.md +22 -0
- solverpilot-0.2/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md +147 -0
- solverpilot-0.2/examples/15_named_model_and_quality.py +14 -0
- solverpilot-0.2/examples/16_direct_conic.py +16 -0
- solverpilot-0.2/examples/17_batch_scenarios.py +18 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/README.md +6 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/pyproject.toml +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/__init__.py +2 -1
- solverpilot-0.2/src/solverpilot/_synchronization.py +10 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/_version.py +1 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/__init__.py +3 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/bundled_capi.py +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/casadi_conic.py +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/highspy_native.py +15 -1
- solverpilot-0.2/src/solverpilot/backends/metadata.py +16 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/nlopt_native.py +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/osqp_native.py +13 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/pyscipopt_native.py +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_highs_lp.py +32 -25
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/v2.py +6 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/__init__.py +3 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/backend.py +3 -1
- solverpilot-0.2/src/solverpilot/conic/clarabel_backend.py +189 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/compiler.py +7 -3
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/ir.py +10 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/validation.py +24 -2
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/__init__.py +4 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/compiler.py +2 -2
- solverpilot-0.2/src/solverpilot/model/convenience.py +96 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/model.py +18 -7
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/sets.py +17 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/quadratic.py +12 -9
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/__init__.py +3 -0
- solverpilot-0.2/src/solverpilot/reporting/quality.py +32 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/auto.py +9 -4
- solverpilot-0.2/src/solverpilot/runtime/batch.py +143 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/executor.py +29 -6
- solverpilot-0.2/src/solverpilot/runtime/multiobjective.py +49 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/portfolio.py +3 -2
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/__init__.py +3 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/persistent.py +8 -0
- solverpilot-0.2/src/solverpilot/session/reoptimization.py +81 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/session.py +6 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/trace/schema.py +2 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/__init__.py +3 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/core.py +2 -2
- solverpilot-0.2/src/solverpilot/validate/optimality.py +114 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/result.py +2 -1
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/PKG-INFO +13 -6
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/SOURCES.txt +20 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/requires.txt +3 -0
- solverpilot-0.1.0rc2/KNOWN-LIMITATIONS.md +0 -70
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/BACKEND-CONTRACT-V0_1_0RC2.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/CONTRIBUTING.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/LICENSE +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/PRE-PUBLIC-RELEASE-AUDIT-0.1.0rc2.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/PRE-PUBLIC-RELEASE-VERIFICATION-0.1.0rc2.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/PUBLIC-API-V0_1_0RC2.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/SECURITY.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/TRACK-P-MERGE-PROVENANCE.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/api/PUBLIC-API-v1.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/OWNER-PUBLICATION-DECISIONS.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/PRE-GITHUB-HARDENING.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/PRE-GITHUB-LICENSE-DECISION.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/README-CHECKLIST-0.1.0RC2.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.0RC2.md +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/01_lp_basic.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/02_milp_binary.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/03_qp_convex.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/04_choose_backend.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/05_infeasible.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/06_validation_diagnostics.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/07_reoptimization_session.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/08_semantic_model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/09_conic_model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/10_nlp_optional.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/11_minlp_optional.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/12_cp_reference.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/13_cp_sat_optional.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/14_persistent_session_optional.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/setup.cfg +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/_immutability.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/compile_milp.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/diagnostics.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/heuristics.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/reference.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/solution.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/timeline.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/validation.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/compile_cp.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/compile_milp.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/distance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/heuristics.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/reference.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/solution.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/validation.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/_casadi_highs_worker.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/base.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/health.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/protocol_v2.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/registry.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_highs.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_slsqp_qp.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_vendored_highs_dev.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/acquire.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/baselines.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/bundle.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/campaign.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/environment.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/integrity.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/policy.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/registry.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/report.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/runner.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/slurm.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/specs.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/splits.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/summary.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/verify.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/worker.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/engine.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/indicator.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/registry.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/transformation-tape.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/types.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/validation.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/backend-capability-v2.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/conformance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/enums.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/manifest.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/ontology.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/requirements.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/resolve.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/backend_health.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/benchmark.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/benchmark_worker.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/capabilities.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/conformance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/conic-ir-v1.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/conformance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/cp-ir-v1.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ir.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ortools_backend.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ortools_worker.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/reference.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/serialization.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/validate.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/infeasibility.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/metrics.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/oracle.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/proof.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/references.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/regret.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/exceptions.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/experimental/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/entrypoints.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/manager.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/manifest.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/versioning.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/sqlite.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/inspect/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/inspect/fingerprint.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/fingerprint.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/leakage.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/schema.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/shift.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/binary64.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/csv.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/hashing.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/json.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/mapping.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/numeric.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/provenance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/result.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/source.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/strict_json.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/compiler.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/conformance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/convexity.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/ir.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/minlp-ir-v1.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/orchestrator.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/validation.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/errors.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/expression.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/types.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/ad.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/backend.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/compiler.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/conformance.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/ir.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/nlp-ir-v1.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/validation.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/planner.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/production.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/selective_lp.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/enums.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/hashing.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/linear.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/mps.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/explain.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/model.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/render.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/budgeting.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/result.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/conformance_v2.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/mutations.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/persistent-session-trace.schema.json +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/reuse.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/trace/__init__.py +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/dependency_links.txt +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/entry_points.txt +0 -0
- {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"milestone": "RELEASE_0_1",
|
|
3
|
+
"notes": [
|
|
4
|
+
"Backend IDs remain stable across the SolverPilot pre-GitHub cleanup.",
|
|
5
|
+
"Verification-only adapters are never admitted to the default solving registry.",
|
|
6
|
+
"Availability of optional public backends remains environment-dependent.",
|
|
7
|
+
"The legacy optimind Python package is not shipped in SolverPilot 0.1."
|
|
8
|
+
],
|
|
9
|
+
"package_version": "0.1",
|
|
10
|
+
"production_baseline_policy": {
|
|
11
|
+
"convex_qp": "osqp-native when available; otherwise scipy-slsqp-qp-bridge for non-proof intents",
|
|
12
|
+
"learned_lp_performance_routing": false,
|
|
13
|
+
"lp": "scipy-highs-ds",
|
|
14
|
+
"milp": "scipy-highs-bridge"
|
|
15
|
+
},
|
|
16
|
+
"schema": "solverpilot.backend_contract.v1",
|
|
17
|
+
"stable_backend_ids": {
|
|
18
|
+
"base_runtime": [
|
|
19
|
+
"scipy-highs-ds",
|
|
20
|
+
"scipy-highs-ipm",
|
|
21
|
+
"scipy-highs-bridge",
|
|
22
|
+
"scipy-slsqp-qp-bridge"
|
|
23
|
+
],
|
|
24
|
+
"optional_public": [
|
|
25
|
+
"highspy-native",
|
|
26
|
+
"osqp-native",
|
|
27
|
+
"pyscipopt-native",
|
|
28
|
+
"nlopt-slsqp-native"
|
|
29
|
+
],
|
|
30
|
+
"verification_only": [
|
|
31
|
+
"casadi-osqp-bridge",
|
|
32
|
+
"casadi-highs-bridge",
|
|
33
|
+
"casadi-cbc-bridge",
|
|
34
|
+
"bundled-osqp-capi",
|
|
35
|
+
"bundled-highs-capi"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"milestone": "RELEASE_0_2",
|
|
3
|
+
"notes": [
|
|
4
|
+
"Backend IDs remain stable across the SolverPilot pre-GitHub cleanup.",
|
|
5
|
+
"Verification-only adapters are never admitted to the default solving registry.",
|
|
6
|
+
"Availability of optional public backends remains environment-dependent.",
|
|
7
|
+
"The legacy optimind Python package is not shipped in SolverPilot 0.1.",
|
|
8
|
+
"Clarabel has a separate conic capability/conformance surface; it is not an LP/MILP registry entry."
|
|
9
|
+
],
|
|
10
|
+
"package_version": "0.2",
|
|
11
|
+
"production_baseline_policy": {
|
|
12
|
+
"convex_qp": "osqp-native when available; otherwise scipy-slsqp-qp-bridge for non-proof intents",
|
|
13
|
+
"learned_lp_performance_routing": false,
|
|
14
|
+
"lp": "scipy-highs-ds",
|
|
15
|
+
"milp": "scipy-highs-bridge"
|
|
16
|
+
},
|
|
17
|
+
"schema": "solverpilot.backend_contract.v1",
|
|
18
|
+
"stable_backend_ids": {
|
|
19
|
+
"base_runtime": [
|
|
20
|
+
"scipy-highs-ds",
|
|
21
|
+
"scipy-highs-ipm",
|
|
22
|
+
"scipy-highs-bridge",
|
|
23
|
+
"scipy-slsqp-qp-bridge"
|
|
24
|
+
],
|
|
25
|
+
"optional_public": [
|
|
26
|
+
"highspy-native",
|
|
27
|
+
"osqp-native",
|
|
28
|
+
"pyscipopt-native",
|
|
29
|
+
"nlopt-slsqp-native"
|
|
30
|
+
],
|
|
31
|
+
"verification_only": [
|
|
32
|
+
"casadi-osqp-bridge",
|
|
33
|
+
"casadi-highs-bridge",
|
|
34
|
+
"casadi-cbc-bridge",
|
|
35
|
+
"bundled-osqp-capi",
|
|
36
|
+
"bundled-highs-capi"
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"optional_conic_backends": [
|
|
40
|
+
"clarabel-native"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2 — Runtime, modeling and direct conic upgrade
|
|
4
|
+
|
|
5
|
+
- Serialize process start/close across concurrent batches to prevent the Windows child-handle race found during release qualification.
|
|
6
|
+
|
|
7
|
+
- Cache backend version metadata and avoid discovery for explicit backend objects.
|
|
8
|
+
- Eliminate duplicate QP convexity work and vectorize LP row conversion.
|
|
9
|
+
- Expose absolute/relative validation tolerances and numerical LP/QP KKT checks.
|
|
10
|
+
- Add supplied Farkas/recession certificate verification and named quality reports.
|
|
11
|
+
- Add owned transactional reoptimization and serialize mutable solver operations.
|
|
12
|
+
- Add bounded process batches with cancellation, deadlines and explicit POSIX memory limits.
|
|
13
|
+
- Add indexed variables, explicit soft penalties, named diagnostics/results and linear lexicographic objectives.
|
|
14
|
+
- Add direct Clarabel with SOC/RSOC/PSD/exponential/power and quadratic objectives.
|
|
15
|
+
- Fix cloning of power/division/smooth expressions; retain historical API call compatibility.
|
|
16
|
+
- Add numerical campaigns, repeated-solve RSS benchmarks and three public examples.
|
|
17
|
+
- Extend exact-artifact qualification with Clarabel on all supported platforms.
|
|
18
|
+
|
|
19
|
+
## 0.1 — Final release numbering
|
|
20
|
+
|
|
21
|
+
- Promote the published 0.1.0rc2 code to the short final version 0.1.
|
|
22
|
+
- Align package metadata, API snapshots, documentation, and release checks.
|
|
23
|
+
- No algorithm, solver policy, public API, or performance changes.
|
|
24
|
+
- Preserve historical release candidate evidence; qualify the new artifacts separately.
|
|
25
|
+
|
|
3
26
|
## 0.1.0rc2 — Correctness and trust hardening
|
|
4
27
|
|
|
5
28
|
- canonicalizes every accepted QP Hessian to one symmetric matrix before hashing, validation, or backend translation; pairwise symmetry checks can no longer be relaxed by an unrelated large coefficient;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Known limitations — 0.2
|
|
2
|
+
|
|
3
|
+
## Numerical evidence
|
|
4
|
+
|
|
5
|
+
Primal validation is independent of backend termination. Continuous LP/QP duals from SciPy LP, native HiGHS and OSQP can additionally be checked for stationarity, complementarity and numerical gap. These are tolerance-qualified checks, not exact-arithmetic proofs. MILP/global nonlinear optimality is not proved by primal feasibility. Backend-only infeasible/unbounded statuses remain claims unless a certificate is checked.
|
|
6
|
+
|
|
7
|
+
Per-call ValidationTolerances is supported by execute, solve, solve_production and execute_portfolio. The default feasibility floor is 1e-7 with relative tolerance 1e-9; the relative allowance can be disabled. Native solver tolerances must be configured separately. Nonfinite evidence cannot produce a verified certificate.
|
|
8
|
+
|
|
9
|
+
## Conic and nonlinear scope
|
|
10
|
+
|
|
11
|
+
Optional direct Clarabel supports convex quadratic objectives and affine SOC, rotated SOC, PSD, exponential and power cones. Runtime conformance and original-space validation gate its use. CasADi SuperSCS retains its restricted linear-objective SOC/RSOC scope; its generic PSD and quadratic-conic routes remain disabled. Generalized power cones are not implemented. Conic primal feasibility alone does not imply independently verified global optimality.
|
|
12
|
+
|
|
13
|
+
Smooth NLP remains optional through CasADi/Ipopt and produces local candidates. Generic global NLP and arbitrary nonsmooth atoms are unsupported. MINLP remains the certified convex binary-discrete scope: general integer, nonconvex/global, nonlinear-equality, two-sided nonlinear and indicator+MINLP compositions remain unsupported. Existing proof flags retain their documented solver-certified scope.
|
|
14
|
+
|
|
15
|
+
## Execution and ownership
|
|
16
|
+
|
|
17
|
+
Batch accepts canonical LP/QP, uses spawn and requires a script main guard. Timeouts/cancellation terminate workers; unobserved incumbents cannot be recovered afterward. Native solver budgets may return incumbents before the outer deadline. Cleanup may add bounded latency. POSIX memory limits are RLIMIT_AS address-space caps, not RSS; Windows memory caps are rejected. Worker count does not limit internal solver threads.
|
|
18
|
+
|
|
19
|
+
ReoptimizationSession owns a model clone and serializes update+solve. Session/PersistentSession serialize their public methods, but direct external model/backend mutations require caller coordination. Compiler caches are not shared mutable workspaces for uncoordinated modeling. Reuse is conditional on structure/settings and is not guaranteed faster. Session history can intentionally grow.
|
|
20
|
+
|
|
21
|
+
CP-SAT remains process-isolated to avoid known HiGHS ABI collisions. Reference CP and exact TSP/VRP are exhaustive and only suitable for small oracle cases.
|
|
22
|
+
|
|
23
|
+
## Modeling and records
|
|
24
|
+
|
|
25
|
+
Soft helpers accept affine relations and require explicit penalty use in the objective. Lexicographic solving currently supports canonical LP/MILP with linear objectives; locks include numerical tolerances. Named conflict diagnostics support LP/MILP. Named values reject stale compiled models and retain IDs for duplicate labels.
|
|
26
|
+
|
|
27
|
+
Learned routing remains disabled; OOD indicators are not calibrated probabilities. History is opt-in plaintext SQLite; user metadata can be sensitive. Extension registry mutation requires caller coordination. Development pickle caches are trusted artifacts, not a safe untrusted interchange format.
|
|
28
|
+
|
|
29
|
+
## Qualification
|
|
30
|
+
|
|
31
|
+
Cross-platform support requires exact-artifact qualification on Python 3.12–3.14. Upstream package availability alone is not integration evidence. Synthetic latency/RSS measurements do not establish industrial scalability or absence of long-term leaks. Historical reports retain their original versions and cannot qualify new artifacts.
|
|
32
|
+
|
|
33
|
+
See [the 0.2 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md) for APIs and examples.
|
|
@@ -28,3 +28,13 @@ prune .github
|
|
|
28
28
|
prune tools
|
|
29
29
|
global-exclude __pycache__ *.py[cod] *.egg-info *.whl *.tar.gz *.zip
|
|
30
30
|
recursive-include examples *.py *.md
|
|
31
|
+
|
|
32
|
+
include PUBLIC-API-V0_1_0.json
|
|
33
|
+
include BACKEND-CONTRACT-V0_1_0.json
|
|
34
|
+
include docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.md
|
|
35
|
+
include docs/release/README-CHECKLIST-0.1.md
|
|
36
|
+
|
|
37
|
+
include PUBLIC-API-V0_2_0.json
|
|
38
|
+
include BACKEND-CONTRACT-V0_2_0.json
|
|
39
|
+
include docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md
|
|
40
|
+
include docs/release/README-CHECKLIST-0.2.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solverpilot
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2
|
|
4
4
|
Summary: Trust-aware optimization runtime for mathematical and constraint programming in Python
|
|
5
5
|
Author: Amirhossein Heidari Rashtabad
|
|
6
6
|
Maintainer: Amirhossein Heidari Rashtabad
|
|
@@ -62,6 +62,8 @@ Requires-Dist: pyscipopt<7,>=6.2.1; extra == "native"
|
|
|
62
62
|
Requires-Dist: nlopt<3,>=2.11; extra == "native"
|
|
63
63
|
Provides-Extra: nlopt
|
|
64
64
|
Requires-Dist: nlopt<3,>=2.11; extra == "nlopt"
|
|
65
|
+
Provides-Extra: clarabel
|
|
66
|
+
Requires-Dist: clarabel==0.11.1; extra == "clarabel"
|
|
65
67
|
Provides-Extra: casadi
|
|
66
68
|
Requires-Dist: casadi==3.7.2; extra == "casadi"
|
|
67
69
|
Provides-Extra: conic
|
|
@@ -76,7 +78,7 @@ Dynamic: license-file
|
|
|
76
78
|
|
|
77
79
|
# SolverPilot
|
|
78
80
|
|
|
79
|
-
> **
|
|
81
|
+
> **Current version:** `0.2`. Adds configurable validation, numerical optimality checks, faster preparation, owned reoptimization sessions, bounded batch execution, modeling conveniences and a direct Clarabel conic adapter. Historical `0.1.0rc2` correctness/trust hardening remains in place.
|
|
80
82
|
|
|
81
83
|
SolverPilot is a **trust-aware optimization runtime and modeling layer for Python**. It combines a small matrix-first solve API for LP/MILP/convex QP with a higher-level semantic modeling system that can compile into conic, smooth nonlinear, certified convex binary MINLP, and constraint-programming execution paths.
|
|
82
84
|
|
|
@@ -113,7 +115,7 @@ The extended APIs are canonically imported from submodules such as `solverpilot.
|
|
|
113
115
|
|
|
114
116
|
### Verified trust, evaluation, extension, and application layers
|
|
115
117
|
|
|
116
|
-
The `0.
|
|
118
|
+
The `0.2` release keeps the S2–S10 additive layers and adds correctness/trust hardening discovered during adversarial review of `0.1.0rc1`. The historical `0.0.40rc2` artifacts remain separate provenance and are not overwritten.
|
|
117
119
|
|
|
118
120
|
- `solverpilot.io`: strict local JSON/CSV ingestion, bounded reads, explicit mapping, content hashes, and source provenance;
|
|
119
121
|
- `solverpilot.evaluation`: direct-run oracle construction and decomposed quality/runtime/failure regret;
|
|
@@ -171,7 +173,7 @@ Optional integrations are installed separately. OR-Tools 9.15 provides Python 3.
|
|
|
171
173
|
|
|
172
174
|
### From PyPI
|
|
173
175
|
|
|
174
|
-
|
|
176
|
+
Install the latest published release from PyPI:
|
|
175
177
|
|
|
176
178
|
```bash
|
|
177
179
|
python -m pip install solverpilot
|
|
@@ -180,7 +182,7 @@ python -m pip install solverpilot
|
|
|
180
182
|
### From the repository before PyPI publication
|
|
181
183
|
|
|
182
184
|
```bash
|
|
183
|
-
git clone
|
|
185
|
+
git clone https://github.com/Amirhosseinheidari/SolverPilot.git
|
|
184
186
|
cd solverpilot
|
|
185
187
|
python -m pip install .
|
|
186
188
|
```
|
|
@@ -342,7 +344,7 @@ print(result.algorithm)
|
|
|
342
344
|
print(result.globally_proven)
|
|
343
345
|
```
|
|
344
346
|
|
|
345
|
-
`globally_proven=True` is emitted only when the certified scope, original-space validation, and bound-closure conditions all pass. In `0.
|
|
347
|
+
`globally_proven=True` is emitted only when the certified scope, original-space validation, and bound-closure conditions all pass. In `0.2` this is a **solver-certified proof under the compiler's convexity assumptions**, not an independently reconstructed end-to-end proof; inspect `result.proof_scope` and `result.independently_verified_global`. General integer, nonconvex, nonlinear-equality, and indicator+MINLP compositions remain fail-closed.
|
|
346
348
|
|
|
347
349
|
See [`examples/11_minlp_optional.py`](examples/11_minlp_optional.py).
|
|
348
350
|
|
|
@@ -464,6 +466,7 @@ A native patch is selected only when the exact granular capability and persisten
|
|
|
464
466
|
| SCIP | `python -m pip install "solverpilot[scip]"` | PySCIPOpt adapter |
|
|
465
467
|
| NLopt | `python -m pip install "solverpilot[nlopt]"` | NLopt SLSQP integration |
|
|
466
468
|
| CasADi | `python -m pip install "solverpilot[casadi]"` | pinned CasADi 3.7.2 verification bridge |
|
|
469
|
+
| Clarabel | `python -m pip install "solverpilot[clarabel]"` | direct convex conic solver, including PSD, exponential and power cones |
|
|
467
470
|
| Conic | `python -m pip install "solverpilot[conic]"` | CasADi-based conic verification path |
|
|
468
471
|
| NLP | `python -m pip install "solverpilot[nlp]"` | CasADi 3.7.2 + Ipopt path |
|
|
469
472
|
| MINLP | `python -m pip install "solverpilot[minlp]"` | dependencies for certified binary MINLP orchestration |
|
|
@@ -552,3 +555,7 @@ Normal CI targets Python 3.12–3.14. The exact-artifact cross-platform release
|
|
|
552
555
|
## License
|
|
553
556
|
|
|
554
557
|
SolverPilot is licensed under the [Apache License 2.0](LICENSE). Apache-2.0 permits commercial and closed-source use subject to its terms. It does not grant trademark rights.
|
|
558
|
+
|
|
559
|
+
## Version 0.2 guide
|
|
560
|
+
|
|
561
|
+
See [the 0.2 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md) for new APIs, installation, numerical guarantees, batch limits and examples.
|