Skip to content

Commit 65cd0bd

Browse files
committed
docs(releases): document solverforge-py 0.6.3
Advance the rolling Python 0.6.x post with publication status, artifact shape, and mandatory-completion behavior. Append a dated Python update to the 0.19.x post while preserving its original release-time version table and the historical 0.6.2 record.
1 parent 831d2ad commit 65cd0bd

2 files changed

Lines changed: 59 additions & 29 deletions

File tree

‎src/_posts/releases/2026-07-13-solverforge-python-0-6-x.md‎

Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,28 @@ draft: false
55
description: >
66
SolverForge Python 0.6.x moves dynamic Python models onto the SolverForge
77
compiled runtime, makes model metadata explicit, adds qualified retained
8-
candidate diagnostics, and aligns 0.6.2 with SolverForge 0.19.0.
8+
candidate diagnostics, and aligns 0.6.3 with SolverForge 0.19.1 mandatory
9+
completion semantics.
910
---
1011

1112
**SolverForge Python 0.6.x** started with the
1213
[v0.6.1 source tag](https://github.com/SolverForge/solverforge-py/tree/v0.6.1)
1314
on 2026-07-13. Its current patch is
14-
[v0.6.2](https://github.com/SolverForge/solverforge-py/tree/v0.6.2), published
15-
on 2026-07-17. The current tag plus the GitHub and Forgejo `main` branches point
16-
to the same `0.6.2` source. GitHub CI and the automatic release workflow
15+
[v0.6.3](https://github.com/SolverForge/solverforge-py/tree/v0.6.3), published
16+
on 2026-07-18. The current tag plus the GitHub and Forgejo `main` branches point
17+
to the same `0.6.3` source. GitHub CI and the automatic release workflow
1718
completed successfully; the workflow built, verified, and published the source
1819
distribution plus Linux, macOS, and Windows wheels. PyPI now resolves
19-
`solverforge` to `0.6.2`.
20+
`solverforge` to `0.6.3`.
2021

2122
The 0.6 line targets CPython 3.14, consumes the published
22-
`solverforge 0.19.0` Rust crates, and embeds `solverforge-ui 0.7.0`. Version
23-
0.6.2 is a compatibility release that moves the exact Rust crate set from
24-
SolverForge 0.18.0 to 0.19.0 without changing the public Python API. The line
25-
replaces the wrapper-owned search path with one compiled SolverForge runtime
26-
and makes the Python-to-Rust contract explicit enough to validate, reuse, and
27-
diagnose.
23+
`solverforge 0.19.1` Rust crates, and embeds `solverforge-ui 0.7.0`. Version
24+
0.6.3 is a runtime-correctness patch that carries the 0.19.1
25+
mandatory-completion contract through the Python binding. The preceding 0.6.2
26+
patch moved the exact Rust crate set from SolverForge 0.18.0 to 0.19.0 without
27+
changing the public Python API. The line replaces the wrapper-owned search path
28+
with one compiled SolverForge runtime and makes the Python-to-Rust contract
29+
explicit enough to validate, reuse, and diagnose.
2830

2931
## What Changed
3032

@@ -40,6 +42,18 @@ candidate metric, or fallback solver path. Direct solves and retained jobs both
4042
reuse one immutable compiled runtime plan containing the schema, descriptor,
4143
and runtime model; solution rows, callbacks, seeds, and moves remain per solve.
4244

45+
### Mandatory work completes before publication
46+
47+
Solver and phase limits stay binding during construction. SolverForge publishes
48+
a best or completed solution only after every planning-list element, required
49+
assignment row, and non-optional scalar variable is assigned. There is no
50+
post-limit fallback that silently finishes required work.
51+
52+
If a configured limit is reached first, `Solver.solve(...)` raises a runtime
53+
error. A retained `SolverManager` job enters `FAILED` without publishing a
54+
latest snapshot. A pause before mandatory construction completes remains
55+
resumable internal state, but it does not expose a partial solution snapshot.
56+
4357
### Model metadata is explicit and scoped
4458

4559
Python declarations now describe the capabilities the compiled runtime may use:
@@ -142,10 +156,10 @@ implicit route callback conventions.
142156
Install the published package:
143157

144158
```bash
145-
python3.14 -m pip install "solverforge==0.6.2"
159+
python3.14 -m pip install "solverforge==0.6.3"
146160
```
147161

148-
The 0.6.2 source distribution is limited to package metadata and the Python and
162+
The 0.6.3 source distribution is limited to package metadata and the Python and
149163
Rust inputs needed to build the binding. Repository tests, examples, guidance,
150164
and tooling remain in the tagged source checkout. The wheel contains the public
151165
Python package, native extension, and embedded shared UI assets rather than the
@@ -157,31 +171,32 @@ inspecting the complete source:
157171
```bash
158172
git clone https://github.com/SolverForge/solverforge-py.git
159173
cd solverforge-py
160-
git checkout v0.6.2
174+
git checkout v0.6.3
161175
make develop
162176
. .venv/bin/activate
163177
python -c 'import solverforge; print(solverforge.__version__)'
164178
```
165179

166-
The command prints `0.6.2`.
180+
The command prints `0.6.3`.
167181

168182
Do not infer the Python package version from the Rust crate, CLI, or UI release
169183
line. Their current boundaries are:
170184

171185
| Surface | Current line |
172186
| ------- | ------------ |
173-
| SolverForge Python source | tagged `solverforge-py 0.6.2` |
174-
| Public PyPI package | published `solverforge 0.6.2` |
175-
| Rust runtime base | published `solverforge 0.19.0` |
187+
| SolverForge Python source | tagged `solverforge-py 0.6.3` |
188+
| Public PyPI package | published `solverforge 0.6.3` |
189+
| Rust runtime base | published `solverforge 0.19.1` |
176190
| Embedded UI base | published `solverforge-ui 0.7.0` |
177191
| CLI scaffold runtime | published `solverforge-cli 2.2.2` still scaffolds `solverforge 0.15.2` |
178192

179193
## Upgrade Checklist
180194

181-
- When upgrading from 0.6.1, update the package pin to 0.6.2 and rebuild the
182-
native extension; the public Python API is unchanged.
183-
- Check out `v0.6.2` and run model, lifecycle, snapshot, and example tests
184-
against the compiled 0.19.0 runtime.
195+
- When upgrading from 0.6.2, update the package pin to 0.6.3. The public Python
196+
API is unchanged, but a limit reached before mandatory completion now raises
197+
or fails instead of returning an incomplete solution.
198+
- Check out `v0.6.3` and run model, lifecycle, snapshot, and example tests
199+
against the compiled 0.19.1 runtime.
185200
- Replace legacy flat list route arguments with `ListRouteHooks` and
186201
`ListSavingsHooks`, using explicit row, solution, or callback source wrappers.
187202
- Declare assignment-owned scalar variables through
@@ -199,23 +214,24 @@ line. Their current boundaries are:
199214

200215
| Version | Date | Notes |
201216
| ------- | ---- | ----- |
217+
| `0.6.3` | 2026-07-18 | Aligns the exact SolverForge Rust crate set with 0.19.1, keeps configured limits binding during mandatory construction, and withholds incomplete best/completed snapshots. |
202218
| `0.6.2` | 2026-07-17 | Aligns the exact SolverForge Rust crate set with 0.19.0 while keeping the 0.6 Python API and embedded `solverforge-ui 0.7.0` assets unchanged. |
203219
| `0.6.1` | 2026-07-13 | Establishes the 0.6 line on SolverForge 0.18.0's compiled runtime, adds explicit model metadata, safe native scoring plans, qualified candidate diagnostics, and refreshed examples, and restricts source archives to the inputs needed to build the package. |
204220

205221
## Documentation Changes
206222

207223
- [SolverForge Python](/docs/solverforge-python/) now records the published
208-
0.6.2 package, Rust 0.19.0 base, and UI 0.7.0 base.
224+
0.6.3 package, Rust 0.19.1 base, and UI 0.7.0 base.
209225
- [Python Modeling](/docs/solverforge-python/modeling/) documents candidate
210226
metrics, assignment metadata, scoped list sources, and nested route/savings
211227
bundles.
212228
- [Python Constraints](/docs/solverforge-python/constraints/) explains the
213229
native specialization boundary and string-key join behavior.
214230
- [Python Solving & Runtime](/docs/solverforge-python/solving-and-runtime/)
215-
covers the single compiled runtime, phase telemetry, candidate traces, and
216-
qualified provenance.
231+
covers the single compiled runtime, mandatory-completion boundary, phase
232+
telemetry, candidate traces, and qualified provenance.
217233
- The [Hospital](/docs/solverforge-python/hospital-example/) and
218234
[Deliveries](/docs/solverforge-python/deliveries-example/) pages now match the
219-
tagged 0.6.2 examples.
235+
tagged 0.6.3 examples.
220236
- [Status & Roadmap](/docs/status-and-roadmap/) keeps tagged source, PyPI,
221237
runtime, UI, CLI, and worked-use-case release lines separate.

‎src/_posts/releases/2026-07-17-solverforge-0-19-x.md‎

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ same version line.
2121
> returning an incomplete plan. A pre-completion pause remains resumable
2222
> in-process without exposing a partial solution snapshot.
2323
24+
> **Python update, 2026-07-18:** SolverForge Python 0.6.3 is published with the
25+
> exact SolverForge 0.19.1 crate set and the same mandatory-completion boundary.
26+
> PyPI provides its source distribution plus Linux, macOS, and Windows CPython
27+
> 3.14 wheels.
28+
2429
> **Update, 2026-07-17:** SolverForge Python 0.6.2, Hospital 2.0.5,
2530
> Lessons 2.0.5, Deliveries 2.0.5, and FSR 2.0.6 are now published with the
2631
> exact SolverForge 0.19.0 crate set. The version table below preserves the
@@ -188,15 +193,22 @@ python3.14 -m pip install "solverforge==0.6.1"
188193
That package embeds the exact SolverForge 0.18.0 crate set; publishing the Rust
189194
0.19.0 workspace does not silently change an existing Python wheel.
190195

191-
SolverForge Python 0.6.2 was published later on 2026-07-17 and is now the
192-
current package:
196+
SolverForge Python 0.6.2 was published later on 2026-07-17:
193197

194198
```bash
195199
python3.14 -m pip install "solverforge==0.6.2"
196200
```
197201

198202
Version 0.6.2 embeds the exact SolverForge 0.19.0 crate set without changing
199-
the public Python API.
203+
the public Python API. SolverForge Python 0.6.3 is the current package:
204+
205+
```bash
206+
python3.14 -m pip install "solverforge==0.6.3"
207+
```
208+
209+
Version 0.6.3 embeds the exact SolverForge 0.19.1 crate set. Configured limits
210+
remain binding during mandatory construction; reaching one first raises from a
211+
direct solve or fails a retained job without publishing an incomplete snapshot.
200212

201213
The worked use cases were also republished later on 2026-07-17:
202214

@@ -238,5 +250,7 @@ datasets, or solver policies.
238250
published 2.2.2 scaffold targets separately from the 0.19.1 core.
239251
- [Crate & Runtime Map](/reference/crate-map/) aligns Rust, CLI, Python, and
240252
companion repositories on the new release line.
253+
- [SolverForge Python](/docs/solverforge-python/) records the published 0.6.3
254+
package and its exact SolverForge 0.19.1 runtime base.
241255
- [Status & Roadmap](/docs/status-and-roadmap/) tracks each independently
242256
published package and use-case version.

0 commit comments

Comments
 (0)