Every run names the engine version that solved it. The version moves whenever a change moves a solver’s routes or numbers for the same settings, and a test fails until it does. When a newer engine re-runs a town, every page shows the new result and the old one is kept with the run, so nothing published is quietly replaced.
2026-10-22 · Results changed
CARP plans the priority windows. Through 0.13.0 it planned the whole town at once and checked the windows only afterwards, so its arterials were among its last streets: on the 0.12.0 gallery its last tier-1 street came at a median 97% of its finish (greedy's at 20%), after the 3 h window in 83 of the 143 CARP runs (greedy: 27), and in 56 of them greedy met the window CARP missed.
Re-solved 278 runs, last solved on 0.13.0: deadhead ratio moved on 68, finish time on 70.
2026-10-21 · Results changed
Salt follows the lanes and the street's tier, and grades are measured over 30 m or more. Through 0.12.0 every street took one rate per km of each pass, a residential street as much as an arterial, and a 5 m arc between two elevation cells could read an 84% grade.
Re-solved 275 runs, last solved on 0.12.0: deadhead ratio moved on 113, finish time on 120.
2026-10-19 · Results changed
A side of a street wider than one plow now takes a pass per lane, and interstates come off the plow list. Through 0.11.0 every side of a street was one pass whatever its width, so a four-lane arterial cost the plowing of a residential street, and interstates, which the state plows, were on every town's list.
Re-solved 272 runs, last solved on 0.10.0 (267) and 0.11.0 (5): deadhead ratio moved on 241, finish time on 240. Median last street plowed 10 min later.
2026-10-15 · Results changed
NSGA-II now trades blade-up against the hour the last street is plowed, starting from CARP's two plans. Through 0.10.0 it traded blade-up against the gap between the trucks' finishes, seeded with one CARP plan. On every published run its knee, the plan it hands back, was no better than CARP's plan on blade-up or on the finish, and in four of five drove more blade-up. On the bench, 0.10.0's knee is still beaten on both counts by CARP's clear-sooner plan in three runs of four (below). CARP's two searches (0.10.0) are the two ends of a real trade: clear-sooner finishes earliest, blade-up drives least. NSGA-II now fills in the plans between them.
No gallery run has been re-solved by this version yet.
2026-10-15 · Results changed
CARP now plows the last street sooner, and no crew works past its shift. Until now CARP's search took any move that cut blade-up, even when it made the plan finish later; it now lowers the finish first and cuts blade-up only within 1% of it. And a route that ran past 12 hours had one crew drive all of it; now the truck changes crews at the depot before a shift runs out.
Re-solved 251 runs, last solved on 0.3.0 (3), 0.6.1 (244) and 0.6.3 (4): deadhead ratio moved on 238, finish time on 242. Median deadhead ratio 1.7 points higher. Median last street plowed 13 min later.
2026-10-15 · Results changed
A truck now drives each street at the slower of its own speed and the street's speed limit. Until now every street was driven at the truck's speeds: 40 km/h plowing and 60 km/h blade-up, on a 25 mph residential street as on a highway. The limit is OSM's maxspeed where the street has one; otherwise it is a US default for its road class. Routes barely change, but every hour figure moves, most of all for plans that drive a lot of blade-up.
No gallery run has been re-solved by this version yet.
2026-10-15 · Results changed
Every CARP, NSGA-II and greedy route now drives home after its last street, and the totals count that drive. Until now a route stopped on its last street. CARP's construction and moves priced a drive home that the routes never built, so the plan and its reported totals disagreed by that drive. Two smaller changes ship with it: a truck plows a street of its trip that it would otherwise drive over blade-up, and or-opt checks salt one trip at a time.
No gallery run has been re-solved by this version yet.
2026-10-15 · Results unchanged
A CARP run says how its search ended. Since 0.6.0 the local search runs to its local optimum, the same plan on any machine, and its time limit is a safety cap; but a search the cap did stop was only reported under -v, so a plan that follows the machine's speed looked like any other. Erie's 7–8-truck sweep solves take about 1,500 s of their 1,800 s cap.
No gallery run has been re-solved by this version yet.
2026-10-15 · Results changed
A sweep's named depot can no longer land on a piece of road the rest of the town can't reach. center, north, south, east and west name a point (the network's mean, or its 10th/90th percentile latitude or longitude), and the solver put the depot on the node nearest that point, on any piece of the network. In Elkridge, Ellicott City and Duluth the node nearest the south point is on a motorway interchange, where one-way ramps never lead back to the town's streets: every street was unreachable, CARP served nothing (0 km, 0 h, status infeasible), and the sweep scored that as a perfect 0% DSR and ranked it best.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
engine.json names the versions a release's runs came from. The gallery's re-run on 0.6.1 went straight from 0.2.0 and 0.3.0, so 0.6.1, a patch, showed its runs as moved by changes it didn't make. Each version's effect now carries from_versions, and the engine page says which versions those runs were last solved on (0.2.0, 0.2.1 and 0.3.0), and that a patch's moves come from the releases they skipped, a newer street map, or the machine's speed, which set where the 120 s clock stopped a CARP search before 0.6.0. Which release moved which run can't be read off the runs, so they stay with the version that re-solved them. Results don't move.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
A storm's frames.json is written without indentation. The indentation was about 60% of the file: a 3-truck Houghton storm's frames go from 4.20 MB to 1.47 MB, the same JSON. Every storm in the gallery is about to be re-run (one reference storm per town), and compact frames bring that from +213 MB to about +89 MB on a 217 MB gallery. The other export files keep their indentation. Results don't move.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
Two provenance fixes for the export.
Re-solved 171 runs, last solved on 0.2.0 (115), 0.2.1 (1) and 0.3.0 (55): deadhead ratio moved on 50, finish time on 33. This version changes no results itself: the moves come from releases those runs skipped, a newer street map, or the machine’s speed, which set where the 120 s clock stopped a CARP search before engine 0.6.0.
2026-10-14 · Results changed
CARP's local search runs to its local optimum, the same plan on any machine wherever it converges inside its safety cap. Seven 5–6-truck runs on the largest towns needed more than the 120 s default and were re-solved with an 1800 s cap, where all of them converge (#108). Until now the clock stopped every search: on a gallery town one pass took 45–200 s, so a plan was whatever pass the machine reached.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
A storm's export no longer writes replow_heatmap.geojson. No page had read it since the storm page started counting re-plows from the frames, and it was a quarter or more of each storm's folder: 1.5 of Brattleboro's 6.2 MB. An export also removes a copy an earlier one left. Results don't move.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
A sensitivity sweep's sensitivity_results.json also records the CARP time limit and the elevation setting it ran with (config.carp_time_limit_s, config.elevation). With the grid and the nominals it already kept, that is everything needed to run the sweep again: the export hands it on as a recipe in sensitivity/config.json, which plowpath_resweep.py --include sweeps runs. Results don't move.
No gallery run has been re-solved by this version yet.
2026-10-14 · Results changed
A storm the safety cap stops is scored on what the trucks did. Storms that finish are unchanged, bit for bit; only a storm that runs to the cap (three times its length, at least 24 h) with work left moves. Runs don't move (the golden results are 0.4.1's).
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
What the storm page needs to analyse a storm, and room for several storms per town. Export-only: no storm or run result changes (the golden results are 0.4.0's).
No gallery run has been re-solved by this version yet.
2026-10-14 · Results changed
Storm re-planning, rebuilt. Storm results move; runs don't (the golden results, which hold no storm, are identical to 0.3.1's). Re-run the three gallery storms (brattleboro-vt, breckenridge-co, woodstock-vt).
No gallery run has been re-solved by this version yet.
2026-10-14 · Results unchanged
What the storm page needs to replay a storm on the run replay's clock. No storm or run result changes; the golden results are identical to 0.3.0's.
No gallery run has been re-solved by this version yet.
2026-10-13 · Results changed
With elevation on, the solvers plan salt as the metrics charge it, and fuel on level ground is the flat rate. Only elevation runs move: a flat run solves exactly as on 0.2.6 (the golden results, all flat, are identical).
Re-solved 6 runs, last solved on 0.2.0; every one kept its deadhead ratio and finish time.
2026-10-13 · Results unchanged
A Pareto run's export names only the route files it writes. No solver result changes; the golden results are identical to 0.2.5's.
No gallery run has been re-solved by this version yet.
2026-10-13 · Results unchanged
OpenStreetMap data from a local extract as well as from Overpass. No solver result changes; the golden results are identical to 0.2.4's.
No gallery run has been re-solved by this version yet.
2026-10-13 · Results unchanged
A town's best plan is one a crew could drive. No solver result changes; the golden results are identical to 0.2.3's.
No gallery run has been re-solved by this version yet.
2026-10-12 · Results unchanged
The search trace: every run now records how its solver got to the plan. No result changes; the golden results are identical to 0.2.2's.
No gallery run has been re-solved by this version yet.
2026-10-12 · Results unchanged
The blade-up floor: every run now says how good its deadhead is. No solver result changes; the golden results are identical to the previous release's.
No gallery run has been re-solved by this version yet.
2026-10-12 · Results unchanged
Greedy is fast on large towns. No solver result changes; the golden results are identical to 0.2.0's.
Re-solved 1 run, last solved on 0.1.0: deadhead ratio moved on 1, finish time on 1. Median deadhead ratio 1.0 points higher. Median last street plowed 10 min later. This version changes no results itself: the moves come from releases those runs skipped, a newer street map, or the machine’s speed, which set where the 120 s clock stopped a CARP search before engine 0.6.0.
2026-10-12 · Results changed
CARP builds its plan from an Euler tour and splits it among the trucks by hours. Every CARP result moves, and NSGA-II's, which starts from CARP's plan; greedy and the Chinese Postman don't. On the bench towns blade-up falls by about four fifths and the trucks finish together.
Re-solved 103 runs, last solved on 0.1.0 (97) and 0.1.3 (6): deadhead ratio moved on 78, finish time on 73. Median deadhead ratio 10.0 points lower. Median last street plowed 13 min sooner.
2026-10-12 · Results unchanged
Lighter route files. No solver result changes; the golden results are identical to 0.1.2's.
Re-solved 6 runs, last solved on 0.1.0: deadhead ratio moved on 6, finish time on 6. Median last street plowed 1 min later. This version changes no results itself: the moves come from releases those runs skipped, a newer street map, or the machine’s speed, which set where the 120 s clock stopped a CARP search before engine 0.6.0.
2026-10-12 · Results unchanged
What a superintendent reads in a client package. No solver result changes; the golden results are identical to 0.1.1's.
No gallery run has been re-solved by this version yet.
2026-10-08 · Results unchanged
A re-run by a newer engine no longer erases the result it replaces. No solver result changes; the golden results are identical to 0.1.0's.
No gallery run has been re-solved by this version yet.
2026-10-08 · Baseline
The engine as it produced every run in the gallery: the August–September 2026 resweep and the runs since. The version never moved before today, so those runs all say 0.1.0 across 21 engine commits; for them, engine_git_sha is what tells engines apart.
The reference every later version is measured against.