Skip to content

solver-support 0.1.1

Choose a tag to compare

@github-actions github-actions released this 16 Aug 22:36
· 10 commits to main since this release

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. See docs/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. See docs/solver-runner.md.
  • Consumer-owned summary fields live in an extra bag, 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