Journal
Blog
Release notes, technical articles, and product direction updates from SolverForge.
Releases
Release notes are grouped by product major/minor line. Patch releases are folded into the matching line note, such as 0.9.x, 0.10.x, or 2.0.x, instead of receiving separate posts.
solverforge 0.22.x: The Canonical Grouping Kernel
The 0.22.x line routes every grouped stream through one accumulator kernel, retracts group and hash memberships by position, owns each grouping key once, and drops stale key Clone bounds in complement weights.
solverforge 0.21.x: Joined-Tuple Grouping and Live-Solution Lending
The 0.21.x line adds fluent group_by on Tri, Quad, and Penta joins, lends the live working solution through custom cursor pulls, moves search state to single ownership, fixes selector-subgraph merging, and preserves net route deltas through deferred precedence retractions in 0.21.3.
solverforge 0.20.x: Guided Search and Grouped-Scalar Neighborhoods
Accepted-count foraging, pooled construction scratch, guided scalar search, corrected late acceptance, and score-authoritative grouped neighborhoods across solverforge 0.20.0–0.20.4.
solverforge-cli 3.2.x through 3.5.x: Scaffold Targets and the MCP Shell
solverforge-cli 3.2.0 retargets fresh scaffolds to solverforge 0.19.7, 3.3.0 moves the MCP shell to rmcp 3.5.0, 3.3.2/3.3.3 fix generated constraint code, and 3.4.0/3.5.0/3.5.1/3.5.2 retarget scaffolds to newer cores.
solverforge-py 0.6.x: The Python Binding Runtime Bases
solverforge-py 0.6.7 through 0.6.15 move the Python binding onto published SolverForge Rust runtimes — 0.19.7 through 0.6.10, then 0.21.0 through 0.6.13, 0.21.3, and 0.22.0 — keeping the 0.6 Python authoring surface unchanged.
SolverForge Use Cases: Four Repository-Only Apps on the 0.19.7 Line
The solverforge-usecases bundle now ships eight runnable apps. Heat-treatment scheduling, warehouse order picking, fleet readiness, and flight-crew assignment join the four published use cases, all on solverforge 0.19.7 with solverforge-ui 0.9.0.
solverforge 0.19.6 and 0.19.7: Planning Pin Enforcement and One Version Surface
solverforge 0.19.6 adds the typed planning pin predicate and enforces pinned entities across construction, local search, exhaustive search, and list-owner dispatch, while skipping pin scanning for models without pins. solverforge 0.19.7 moves every workspace version surface under the release tooling.
solverforge-cli 3.1.0: 0.19.5 Scaffold Targets, Multi-Client connect, and the Agent-Centric Skill Installer
solverforge-cli 3.1.0 retargets fresh scaffolds to solverforge 0.19.5, solverforge-ui 0.9.0, and rmcp 3.4.0, writes MCP client configs for opencode, Claude Code, and Cursor, and makes the agent skill installer agent-centric with ownership receipts.
solverforge-cli 3.0.0: MCP Shell, connect, and the Modeling Agent Skill
solverforge-cli 3.0.0 adds an MCP server shell, the connect command, countable scalar ranges, the full list-metadata flags, and the portable solverforge-modeling agent skill, and moves fresh scaffolds onto solverforge 0.19.4.
solverforge-ui 0.8.x: Null-Safe Lifecycle Callbacks and the Bundled Agent Skill
solverforge-ui 0.8.0 makes the retained-job callback contract explicit and null-safe, keeps component content text-rendered by default, documents the timeline and Gantt model rules, and ships the crate version through SF.version and solverforge_ui::assets::version().
SolverForge 0.19.x: One Sequence Model
SolverForge 0.19.x makes planning list variables the sole model for routes and ordered assignments, keeps the full list-shadow system, and leaves ordinary scalar search on direct single-slot mutation. Patch releases through 0.19.5 tighten mandatory construction, control, telemetry, cancellation, and assignment batching.
SolverForge 0.18.x: One Compiled Search Runtime
SolverForge 0.18.x compiles native and dynamic models into one immutable search graph, adds resolved selector policy and qualified candidate traces, and hardens retained lifecycle control.
SolverForge Python 0.6.x: One Compiled Runtime
SolverForge Python 0.6.x moves dynamic Python models onto the SolverForge compiled runtime, makes model metadata explicit, adds qualified retained candidate diagnostics, and aligns 0.6.6 with SolverForge 0.19.4 plus native scalar-domain enforcement.
SolverForge Python 0.5.x: Dynamic Lists, Route Hooks, and Embedded UI Assets
SolverForge Python 0.5.0 moves the source line onto the SolverForge 0.17.2 runtime line, adds route-aware planning-list support, expands grouped scalar construction, embeds shared UI assets, and adds the deliveries FastAPI demo.
SolverForge 0.17.x: CVRP Domain Profile
SolverForge 0.17.x adds the stock CVRP list-variable domain profile, hardens route-distance handling, and exposes dynamic construction primitives.
SolverForge 0.16.x: Route and Savings Hooks
SolverForge 0.16.0 publishes the route/savings hook split for list variables, completes unmatched Clarke-Wright routes, and ships the 0.16 workspace crate line on crates.io.
solverforge-ui 0.7.x: Framework-Neutral Embedded Assets
solverforge-ui 0.7.0 publishes framework-neutral embedded asset access while retaining the Axum routes adapter and stable /sf asset URLs.
SolverForge Python 0.4.x: Python Models on the Native SolverForge Engine
SolverForge Python 0.4.0 publishes the solverforge PyPI package for CPython 3.14, with Python model decorators, callback constraints, direct solves, retained jobs, and the hospital FastAPI example.
solverforge-cli 2.2.x: Current Runtime Scaffolds and Model Resources
solverforge-cli 2.2.x provides neutral web, API, and CLI scaffolds; the current 2.2.3 package targets solverforge 0.19.3, solverforge-ui 0.7.0, and solverforge-maps 2.1.4.
SolverForge 0.15.x: Directed Projected Joins, Dynamic Bridge, and Node Sharing
SolverForge 0.15.2 publishes directed projected self-joins on top of the 0.15 line's solverforge_constraints compiler boundary, dynamic bridge crate, list precedence hooks, richer assignment-backed scalar neighborhoods, and move-level runtime telemetry.
SolverForge 0.14.x: Complemented Cross-Join Groups and Metric-Class Routes
SolverForge 0.14.x publishes direct complemented cross-join grouping, fixes filtered keyed join retention, unifies owner-aware route hooks, and adds route metric classes for Clarke-Wright construction.
SolverForge 0.13.x: Streaming Defaults, Typed Search, and Explicit Scoring
SolverForge 0.13.x publishes streaming model-aware search defaults, typed custom search registration, match-shape collectors, direct cross-join grouping, and the explicit scoring terminal surface.
SolverForge 0.12.x: Assignment-Backed Scalar Construction
SolverForge 0.12.x publishes assignment-backed grouped scalar construction, consecutive run collectors, cleaner generated stream sources, and renamed direct runtime assembly contracts.
SolverForge 0.11.x: Clone-Free Projected Scoring and Facade Exports
SolverForge 0.11.x publishes clone-free projected scoring rows, joined-pair projection, borrowed constraint metadata, and facade-level configuration exports while keeping generated CLI scaffold targets explicit.
solverforge-maps 2.1.x: Matrix Route Distances
solverforge-maps 2.1.x stores same-path route distances next to travel-time matrix data for routing and delivery applications.
SolverForge 0.10.x: Coupled Scalar Search and Zero-Erasure Scoring
SolverForge 0.10.x publishes the grouped-scalar runtime line: atomic coupled scalar construction, conflict-directed repair, level-aware simulated annealing, and coordinate-stable projected scoring rows.
solverforge-ui 0.6.x: Retained Job UI, Maps, and Scheduling Views
solverforge-ui 0.6.x carries the retained job frontend contract, map helper fixes, exact rail timeline geometry, current dependency baseline, and create-job identifier normalization.
SolverForge 0.9.x: Manifest-Owned Models and Runtime Tightening
SolverForge 0.9.x makes the scalar/list architecture explicit: planning_model! is the canonical model manifest, scalar metadata is descriptor-addressed, and the patch line tightens scoring and local search.
solverforge-cli 2.0.x: One Entry Point and Explicit Scaffold Targets
solverforge-cli 2.0.x introduced the one neutral scaffold entry point, generator-driven model growth, and explicit scaffold-target reporting for the CLI-owned runtime, UI, and maps targets.
solverforge-cli 1.1.x: Stabilized Scaffolding for the Converged Runtime
solverforge-cli 1.1.x polishes the CLI/runtime integration introduced in SolverForge 0.8.x, with aligned scaffold targets and improved test reliability for the retained lifecycle workflow.
SolverForge 0.8.x: CLI and Runtime Convergence
SolverForge 0.7.0 through 0.8.2 bring CLI scaffolding, config-driven runtime, and a retained SolverManager lifecycle—one coherent toolchain from first install to production operations.
SolverForge 0.6.x: Scaffolding and Codegen
SolverForge 0.6.x is now available with first-class project scaffolding and generated domain accessors for cleaner constraint code.
Planner123 1.0.x: Your Week, Optimized
Planner123 1.0.x is a personal task scheduler that models your week as a constraint satisfaction problem and solves it with SolverForge. Native Rust. Tauri desktop app. One binary.
solverforge-maps 1.0.x: Routing Infrastructure for VRP Solvers
solverforge-maps 1.0.x provides zero-erasure road network and routing infrastructure for VRP solvers, with OSM data, R-tree indexing, and 3-tier caching.
SolverForge 0.5.x: Zero-Erasure Constraint Solving
Introducing the SolverForge 0.5.x line: a general-purpose constraint solver written in native Rust with zero-erasure architecture and the SERIO incremental scoring engine.
Technical
How We Benchmark SolverForge
SolverForge benchmarks are built as reproducible engineering evidence: shared harness, explicit model parity, independent validation, scoped comparisons, and cataloged result artifacts.
The Current SolverForge Architecture: CLI-First, Rust-Native, Explicit
SolverForge's current architecture is CLI-first without being opaque: one neutral project shell, generator-driven model growth, scalar and list planning variables, retained jobs, and explicit Rust code.
Historical: From Quickstarts to Scaffolds
Archived transition note. The current SolverForge onboarding model is CLI-first: one neutral solverforge-cli project shell, generator-driven model growth, and scalar/list planning variables.
Public Means Public
In SolverForge, visibility is a contract enforced by the compiler. What's public is public. What's internal is internal. This will never change.
Historical: How We Built Quickstart Frontends with jQuery
Archived context for the old quickstart frontend architecture. Current SolverForge apps are generated by solverforge-cli and compose solverforge-ui.
Why Java Interop is Difficult in SolverForge Core
Reflections on the challenges of bridging Rust and Java in constraint solving, and the hard lessons learned along the way.
Order Picking Quickstart: JPype Bridge Overhead in Constraint Solving
Building an order picking quickstart with real-time 3D visualization deepened our understanding of JPype's performance characteristics in constraint-heavy workloads.
Dataclasses vs Pydantic in Constraint Solvers
Architectural guidance for Python constraint solvers: when to use dataclasses vs Pydantic for optimal performance.
Essays
Historical: Rust Constraint Solving Notes from the 0.5.0 Era
Archived context for early SolverForge design thinking. The current architecture is CLI-first, Rust-native, and centered on the current SolverForge runtime.