Skip to content

Releases: butkeraites/sirom

SIROM v0.4.4

Choose a tag to compare

@butkeraites butkeraites released this 07 Jun 18:05
d2300d7

Documentation patch over v0.4.3. No library code or API change.

Added

  • A "Release history" table in README.md linking each version to its GitHub release, its milestone (with PR count), and CHANGELOG.md.

Changelog index

  • v0.4.4 — Documentation patch (this release)
  • 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
  • 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

SIROM v0.4.3

Choose a tag to compare

@butkeraites butkeraites released this 07 Jun 17:38
8657b72

Tooling / process patch over v0.4.2. No library code or API change.

Added

  • scripts/refresh_release_index.py — regenerates the cross-release "Changelog index" footer on every GitHub release (versions from gh release list, blurbs from CHANGELOG.md); idempotent, with a --dry-run preview.
  • A "Cutting a release" section in CONTRIBUTING.md documenting the release flow end to end.

Changelog index

  • v0.4.4 — Documentation patch
  • v0.4.3 — Tooling / process patch (this release)
  • 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
  • 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

SIROM v0.4.2

Choose a tag to compare

@butkeraites butkeraites released this 07 Jun 16:52
07cba18

Tooling / process patch over v0.4.1. No library code or API change.

Added

  • This CHANGELOG.md, documenting every release.
  • A three-layer guard ensuring a version bump always ships its changelog entry:
    • a CI changelog-guard job — the un-bypassable merge gate;
    • a git pre-commit hook (.githooks/, enabled per clone with git config core.hooksPath .githooks);
    • a Claude Code PreToolUse hook (.claude/).
      See CONTRIBUTING.md.

This is the first release cut under that convention — the changelog entry shipped in the same PR as the version bump (#38), verified green by the new guard.

Changelog index

  • v0.4.4 — Documentation patch
  • v0.4.3 — Tooling / process patch
  • v0.4.2 — Tooling / process patch (this release)
  • v0.4.1 — Documentation patch over 0.4.0
  • v0.4.0 — Architecture-deepening release: make modules honest and concentrate scattered logic
  • 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

SIROM v0.4.1

Choose a tag to compare

@butkeraites butkeraites released this 07 Jun 16:02
92411b7

Documentation patch over v0.4.0. No code or API change.

Changes

  • The robust-CVRP demo README records that it runs on SIROM v0.4.0 and clarifies that v0.4.0's internal refactors don't change the POST /solveGET /jobs/{id} HTTP contract the demo consumes.
  • CONTEXT.md gains the rest of the v0.4.0 domain vocabulary: the cluster tree (Cluster tree, build, replicate) and validation status (Status, has_errors), alongside the solution-stage terms already recorded.

For the architecture-deepening work itself, see the v0.4.0 release notes.

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 (this release)
  • v0.4.0 — Architecture-deepening release: make modules honest and concentrate scattered logic
  • 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

SIROM v0.4.0

Choose a tag to compare

@butkeraites butkeraites released this 06 Jun 13:50
3c621fd

Architecture-deepening release: make modules honest and concentrate scattered logic, driven by an /improve-codebase-architecture review and grilling sessions.

Highlights

  • Honest two-stage Solution contract — the solver produces an UnscoredSolution (decision vector present only on optimal solves); the scoring stage adds feasibility_probability via an explicit score() transform, yielding a ScoredSolution. is_optimal() / feasibility() accessors replace the .get() / "key" in result guards consumers hand-rolled, and the type stops lying about solve_status (now int).
  • ClusterTree owns its own shaping — the KMeans / WCSS / selection / subdivision algorithm moved out of the orchestrator and behind ClusterTree.build(root_points, n_clusters); the tree's replicate gate no longer leaks. batch_solver shrinks ~70 lines.
  • One core-level error gatesirom/status_checks.has_errors replaces the any("[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.md glossary (including the feasibility probability vs robustness naming split) and the first docs/adr/ records, which capture the decisions not to make (keep Coefficient; 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

SIROM v0.3.0

Choose a tag to compare

@butkeraites butkeraites released this 05 Jun 19:46
e31e01d

Adds a second worked demo: solving real Vehicle Routing Problems under uncertainty with SIROM.

SIROM robust CVRP demo — routes and the distance-vs-robustness frontier

Highlights

  • Robust CVRP demo (demo/vrp/) — pick a real instance from VRP-REP, and SIROM returns a Pareto frontier of candidate routings trading total distance against the probability the plan stays feasible. The screenshot above shows it solving Augerat A-n32-k05: the route map (depot + two vehicle routes) beside the clickable distance-vs-robustness frontier.
  • SIROM-as-a-service — the demo backend never imports SIROM; it builds a SolveRequest, submits it to the SIROM HTTP API over the container network, and polls the job. One docker compose up brings up redis + sirom-api + the VRP backend + the web app.
  • Two uncertainty modesdemand (→ vehicle capacity, in b) and travel time (→ a synthesized per-route shift limit, in A), toggled in the UI with α / customers / scenarios / shift-tightness sliders.
  • Every coordinate-based CVRP dataset on VRP-REP — Augerat A/B/P, Fisher F, Christofides CMT/Set M, Uchoa 2014 X-instances, Golden, Li, VeRoLog (11 families). Instances are listed lazily from each zip; depot detection handles the fleet-departure-node convention (Uchoa-style).
  • Honest robustness — scored on the decoded routes rather than SIROM's vector-level feasibility (which depends on free MTZ auxiliary variables), with physically-equivalent routings deduped before building the frontier.
  • Next.js front end — SVG route map + a recharts distance-vs-robustness frontier you click to draw each routing.

Builds on the HTTP API, Docker, and MILP support shipped in 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
  • v0.3.0 — Robust CVRP demo over VRP-REP (demo/vrp/) (this release)
  • v0.2.0 — First substantial release of SIROM as a deployable, documented service

Full notes for every version: CHANGELOG.md

SIROM v0.2.0

Choose a tag to compare

@butkeraites butkeraites released this 01 Jun 19:08
a62baad

First substantial release of SIROM as a deployable, documented service.

Highlights

  • HTTP API — async job API (POST /solve → poll GET /jobs/{id}) with a self-documenting Swagger /docs and a ready-to-run /example.
  • Deploy in one command — multi-stage Docker image + docker compose up; Redis-backed job store for multi-worker scale-out.
  • ~9–29× faster — GLOP auto-selection, vectorized quality measure + scenario generation, numpy solver build, and threaded scenario solves. See benchmarks/.
  • LP and MILP — integer variables supported; solver auto-selection (GLOP/SCIP) with overrides for CLP, PDLP, and commercial GUROBI/CPLEX/XPRESS.
  • Correctness — fixed the constraint-slack used for clustering; characterized its frontier impact across size/seed/structure (benchmarks/slack_fix_frontier.md).
  • Tooling & docs — per-phase benchmark harness, reusable frontier-diff tool, adoption-focused README with a frontier plot, CONTRIBUTING.md.
  • Demo — a polished robust investment-portfolio web app built on SIROM (demo/).

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
  • v0.3.0 — Robust CVRP demo over VRP-REP (demo/vrp/)
  • v0.2.0 — First substantial release of SIROM as a deployable, documented service (this release)

Full notes for every version: CHANGELOG.md