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.
Files changed (260) hide show
  1. solverpilot-0.2/BACKEND-CONTRACT-V0_1_0.json +38 -0
  2. solverpilot-0.2/BACKEND-CONTRACT-V0_2_0.json +42 -0
  3. {solverpilot-0.1.0rc2 → solverpilot-0.2}/CHANGELOG.md +23 -0
  4. solverpilot-0.2/KNOWN-LIMITATIONS.md +33 -0
  5. {solverpilot-0.1.0rc2 → solverpilot-0.2}/MANIFEST.in +10 -0
  6. {solverpilot-0.1.0rc2 → solverpilot-0.2}/PKG-INFO +13 -6
  7. solverpilot-0.2/PUBLIC-API-V0_1_0.json +475 -0
  8. solverpilot-0.2/PUBLIC-API-V0_2_0.json +475 -0
  9. {solverpilot-0.1.0rc2 → solverpilot-0.2}/README.md +10 -5
  10. {solverpilot-0.1.0rc2 → solverpilot-0.2}/RELEASING.md +1 -1
  11. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/api/EXTENDED-MODELING-API.md +9 -5
  12. solverpilot-0.2/docs/release/README-CHECKLIST-0.1.md +15 -0
  13. solverpilot-0.2/docs/release/README-CHECKLIST-0.2.md +12 -0
  14. solverpilot-0.2/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.md +22 -0
  15. solverpilot-0.2/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.2.md +147 -0
  16. solverpilot-0.2/examples/15_named_model_and_quality.py +14 -0
  17. solverpilot-0.2/examples/16_direct_conic.py +16 -0
  18. solverpilot-0.2/examples/17_batch_scenarios.py +18 -0
  19. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/README.md +6 -0
  20. {solverpilot-0.1.0rc2 → solverpilot-0.2}/pyproject.toml +2 -1
  21. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/__init__.py +2 -1
  22. solverpilot-0.2/src/solverpilot/_synchronization.py +10 -0
  23. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/_version.py +1 -1
  24. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/__init__.py +3 -0
  25. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/bundled_capi.py +2 -1
  26. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/casadi_conic.py +2 -1
  27. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/highspy_native.py +15 -1
  28. solverpilot-0.2/src/solverpilot/backends/metadata.py +16 -0
  29. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/nlopt_native.py +2 -1
  30. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/osqp_native.py +13 -1
  31. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/pyscipopt_native.py +2 -1
  32. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_highs_lp.py +32 -25
  33. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/v2.py +6 -0
  34. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/__init__.py +3 -0
  35. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/backend.py +3 -1
  36. solverpilot-0.2/src/solverpilot/conic/clarabel_backend.py +189 -0
  37. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/compiler.py +7 -3
  38. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/ir.py +10 -1
  39. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/validation.py +24 -2
  40. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/__init__.py +4 -1
  41. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/compiler.py +2 -2
  42. solverpilot-0.2/src/solverpilot/model/convenience.py +96 -0
  43. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/model.py +18 -7
  44. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/sets.py +17 -1
  45. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/quadratic.py +12 -9
  46. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/__init__.py +3 -0
  47. solverpilot-0.2/src/solverpilot/reporting/quality.py +32 -0
  48. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/auto.py +9 -4
  49. solverpilot-0.2/src/solverpilot/runtime/batch.py +143 -0
  50. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/executor.py +29 -6
  51. solverpilot-0.2/src/solverpilot/runtime/multiobjective.py +49 -0
  52. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/portfolio.py +3 -2
  53. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/__init__.py +3 -0
  54. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/persistent.py +8 -0
  55. solverpilot-0.2/src/solverpilot/session/reoptimization.py +81 -0
  56. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/session.py +6 -0
  57. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/trace/schema.py +2 -0
  58. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/__init__.py +3 -0
  59. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/core.py +2 -2
  60. solverpilot-0.2/src/solverpilot/validate/optimality.py +114 -0
  61. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/validate/result.py +2 -1
  62. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/PKG-INFO +13 -6
  63. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/SOURCES.txt +20 -0
  64. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/requires.txt +3 -0
  65. solverpilot-0.1.0rc2/KNOWN-LIMITATIONS.md +0 -70
  66. {solverpilot-0.1.0rc2 → solverpilot-0.2}/BACKEND-CONTRACT-V0_1_0RC2.json +0 -0
  67. {solverpilot-0.1.0rc2 → solverpilot-0.2}/CONTRIBUTING.md +0 -0
  68. {solverpilot-0.1.0rc2 → solverpilot-0.2}/LICENSE +0 -0
  69. {solverpilot-0.1.0rc2 → solverpilot-0.2}/PRE-PUBLIC-RELEASE-AUDIT-0.1.0rc2.json +0 -0
  70. {solverpilot-0.1.0rc2 → solverpilot-0.2}/PRE-PUBLIC-RELEASE-VERIFICATION-0.1.0rc2.md +0 -0
  71. {solverpilot-0.1.0rc2 → solverpilot-0.2}/PUBLIC-API-V0_1_0RC2.json +0 -0
  72. {solverpilot-0.1.0rc2 → solverpilot-0.2}/SECURITY.md +0 -0
  73. {solverpilot-0.1.0rc2 → solverpilot-0.2}/TRACK-P-MERGE-PROVENANCE.json +0 -0
  74. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/api/PUBLIC-API-v1.md +0 -0
  75. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/OWNER-PUBLICATION-DECISIONS.md +0 -0
  76. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/PRE-GITHUB-HARDENING.md +0 -0
  77. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/PRE-GITHUB-LICENSE-DECISION.md +0 -0
  78. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/README-CHECKLIST-0.1.0RC2.md +0 -0
  79. {solverpilot-0.1.0rc2 → solverpilot-0.2}/docs/release/SOLVERPILOT-PUBLIC-DOCS-0.1.0RC2.md +0 -0
  80. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/01_lp_basic.py +0 -0
  81. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/02_milp_binary.py +0 -0
  82. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/03_qp_convex.py +0 -0
  83. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/04_choose_backend.py +0 -0
  84. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/05_infeasible.py +0 -0
  85. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/06_validation_diagnostics.py +0 -0
  86. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/07_reoptimization_session.py +0 -0
  87. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/08_semantic_model.py +0 -0
  88. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/09_conic_model.py +0 -0
  89. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/10_nlp_optional.py +0 -0
  90. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/11_minlp_optional.py +0 -0
  91. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/12_cp_reference.py +0 -0
  92. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/13_cp_sat_optional.py +0 -0
  93. {solverpilot-0.1.0rc2 → solverpilot-0.2}/examples/14_persistent_session_optional.py +0 -0
  94. {solverpilot-0.1.0rc2 → solverpilot-0.2}/setup.cfg +0 -0
  95. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/_immutability.py +0 -0
  96. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/__init__.py +0 -0
  97. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/__init__.py +0 -0
  98. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/compile_milp.py +0 -0
  99. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/diagnostics.py +0 -0
  100. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/errors.py +0 -0
  101. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/heuristics.py +0 -0
  102. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/model.py +0 -0
  103. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/reference.py +0 -0
  104. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/solution.py +0 -0
  105. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/timeline.py +0 -0
  106. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/routing/validation.py +0 -0
  107. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/__init__.py +0 -0
  108. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/compile_cp.py +0 -0
  109. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/compile_milp.py +0 -0
  110. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/distance.py +0 -0
  111. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/errors.py +0 -0
  112. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/heuristics.py +0 -0
  113. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/model.py +0 -0
  114. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/reference.py +0 -0
  115. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/solution.py +0 -0
  116. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/applications/tsp/validation.py +0 -0
  117. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/_casadi_highs_worker.py +0 -0
  118. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/base.py +0 -0
  119. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/health.py +0 -0
  120. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/protocol_v2.py +0 -0
  121. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/registry.py +0 -0
  122. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_highs.py +0 -0
  123. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_slsqp_qp.py +0 -0
  124. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/backends/scipy_vendored_highs_dev.py +0 -0
  125. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/__init__.py +0 -0
  126. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/acquire.py +0 -0
  127. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/baselines.py +0 -0
  128. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/bundle.py +0 -0
  129. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/campaign.py +0 -0
  130. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/environment.py +0 -0
  131. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/integrity.py +0 -0
  132. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/model.py +0 -0
  133. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/policy.py +0 -0
  134. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/registry.py +0 -0
  135. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/report.py +0 -0
  136. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/runner.py +0 -0
  137. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/slurm.py +0 -0
  138. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/specs.py +0 -0
  139. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/splits.py +0 -0
  140. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/summary.py +0 -0
  141. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/verify.py +0 -0
  142. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/benchmark/worker.py +0 -0
  143. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/__init__.py +0 -0
  144. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/engine.py +0 -0
  145. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/indicator.py +0 -0
  146. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/registry.py +0 -0
  147. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/transformation-tape.schema.json +0 -0
  148. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/types.py +0 -0
  149. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/bridges/validation.py +0 -0
  150. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/__init__.py +0 -0
  151. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/backend-capability-v2.schema.json +0 -0
  152. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/conformance.py +0 -0
  153. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/enums.py +0 -0
  154. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/manifest.py +0 -0
  155. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/ontology.py +0 -0
  156. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/requirements.py +0 -0
  157. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/capabilities/resolve.py +0 -0
  158. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/__init__.py +0 -0
  159. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/backend_health.py +0 -0
  160. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/benchmark.py +0 -0
  161. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/benchmark_worker.py +0 -0
  162. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cli/capabilities.py +0 -0
  163. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/conformance.py +0 -0
  164. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/conic/conic-ir-v1.schema.json +0 -0
  165. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/__init__.py +0 -0
  166. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/conformance.py +0 -0
  167. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/cp-ir-v1.schema.json +0 -0
  168. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ir.py +0 -0
  169. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/model.py +0 -0
  170. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ortools_backend.py +0 -0
  171. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/ortools_worker.py +0 -0
  172. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/reference.py +0 -0
  173. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/serialization.py +0 -0
  174. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/cp/validate.py +0 -0
  175. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/__init__.py +0 -0
  176. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/infeasibility.py +0 -0
  177. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/diagnose/model.py +0 -0
  178. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/__init__.py +0 -0
  179. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/metrics.py +0 -0
  180. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/oracle.py +0 -0
  181. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/proof.py +0 -0
  182. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/references.py +0 -0
  183. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/evaluation/regret.py +0 -0
  184. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/exceptions.py +0 -0
  185. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/experimental/__init__.py +0 -0
  186. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/__init__.py +0 -0
  187. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/entrypoints.py +0 -0
  188. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/errors.py +0 -0
  189. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/manager.py +0 -0
  190. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/manifest.py +0 -0
  191. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/model.py +0 -0
  192. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/extensions/versioning.py +0 -0
  193. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/__init__.py +0 -0
  194. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/errors.py +0 -0
  195. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/model.py +0 -0
  196. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/history/sqlite.py +0 -0
  197. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/inspect/__init__.py +0 -0
  198. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/inspect/fingerprint.py +0 -0
  199. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/__init__.py +0 -0
  200. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/errors.py +0 -0
  201. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/fingerprint.py +0 -0
  202. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/leakage.py +0 -0
  203. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/schema.py +0 -0
  204. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/intelligence/shift.py +0 -0
  205. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/__init__.py +0 -0
  206. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/binary64.py +0 -0
  207. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/csv.py +0 -0
  208. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/errors.py +0 -0
  209. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/hashing.py +0 -0
  210. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/json.py +0 -0
  211. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/mapping.py +0 -0
  212. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/model.py +0 -0
  213. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/numeric.py +0 -0
  214. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/provenance.py +0 -0
  215. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/result.py +0 -0
  216. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/source.py +0 -0
  217. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/io/strict_json.py +0 -0
  218. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/__init__.py +0 -0
  219. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/compiler.py +0 -0
  220. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/conformance.py +0 -0
  221. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/convexity.py +0 -0
  222. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/ir.py +0 -0
  223. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/minlp-ir-v1.schema.json +0 -0
  224. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/orchestrator.py +0 -0
  225. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/minlp/validation.py +0 -0
  226. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/errors.py +0 -0
  227. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/expression.py +0 -0
  228. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/model/types.py +0 -0
  229. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/__init__.py +0 -0
  230. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/ad.py +0 -0
  231. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/backend.py +0 -0
  232. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/compiler.py +0 -0
  233. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/conformance.py +0 -0
  234. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/ir.py +0 -0
  235. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/nlp-ir-v1.schema.json +0 -0
  236. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/nlp/validation.py +0 -0
  237. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/__init__.py +0 -0
  238. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/model.py +0 -0
  239. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/planner.py +0 -0
  240. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/production.py +0 -0
  241. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/plan/selective_lp.py +0 -0
  242. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/__init__.py +0 -0
  243. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/enums.py +0 -0
  244. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/hashing.py +0 -0
  245. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/linear.py +0 -0
  246. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/problem/mps.py +0 -0
  247. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/explain.py +0 -0
  248. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/model.py +0 -0
  249. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/reporting/render.py +0 -0
  250. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/__init__.py +0 -0
  251. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/budgeting.py +0 -0
  252. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/runtime/result.py +0 -0
  253. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/conformance_v2.py +0 -0
  254. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/mutations.py +0 -0
  255. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/persistent-session-trace.schema.json +0 -0
  256. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/session/reuse.py +0 -0
  257. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot/trace/__init__.py +0 -0
  258. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/dependency_links.txt +0 -0
  259. {solverpilot-0.1.0rc2 → solverpilot-0.2}/src/solverpilot.egg-info/entry_points.txt +0 -0
  260. {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.1.0rc2
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
- > **Pre-release:** `0.1.0rc2`. This is the second pre-public release candidate; it supersedes `0.1.0rc1` after correctness/trust hardening and packages the hardened Core + Track P P0–P9 platform together with the verified S2–S10 trust, evaluation, extension, TSP/VRP, and history layers. Public PyPI publication remains fail-closed until the exact-artifact external qualification workflow passes.
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.1.0rc2` release candidate 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.
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
- After the first public release:
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 <REPOSITORY_URL>
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.1.0rc2` 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.
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.