solverpilot 0.3__tar.gz → 0.4__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.4/BACKEND-CONTRACT-V0_4_0.json +51 -0
- {solverpilot-0.3 → solverpilot-0.4}/CHANGELOG.md +14 -0
- {solverpilot-0.3 → solverpilot-0.4}/KNOWN-LIMITATIONS.md +7 -5
- {solverpilot-0.3 → solverpilot-0.4}/MANIFEST.in +5 -0
- {solverpilot-0.3 → solverpilot-0.4}/PKG-INFO +34 -21
- solverpilot-0.4/PUBLIC-API-V0_4_0.json +475 -0
- {solverpilot-0.3 → solverpilot-0.4}/README.md +29 -20
- {solverpilot-0.3 → solverpilot-0.4}/docs/api/EXTENDED-MODELING-API.md +19 -3
- solverpilot-0.4/docs/release/README-CHECKLIST-0.4.md +11 -0
- solverpilot-0.4/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md +237 -0
- solverpilot-0.4/examples/22_global_optimization_optional.py +27 -0
- solverpilot-0.4/examples/23_generalized_power_optional.py +24 -0
- solverpilot-0.4/examples/24_pdlp_and_certificates_optional.py +44 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/README.md +6 -0
- {solverpilot-0.3 → solverpilot-0.4}/pyproject.toml +3 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/__init__.py +1 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/_immutability.py +8 -4
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/_version.py +1 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/__init__.py +2 -0
- solverpilot-0.4/src/solverpilot/backends/_pdlp_worker.py +60 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/osqp_native.py +15 -2
- solverpilot-0.4/src/solverpilot/backends/pdlp.py +233 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/v2.py +5 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cli/capabilities.py +7 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/__init__.py +2 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/backend.py +8 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/clarabel_backend.py +53 -8
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/compiler.py +6 -2
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/conic-ir-v1.schema.json +1 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/ir.py +11 -2
- solverpilot-0.4/src/solverpilot/conic/optimality.py +159 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/validation.py +20 -2
- solverpilot-0.4/src/solverpilot/globalopt/__init__.py +23 -0
- solverpilot-0.4/src/solverpilot/globalopt/backend.py +473 -0
- solverpilot-0.4/src/solverpilot/globalopt/capabilities.py +104 -0
- solverpilot-0.4/src/solverpilot/globalopt/compiler.py +115 -0
- solverpilot-0.4/src/solverpilot/globalopt/expressions.py +193 -0
- solverpilot-0.4/src/solverpilot/globalopt/intervals.py +160 -0
- solverpilot-0.4/src/solverpilot/globalopt/problem.py +244 -0
- solverpilot-0.4/src/solverpilot/globalopt/validation.py +107 -0
- solverpilot-0.4/src/solverpilot/intelligence/shadow.py +72 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/__init__.py +2 -2
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/compiler.py +17 -2
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/model.py +21 -6
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/sets.py +32 -1
- solverpilot-0.4/src/solverpilot/problem/curvature.py +100 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/quadratic.py +10 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/auto.py +24 -1
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/catalog.py +18 -0
- solverpilot-0.4/src/solverpilot/runtime/integrations.py +65 -0
- solverpilot-0.4/src/solverpilot/runtime/reuse.py +42 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/unified.py +8 -3
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/validate/__init__.py +2 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/validate/optimality.py +4 -0
- solverpilot-0.4/src/solverpilot/validate/recovery.py +121 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/PKG-INFO +34 -21
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/SOURCES.txt +23 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/requires.txt +6 -0
- {solverpilot-0.3 → solverpilot-0.4}/BACKEND-CONTRACT-V0_1_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/BACKEND-CONTRACT-V0_1_0RC2.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/BACKEND-CONTRACT-V0_2_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/BACKEND-CONTRACT-V0_3_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/CONTRIBUTING.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/LICENSE +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PRE-PUBLIC-RELEASE-AUDIT-0.1.0rc2.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PRE-PUBLIC-RELEASE-VERIFICATION-0.1.0rc2.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PUBLIC-API-V0_1_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PUBLIC-API-V0_1_0RC2.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PUBLIC-API-V0_2_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/PUBLIC-API-V0_3_0.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/RELEASING.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/SECURITY.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/TRACK-P-MERGE-PROVENANCE.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/api/PUBLIC-API-v1.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/OWNER-PUBLICATION-DECISIONS.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/PRE-GITHUB-HARDENING.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/PRE-GITHUB-LICENSE-DECISION.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/README-CHECKLIST-0.1.0RC2.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/README-CHECKLIST-0.1.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/README-CHECKLIST-0.2.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/README-CHECKLIST-0.3.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.0RC2.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.3.md +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/01_lp_basic.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/02_milp_binary.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/03_qp_convex.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/04_choose_backend.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/05_infeasible.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/06_validation_diagnostics.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/07_reoptimization_session.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/08_semantic_model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/09_conic_model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/10_nlp_optional.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/11_minlp_optional.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/12_cp_reference.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/13_cp_sat_optional.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/14_persistent_session_optional.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/15_named_model_and_quality.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/16_direct_conic.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/17_batch_scenarios.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/18_sensitivity_and_scenarios.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/19_convex_atoms_optional.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/20_streaming_reuse.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/examples/21_checked_run_replay.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/setup.cfg +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/_synchronization.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/analysis.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/compile_milp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/diagnostics.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/heuristics.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/reference.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/solution.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/timeline.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/routing/validation.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/templates.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/compile_cp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/compile_milp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/distance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/heuristics.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/reference.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/solution.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/applications/tsp/validation.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/_casadi_highs_worker.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/base.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/bundled_capi.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/casadi_conic.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/health.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/highspy_native.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/metadata.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/nlopt_native.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/protocol_v2.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/pyscipopt_native.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/registry.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/scipy_highs.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/scipy_highs_lp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/scipy_slsqp_qp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/backends/scipy_vendored_highs_dev.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/acquire.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/baselines.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/bundle.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/campaign.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/environment.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/integrity.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/policy.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/registry.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/report.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/runner.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/slurm.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/specs.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/splits.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/summary.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/verify.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/benchmark/worker.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/engine.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/indicator.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/registry.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/transformation-tape.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/types.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/bridges/validation.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/backend-capability-v2.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/conformance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/enums.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/manifest.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/ontology.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/requirements.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/capabilities/resolve.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cli/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cli/backend_health.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cli/benchmark.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cli/benchmark_worker.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/conic/conformance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/conformance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/cp-ir-v1.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/ir.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/ortools_backend.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/ortools_worker.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/reference.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/serialization.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/cp/validate.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/diagnose/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/diagnose/infeasibility.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/diagnose/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/metrics.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/oracle.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/proof.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/references.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/evaluation/regret.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/exceptions.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/experimental/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/entrypoints.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/manager.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/manifest.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/extensions/versioning.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/history/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/history/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/history/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/history/sqlite.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/inspect/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/inspect/fingerprint.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/fingerprint.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/leakage.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/schema.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/intelligence/shift.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/binary64.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/csv.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/hashing.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/json.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/mapping.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/numeric.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/provenance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/result.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/source.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/io/strict_json.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/compiler.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/conformance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/convexity.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/ir.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/minlp-ir-v1.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/orchestrator.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/minlp/validation.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/affine.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/atoms.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/convenience.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/errors.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/expression.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/robust.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/model/types.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/ad.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/backend.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/compiler.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/conformance.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/ir.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/nlp-ir-v1.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/nlp/validation.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/plan/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/plan/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/plan/planner.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/plan/production.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/plan/selective_lp.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/enums.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/hashing.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/linear.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/problem/mps.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/py.typed +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/reporting/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/reporting/explain.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/reporting/model.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/reporting/quality.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/reporting/render.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/batch.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/batch_stream.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/budgeting.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/executor.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/manifest.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/multiobjective.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/options.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/portfolio.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/result.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/runtime/specialized.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/scenarios.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/conformance_v2.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/mutations.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/persistent-session-trace.schema.json +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/persistent.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/reoptimization.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/reuse.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/session/session.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/trace/__init__.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/trace/schema.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/validate/_certificate_arithmetic.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/validate/core.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot/validate/result.py +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/dependency_links.txt +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/entry_points.txt +0 -0
- {solverpilot-0.3 → solverpilot-0.4}/src/solverpilot.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"milestone": "RELEASE_0_4",
|
|
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
|
+
"Unified catalog includes specialized conic/NLP/CP adapters; the legacy LP/QP registry remains compatible.",
|
|
10
|
+
"Global and PDLP adapters are explicitly selected; existing default registry IDs are unchanged.",
|
|
11
|
+
"SCIP global bounds are solver-reported numerical evidence, not independent generic global certificates."
|
|
12
|
+
],
|
|
13
|
+
"package_version": "0.4",
|
|
14
|
+
"production_baseline_policy": {
|
|
15
|
+
"convex_qp": "osqp-native when available; otherwise scipy-slsqp-qp-bridge for non-proof intents",
|
|
16
|
+
"learned_lp_performance_routing": false,
|
|
17
|
+
"lp": "scipy-highs-ds",
|
|
18
|
+
"milp": "scipy-highs-bridge"
|
|
19
|
+
},
|
|
20
|
+
"schema": "solverpilot.backend_contract.v1",
|
|
21
|
+
"stable_backend_ids": {
|
|
22
|
+
"base_runtime": [
|
|
23
|
+
"scipy-highs-ds",
|
|
24
|
+
"scipy-highs-ipm",
|
|
25
|
+
"scipy-highs-bridge",
|
|
26
|
+
"scipy-slsqp-qp-bridge"
|
|
27
|
+
],
|
|
28
|
+
"optional_public": [
|
|
29
|
+
"highspy-native",
|
|
30
|
+
"osqp-native",
|
|
31
|
+
"pyscipopt-native",
|
|
32
|
+
"nlopt-slsqp-native"
|
|
33
|
+
],
|
|
34
|
+
"verification_only": [
|
|
35
|
+
"casadi-osqp-bridge",
|
|
36
|
+
"casadi-highs-bridge",
|
|
37
|
+
"casadi-cbc-bridge",
|
|
38
|
+
"bundled-osqp-capi",
|
|
39
|
+
"bundled-highs-capi"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"optional_conic_backends": [
|
|
43
|
+
"clarabel-native"
|
|
44
|
+
],
|
|
45
|
+
"optional_global_backends": [
|
|
46
|
+
"scip-global"
|
|
47
|
+
],
|
|
48
|
+
"optional_first_order_backends": [
|
|
49
|
+
"ortools-pdlp"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4 — Conservative certificates and explicit global optimization
|
|
4
|
+
|
|
5
|
+
- Reject the near-indefinite QP counterexample; require exact represented-data PSD evidence before independent QP bounds.
|
|
6
|
+
- Add a separate matrix nonconvex QP/MIQP IR and bounded factorable SCIP global path, including nonlinear equalities, two-sided rows, general integers, explicit nonsmooth atoms and interval-certified indicators.
|
|
7
|
+
- Add generalized power cone modeling, hashing, Clarabel transport and original-space validation.
|
|
8
|
+
- Reconstruct Clarabel duals and check conservative original-domain SOC/RSOC/PSD bounds; leave unsupported dual membership explicitly unverified.
|
|
9
|
+
- Add isolated CPU PDLP for LP and diagonal convex QP, with canonical duals and wall budgets.
|
|
10
|
+
- Preserve ambiguous primal status for PDLP dual infeasibility; require a checked feasible origin before claiming primal unboundedness.
|
|
11
|
+
- Add optional bounded LP witness recovery and independent rechecking; expose `certificate_recovery` on high-level solve calls.
|
|
12
|
+
- Skip OSQP matrix updates for vector-only edits and expose common reuse observations without claiming factorization reuse.
|
|
13
|
+
- Add shadow policy observations and exact/GPU prerequisite probes, with production learned routing and unqualified integrations disabled.
|
|
14
|
+
- Harden global model snapshots, domains, callback cleanup and numerical result storage; add analytic, exhaustive-reference and adversarial regressions.
|
|
15
|
+
- Preserve historical API/release artifacts; current top-level signatures gain only the documented optional recovery keyword.
|
|
16
|
+
|
|
3
17
|
## 0.3 — Numerical trust, sparse modeling and scenario analysis
|
|
4
18
|
|
|
5
19
|
- Correct Farkas, recession and LP/QP optimality checks using domain-aware bounds and exact operations on represented binary64 coefficients. Bound free QP residuals when a conservative strong-convexity bound is available.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Known limitations — 0.
|
|
1
|
+
# Known limitations — 0.4
|
|
2
2
|
|
|
3
|
-
Version 0.
|
|
3
|
+
Version 0.4 adds explicit global optimization, generalized power cones, CPU PDLP and conservative certificate recovery. See the [0.4 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md) for exact scope and APIs.
|
|
4
4
|
|
|
5
5
|
## Numerical evidence
|
|
6
6
|
|
|
@@ -10,9 +10,9 @@ Per-call ValidationTolerances is supported by execute, solve, solve_production a
|
|
|
10
10
|
|
|
11
11
|
## Conic and nonlinear scope
|
|
12
12
|
|
|
13
|
-
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
|
|
13
|
+
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 supported by direct Clarabel. Conservative independent SOC/RSOC/PSD bounds require exact dual membership, objective PSD evidence and a finite residual correction; transcendental cone dual certificates remain unsupported. Conic primal feasibility alone does not imply independently verified global optimality.
|
|
14
14
|
|
|
15
|
-
Smooth NLP remains optional through CasADi/Ipopt and produces local candidates.
|
|
15
|
+
Smooth NLP remains optional through CasADi/Ipopt and produces local candidates. An explicit SCIP path now accepts bounded factorable global NLP/MINLP, general integers, nonlinear equalities/two-sided rows and supported abs/max/min atoms. Indicator bodies require provable finite interval bounds. Arbitrary Python functions and independent generic global proofs remain unsupported. The existing convex binary OA path retains its previous restrictions and proof semantics.
|
|
16
16
|
|
|
17
17
|
## Execution and ownership
|
|
18
18
|
|
|
@@ -20,6 +20,8 @@ Batch accepts canonical LP/QP, uses spawn and requires a script main guard. Time
|
|
|
20
20
|
|
|
21
21
|
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.
|
|
22
22
|
|
|
23
|
+
PDLP supports only continuous LP/nonnegative diagonal QP and is process-isolated. It is not automatically selected. Exact SCIP and GPU readiness probes do not qualify execution; neither corresponding execution adapter is shipped.
|
|
24
|
+
|
|
23
25
|
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.
|
|
24
26
|
|
|
25
27
|
## Modeling and records
|
|
@@ -32,4 +34,4 @@ Learned routing remains disabled; OOD indicators are not calibrated probabilitie
|
|
|
32
34
|
|
|
33
35
|
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.
|
|
34
36
|
|
|
35
|
-
See [the 0.
|
|
37
|
+
See [the 0.4 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md) for APIs and examples.
|
|
@@ -43,3 +43,8 @@ include PUBLIC-API-V0_3_0.json
|
|
|
43
43
|
include BACKEND-CONTRACT-V0_3_0.json
|
|
44
44
|
include docs/release/SOLVERPILOT-PUBLIC-DOCS-0.3.md
|
|
45
45
|
include docs/release/README-CHECKLIST-0.3.md
|
|
46
|
+
|
|
47
|
+
include PUBLIC-API-V0_4_0.json
|
|
48
|
+
include BACKEND-CONTRACT-V0_4_0.json
|
|
49
|
+
include docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md
|
|
50
|
+
include docs/release/README-CHECKLIST-0.4.md
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: solverpilot
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4
|
|
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
|
|
@@ -74,11 +74,15 @@ Provides-Extra: minlp
|
|
|
74
74
|
Requires-Dist: casadi==3.7.2; extra == "minlp"
|
|
75
75
|
Provides-Extra: cp
|
|
76
76
|
Requires-Dist: ortools==9.15.6755; extra == "cp"
|
|
77
|
+
Provides-Extra: pdlp
|
|
78
|
+
Requires-Dist: ortools==9.15.6755; extra == "pdlp"
|
|
79
|
+
Provides-Extra: global
|
|
80
|
+
Requires-Dist: pyscipopt<7,>=6.2.1; extra == "global"
|
|
77
81
|
Dynamic: license-file
|
|
78
82
|
|
|
79
83
|
# SolverPilot
|
|
80
84
|
|
|
81
|
-
> **Current version:** `0.
|
|
85
|
+
> **Current version:** `0.4`. Repairs near-indefinite QP certificates and adds explicit global QP/MIQP/MINLP, generalized power cones, CPU PDLP, bounded LP witness recovery and reuse observations. Historical `0.1.0rc2` correctness/trust hardening remains in place. See the [0.4 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md) for examples and precise guarantees.
|
|
82
86
|
|
|
83
87
|
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.
|
|
84
88
|
|
|
@@ -111,11 +115,11 @@ SolverPilot has two complementary layers.
|
|
|
111
115
|
- proof-aware **certified convex binary MINLP** orchestration;
|
|
112
116
|
- integer/Boolean/interval constraint programming with an exhaustive reference backend and optional OR-Tools CP-SAT.
|
|
113
117
|
|
|
114
|
-
The extended APIs are canonically imported from submodules such as `solverpilot.model`, `solverpilot.conic`, `solverpilot.nlp`, `solverpilot.minlp`, and `solverpilot.cp`. The M30-frozen top-level `solverpilot.__all__` surface remains unchanged in this
|
|
118
|
+
The extended APIs are canonically imported from submodules such as `solverpilot.model`, `solverpilot.conic`, `solverpilot.nlp`, `solverpilot.minlp`, `solverpilot.globalopt`, and `solverpilot.cp`. The M30-frozen top-level `solverpilot.__all__` surface remains unchanged in this release.
|
|
115
119
|
|
|
116
120
|
### Verified trust, evaluation, extension, and application layers
|
|
117
121
|
|
|
118
|
-
The
|
|
122
|
+
The current 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.
|
|
119
123
|
|
|
120
124
|
- `solverpilot.io`: strict local JSON/CSV ingestion, bounded reads, explicit mapping, content hashes, and source provenance;
|
|
121
125
|
- `solverpilot.evaluation`: direct-run oracle construction and decomposed quality/runtime/failure regret;
|
|
@@ -137,12 +141,15 @@ These APIs remain submodule-scoped and do not change the frozen 78-symbol top-le
|
|
|
137
141
|
| Continuous convex QP | ✅ solve | validated candidate; bridge-specific optimality claims stay conservative |
|
|
138
142
|
| Semantic LP/MILP/QP modeling | ✅ | compiles to canonical core IR |
|
|
139
143
|
| Indicator constraints | ✅ restricted exact bridges | fixed-state simplification or finite-bound-certified Big-M; otherwise fail-closed |
|
|
140
|
-
| SOC | ✅
|
|
141
|
-
| RSOC | ✅
|
|
142
|
-
| PSD | ✅
|
|
144
|
+
| SOC | ✅ direct Clarabel + original validation | conservative independent original-domain bounds when dual evidence is available |
|
|
145
|
+
| RSOC | ✅ direct Clarabel + original validation | reconstructed duals and exact cone membership checks |
|
|
146
|
+
| PSD | ✅ direct Clarabel + original validation | independent bounds require conservative PSD evidence; generic matrices can remain unverified |
|
|
147
|
+
| Exponential / power / generalized power | ✅ direct Clarabel | numerical original-space validation; independent dual certification remains unsupported |
|
|
143
148
|
| Smooth continuous NLP | ✅ optional | local-optimal candidate only after validation/KKT checks; **no global NLP proof** |
|
|
144
149
|
| Convex binary MINLP | ✅ restricted | `globally_proven` is solver-certified inside the certified P8 binary/convex scope; `independently_verified_global` remains false until the full proof chain is independently reconstructed |
|
|
145
|
-
|
|
|
150
|
+
| Nonconvex QP / MIQP | ✅ explicit `GlobalQuadraticProblem` / SCIP | solver-reported numerical global bound; original candidate validation |
|
|
151
|
+
| General integer/nonconvex MINLP | ✅ explicit bounded factorable SCIP path | nonlinear equality/two-sided rows, abs/max/min and interval-certified indicators; no independent generic global proof |
|
|
152
|
+
| CPU PDLP | ✅ optional LP / diagonal convex QP | isolated worker; explicit selection |
|
|
146
153
|
| Constraint programming | ✅ reference solver | exhaustive proof only within reference state budget |
|
|
147
154
|
| OR-Tools CP-SAT | ✅ optional | exact verified integration target: OR-Tools `9.15.6755` |
|
|
148
155
|
| TSP application | ✅ reference / MILP / restricted CP / heuristics | independent route validation; only exhaustive reference paths issue an independent optimality proof |
|
|
@@ -157,7 +164,7 @@ These APIs remain submodule-scoped and do not change the frozen 78-symbol top-le
|
|
|
157
164
|
- Local-file symlink/path checks are fail-closed for static paths, but they are not a sandbox against a hostile process racing filesystem entries between validation and open.
|
|
158
165
|
- `HistoryStore` is a local plaintext SQLite store. It is opt-in and minimizes persisted solver/problem payloads, but it is not encrypted and caller-supplied metadata can still contain sensitive information.
|
|
159
166
|
- TSP/VRP exact reference algorithms are exponential and intentionally state-budgeted; the routing layer does not yet claim pickup-and-delivery, split delivery, stochastic travel time, live traffic, or real-time redispatch support.
|
|
160
|
-
-
|
|
167
|
+
- Exact SCIP and cuOpt GPU execution adapters are not shipped; readiness probes cannot qualify execution. See the [0.4 guide](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md).
|
|
161
168
|
|
|
162
169
|
## Requirements
|
|
163
170
|
|
|
@@ -464,6 +471,8 @@ A native patch is selected only when the exact granular capability and persisten
|
|
|
464
471
|
| HiGHS | `python -m pip install "solverpilot[highs]"` | public `highspy` native adapter |
|
|
465
472
|
| OSQP | `python -m pip install "solverpilot[osqp]"` | public OSQP Python adapter |
|
|
466
473
|
| SCIP | `python -m pip install "solverpilot[scip]"` | PySCIPOpt adapter |
|
|
474
|
+
| Global | `python -m pip install "solverpilot[global]"` | explicit SCIP nonconvex QP/MIQP/bounded MINLP |
|
|
475
|
+
| PDLP | `python -m pip install "solverpilot[pdlp]"` | isolated CPU LP/diagonal convex QP |
|
|
467
476
|
| NLopt | `python -m pip install "solverpilot[nlopt]"` | NLopt SLSQP integration |
|
|
468
477
|
| CasADi | `python -m pip install "solverpilot[casadi]"` | pinned CasADi 3.7.2 verification bridge |
|
|
469
478
|
| Clarabel | `python -m pip install "solverpilot[clarabel]"` | direct convex conic solver, including PSD, exponential and power cones |
|
|
@@ -480,18 +489,19 @@ An upstream package being installable is not by itself SolverPilot integration e
|
|
|
480
489
|
## What is not supported or not claimed yet
|
|
481
490
|
|
|
482
491
|
- learned LP performance routing in production;
|
|
483
|
-
- nonconvex
|
|
484
|
-
-
|
|
485
|
-
-
|
|
486
|
-
-
|
|
487
|
-
-
|
|
488
|
-
- nonsmooth generic NLP atoms such as arbitrary `abs/max/min`;
|
|
489
|
-
- general-integer or nonconvex/global MINLP;
|
|
492
|
+
- nonconvex or integer variables in the existing convex `QuadraticProblem`; use the separate `GlobalQuadraticProblem`;
|
|
493
|
+
- independent verification for every PSD matrix or transcendental cone dual;
|
|
494
|
+
- independent global optimality for arbitrary NLP/MINLP functions;
|
|
495
|
+
- nonsmooth atoms on the smooth Ipopt path; supported abs/max/min are available on the explicit bounded global path;
|
|
496
|
+
- exact SCIP and GPU execution adapters; readiness probes alone do not qualify them;
|
|
490
497
|
- nonlinear equalities/two-sided nonlinear constraints in the current MINLP proof path;
|
|
491
|
-
- indicator
|
|
498
|
+
- global indicator bodies without a provable finite interval enclosure;
|
|
492
499
|
- automatic guarantee that repeated solves use native warm starts/factorization reuse;
|
|
493
500
|
- automatic independent certificates for every infeasible/unbounded backend termination;
|
|
494
|
-
|
|
501
|
+
|
|
502
|
+
Per-call `tolerances=ValidationTolerances(...)` is available on `solve()` and
|
|
503
|
+
`solve_production()`. The [0.4 scope table](docs/release/SOLVERPILOT-PUBLIC-DOCS-0.4.md#scope-against-the-research-checklist)
|
|
504
|
+
maps each research item to its implemented API and remaining boundary.
|
|
495
505
|
|
|
496
506
|
See [Known Limitations](KNOWN-LIMITATIONS.md).
|
|
497
507
|
|
|
@@ -517,14 +527,17 @@ Extended modeling:
|
|
|
517
527
|
13. [`13_cp_sat_optional.py`](examples/13_cp_sat_optional.py) — optional OR-Tools CP-SAT
|
|
518
528
|
14. [`14_persistent_session_optional.py`](examples/14_persistent_session_optional.py) — persistent semantic-model session
|
|
519
529
|
|
|
520
|
-
|
|
530
|
+
New in 0.4: [global optimization](examples/22_global_optimization_optional.py),
|
|
531
|
+
[generalized power](examples/23_generalized_power_optional.py), and
|
|
532
|
+
[PDLP/certificate recovery](examples/24_pdlp_and_certificates_optional.py).
|
|
533
|
+
See all 24 examples in [`examples/README.md`](examples/README.md).
|
|
521
534
|
|
|
522
535
|
## API Reference
|
|
523
536
|
|
|
524
537
|
- [Stable top-level Public API](docs/api/PUBLIC-API-v1.md)
|
|
525
538
|
- [Extended Modeling API](docs/api/EXTENDED-MODELING-API.md)
|
|
526
|
-
- [Current frozen top-level API snapshot](PUBLIC-API-
|
|
527
|
-
- [Current core backend contract](BACKEND-CONTRACT-
|
|
539
|
+
- [Current frozen top-level API snapshot](PUBLIC-API-V0_4_0.json)
|
|
540
|
+
- [Current core backend contract](BACKEND-CONTRACT-V0_4_0.json)
|
|
528
541
|
- [Track P merge provenance](TRACK-P-MERGE-PROVENANCE.json)
|
|
529
542
|
|
|
530
543
|
## Trust and provenance
|