solver-support 0.1.1
0.1.1 — first public release
A generic, domain-agnostic pipeline for running constraint-modelling and
planning solvers: Conjure / Savile Row (with SAT and CP backends), Fast
Downward, SymK, ENHSP, and UPF-constructed models. It handles the mechanics
every such run needs — building solver command lines from a model registry,
spawning subprocesses with timeouts and clean teardown, naming the per-run
files, parsing solver output into a uniform timing and cost-layer model, and
driving the horizon loop.
It carries no notion of any problem domain. The package ships unwired: a
bare import solver_support resolves no model registry and interprets no
objective, because it has no way to guess either. A consumer registers its
scoring, registry paths, warning logger and UPF planner CLI once, before first
use — see docs/injection-api.md.
Installation
pip install solver-support
Python 3.9 or newer. Runtime dependencies are psutil and PyYAML only.
Highlights
- Four injection seams, each with a module-level default, a setter, and a
wrapper that reads the current value at call time — so wiring may happen any
time before first use, and the core never imports its consumer. - A uniform timing model across very different backends. Savile Row's
horizon scan and the planners' cost-bound sweeps are squeezed into one shape,
with the layer arithmetic shared, so cross-solver comparisons are fair by
construction. Seedocs/timing-model.md. - A subprocess runner that distinguishes the three ways a run can fail —
timeout, interrupt, and a solver that ran and failed — tears down the whole
process tree on a kill, and records each outcome in the run summary. An
expected timeout is not logged as an error. Seedocs/solver-runner.md. - Consumer-owned summary fields live in an
extrabag, flattened into the
saved JSON, so a domain datum can ride along without the record growing that
domain's vocabulary.
Notes
Alpha: in day-to-day use by two consumers and covered by its own suite (223
tests), but the API may still shift between 0.x releases.
Python 3.9 support is deliberate — it is the system Python on macOS — and is
verified by building and running the suite on /usr/bin/python3, not merely
declared.
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com