SIROM v0.4.0
Architecture-deepening release: make modules honest and concentrate scattered logic, driven by an /improve-codebase-architecture review and grilling sessions.
Highlights
- Honest two-stage
Solutioncontract — the solver produces anUnscoredSolution(decision vector present only on optimal solves); the scoring stage addsfeasibility_probabilityvia an explicitscore()transform, yielding aScoredSolution.is_optimal()/feasibility()accessors replace the.get()/"key" in resultguards consumers hand-rolled, and the type stops lying aboutsolve_status(nowint). ClusterTreeowns its own shaping — the KMeans / WCSS / selection / subdivision algorithm moved out of the orchestrator and behindClusterTree.build(root_points, n_clusters); the tree'sreplicategate no longer leaks.batch_solvershrinks ~70 lines.- One core-level error gate —
sirom/status_checks.has_errorsreplaces theany("[ERROR]" in s …)prose-match repeated at eight sites (message strings, which are test-pinned, left untouched). - Leaner result handling — the API drops a brittle results slice and counts cluster nodes directly from the tree.
- Domain docs — a new
CONTEXT.mdglossary (including thefeasibility probabilityvs robustness naming split) and the firstdocs/adr/records, which capture the decisions not to make (keepCoefficient; keep the portfolio/CVRP builders separate) so future reviews don't re-propose them.
No behavioural change to the solver or API contract; the full test suite passes and the existing endpoints are unchanged. Builds on the robust-CVRP demo from v0.3.0 and the HTTP API / Docker / MILP support from v0.2.0. Implements the method from Butkeraites, de Salles Neto & Gendreau, Expert Systems with Applications 203:117337 (2022).
Changelog index
- v0.4.4 — Documentation patch
- v0.4.3 — Tooling / process patch
- v0.4.2 — Tooling / process patch
- v0.4.1 — Documentation patch over 0.4.0
- v0.4.0 — Architecture-deepening release: make modules honest and concentrate scattered logic (this release)
- v0.3.0 — Robust CVRP demo over VRP-REP (
demo/vrp/) - v0.2.0 — First substantial release of SIROM as a deployable, documented service
Full notes for every version: CHANGELOG.md