Every change, dated and tagged

Changelog

Every change to the scoring formula, data sources, or coverage, in the order it shipped. Each entry states what changed, why, what it measurably did to real scores, and what did not change — see the methodology for the formulas themselves.

Cite as

Fusion Transport Score (methodology v1.1.0, GTFS snapshot processed 2026-07-12). Numbers quoted may have shifted in later snapshots.

  1. 2026-07-12Methodologyv1.1.0
    Bus network plan algorithm shipped: candidate generation in Rust (existing routes, roads with bus service types, and greenfield corridors from real OSM road graph), greedy selection loop in Node. Every proposed route must clear routeScore >= 70 — the plan dogfoods its own methodology. Three-tier candidate generation feeds into a BFS deviation search with a persons-per-minute gate, then a greedy round-robin selection with marginal-coverage retirement. Synthetic placeholders (population/POI/road-corridor fixture generators) replaced with real data: OSM road graph, ERP-distributed mesh-block population, and 57 curated activity centres (Plan Melbourne hierarchy). 2-class design: coverage routes ship now, express routes deferred to Phase 2 (blocked on the OD travel-time matrix).

    Impact: 317 routes proposed covering 56.4% within 400m (from 20.3% baseline). 47 candidates rejected at self-gate.

    Unchanged: routeScore formula, suburb scoring, address scoring, band thresholds, verdict logic.

  2. 2026-07-12Methodologyv1.0.0
    Methodology page restructured into a six-page suite under /methodology/ (Overview, Data inputs, Assumptions, Code & mechanics, Glossary, FAQ), mirroring the Australian Zoning Atlas information architecture. Added: the master generosity principle ("the score is a generous reading of the network"), a full assumptions register with direction-of-bias tags auto-generated from config, an adversarial FAQ, a glossary of every term with deep-link anchors, and a data-inputs vintage table. Methodology version moved from date-based ("2026.07") to semver ("1.0.0"). Changelog entries now carry tags (Data/Methodology/Feature/Fix), quantified impact, and "what did not move" statements. Known-issues register established with three open items.

    Impact: Structural only — no score changes.

    Unchanged: All scoring formulas, constants, and band thresholds. The old anchor URLs (/methodology#part-01, etc.) now redirect to the appropriate new page.

  3. 2026-07-12Fixv1.0.0
    Verdict sentences for grid-scored suburbs now come from the same population-weighted 250m cells as the headline score, not stop-level data. Fixed a real self-contradiction found on Thomastown: a STRANDED suburb (93% of its population beyond an 800m walk of a viable route) was quoting "buses every 16 minutes", a stop-level headway most residents could not reach. Verdicts now check, in order, what share of the suburb can actually walk to a viable route (reach), whether a genuine population-level mode split exists (a minority mode reaching at least a fifth of the served population and scoring well ahead of the rest, not noise from one or two stops), and only then the usual weakest-dimension read — with the quoted wait and mode both population-weighted throughout. Legacy-mean suburbs and address-level results are unaffected; they have no suburb-wide population grid to draw from and keep the previous stop-based logic. Checked directly: reach drops below the new 40% threshold for 84 of 493 grid-scored suburbs, concentrated in STRANDED (median reach 8%) and essentially absent from DECENT/GOOD, matching the intended shape rather than overfiring across the board.

    Impact: Thomastown verdict now self-consistent. 84 suburbs get reach-gated verdicts instead of mode-split or weakest-dimension reads.

    Unchanged: Suburb headline scores, league-table membership, address-level results.

  4. 2026-07-11FeatureLatest sitev0.7.0
    Car competitiveness and cumulative accessibility (Part 09) published: a gravity-weighted pt_time/car_time ratio and jobs reachable within 45 minutes by public transport, computed from a real OSM + GTFS travel-time matrix (OSRM for driving, r5py for public transport, both run locally, no API costs). Jobs data corrected from the originally planned ABS DZN geography to SA2 — DZN place-of-work counts are not in the free Census DataPacks (only TableBuilder, a more restricted product), confirmed directly against the ABS product release guide before writing any code. Coverage is partial at launch: only suburbs inside the OSM extract computed so far are included, reported honestly via the manifest rather than backfilled with an approximation. Peak-hour driving times are not live yet — the DTP traffic-data API keys available this session did not authenticate against the real, documented endpoint, so only free-flow (best-case-for-driving) comparisons ship for now; the UI's peak/free-flow toggle is built and will light up once a working key is confirmed.

    Impact: New measure on 296 suburbs. No existing scores moved.

    Unchanged: All suburb scores, league-table rankings, verdict logic.

  5. 2026-07-11Fixv0.7.0
    Fixed a real, previously-undiagnosed structural risk: the representative-date picker's per-mode median (driver.rs) had drifted to a date almost two months in the future formetro_train on this run — a live instance of the "median can wander into a future service-change window" risk already flagged as open in the investigation log. The travel-time matrix uses a safer, manually-confirmed date instead — see the known-issues register for the current status of the underlying fix.

    Impact: Prevented a potential data-quality issue in the new car-competitiveness measure.

    Unchanged: No score impact from this change — the matrix dates were corrected before publication.

  6. 2026-07-10DataLatest datav0.6.0
    Suburb attribution now uses real point-in-polygon against Vicmap Admin locality boundaries for Greater Melbourne and the commuter corridor, replacing the previous name-parsing heuristic there (unattributed rate dropped from 7.54% to 5.76%; the remainder is outside this release's metro scope and still uses the old heuristic). Several suburbs' stop counts and scores changed as a direct result, including Carlton (previously a 1-stop fragment with its real ~44 stops misattributed elsewhere) and several outer growth-corridor suburbs gaining their first accurate entry.

    Impact: Carlton: 1-stop fragment → ~44 stops correctly attributed. Growth-corridor suburbs gained first accurate entry.

    Unchanged: Scoring formulas, band thresholds, aggregation method.

  7. 2026-07-10Featurev0.6.0
    Added a validation fixture suite checking real scores against cited external sources (Victorian Auditor-General's Office, Infrastructure Victoria) on every build, and Rust/frontend unit tests now run in CI.

    Unchanged: No score changes — test infrastructure only.

  8. 2026-07-10Methodologyv0.5.0
    Headway, service span, night network, reliability, and penalty-multiplier scores now use continuous curves instead of step tables, collapsing roughly 30 hand-picked breakpoints into 2-3 tunable parameters per curve. A wait of 19 versus 21 minutes (or any other pair a step apart) no longer produces an arbitrary score jump. Checked against the validation fixture suite before and after; every fixture still passes. One incidental, intentional change: reliability no longer flattens every active-day count below 5 into one identical score.

    Impact: Scores near step-table boundaries changed by small amounts (< 3 points). No suburb moved band.

    Unchanged: Band thresholds, league-table membership, the worst-20 list.

  9. 2026-07-10Methodologyv0.4.0
    Suburb scores now come from a 250m grid over the suburb's real boundary, each cell scored like a single address and averaged weighted by real 2021 ABS Census mesh block dwelling counts, replacing the plain stop-mean that let stop density (a tram corridor with a stop every 250m) drive the score instead of real service quality. Effect confirmed directly: St Kilda, Richmond, Fitzroy, South Yarra, North Melbourne, and Carlton all move from "decent" to "good" (they were suppressed by stop-averaging, not genuinely middling), while VAGO-cited growth-corridor suburbs stay patchy-to-poor as expected. One suburb (Doncaster East) moved further than expected on first check — inspected directly rather than assumed a bug: its western portion, where most dwellings sit, has genuinely decent SmartBus coverage even without the still-unbuilt rail line VAGO's report cites, and its eastern edge alone drags the average down, not up. 496 of 762 suburbs (within Greater Melbourne and the commuter corridor) use this grid method; the remainder still use the stop-mean fallback.

    Impact: St Kilda, Richmond, Fitzroy, South Yarra, North Melbourne, Carlton: decent → good. Grid-scored suburbs changed broadly; legacy-mean suburbs unchanged.

    Unchanged: Per-stop scoring formulas, band thresholds, address-level scoring.

  10. 2026.07Featurev0.3.0
    Suburb aggregation, league table, address catchment, and the feeder-network designer published. Distance calculation now applies cosine-of-latitude correction; the previous map tool overstated east-west distances by about 25% at Melbourne's latitude, which made 800m catchments too generous east to west.

    Unchanged: Per-stop scoring formulas.