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.19.9: Composable Joins and One Operator Tree
solverforge 0.19.9 composes independent-key joins beyond five sources, joins grouped results, publishes low-level row producers over one typed operator tree, and fixes a lost resume wakeup.
solverforge 0.19.8: Three-Source Keyed Joins
solverforge 0.19.8 adds a third join source to keyed cross streams and the retained cross-tri incremental constraint that scores (A, B, C) rows, built on one arity-generic cross-join engine shared with the existing cross-bi constraint.
solverforge-cli 3.3.3: Score Rewrites and Demo-Data Resync
solverforge-cli 3.3.3 makes generate score rewrite every surface that carries the score type — constraint modules, the service, the DTO contract, lib.rs, and the MCP files — so a score change leaves a project that still compiles, and makes destroy resync the generated demo data so removed types do not stay behind in the seed.
solverforge-cli 3.3.2: Accessor-Wired Constraint Skeletons
solverforge-cli 3.3.2 streams generated constraint skeletons from the #[planning_solution] accessors, fixing the mid-solve "source Unknown cannot localize entity indexes" panic on the first solver-applied move, and aligns the bundled solverforge-modeling skill with the accessor-wired skeletons.
solverforge-cli 3.2.x and 3.3.x: SolverForge 0.19.7 Scaffolds, rmcp 3.5.0, and a Current Dependency Baseline
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, and 3.3.1 aligns the CLI's own dependency baseline with the current releases.
solverforge-py 0.6.10: The SolverForge 0.19.7 Runtime and solverforge-ui 0.9.0 Assets
solverforge-py 0.6.7 through 0.6.10 move the Python binding onto the published solverforge 0.19.7 Rust runtime and embed the solverforge-ui 0.9.0 assets, 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.