§ changelog

In progress.

This work is in the product, and it is not available to use yet. There is no promised date.

9 updates

September 2026

RecordedRoutingImprovedIn progress

National transit feeds registered for the next graph

The transit routing registry now includes every active Canadian GTFS feed the Mobility Database lists. Static /transit/* stays the eight-pilot release.

  • 135 active feeds and 3 watch feeds, after a 614 MB national Valhalla measurement
  • Licence rows record Mobility Database terms, not a per-agency legal review
  • A failed download or a quarantined feed no longer stops prepare-routing

AvailabilityNot on the graph that is serving. /transit/* is still the eight-pilot static release, and only TTC is routing-ready.

RecordedRoutingImprovedIn progress

All eight pilot transit feeds are ingestible

The registered pilots are no longer held on terms. The next transit graph will ingest Calgary Transit, TTC, OC Transpo, GO Transit, UP Express, TransLink, STM and BC Ferries.

  • TransLink, STM and BC Ferries move from hold-legal to active; founder authorized ingest on 2026-09-18
  • GO Transit and UP Express synthesize calendar.txt so valhalla#5703 does not drop them in silence
  • Calgary Transit and OC Transpo drop broken shape_dist_traveled before ingest

AvailabilityThese feeds are ingestible for the next graph. Only TTC is routable on the graph serving today.

Availability unverified.

These records stay up. This page does not claim they are available or unavailable. A production check is still missing.

September 2026

RecordedGeocodingImprovedAvailability unverified

EV charging, and what happens north of sixty

Charging stations were already a Places category, so this is a measurement rather than a feature. We ran a QA sample across major cities, the Trans-Canada and the North: Yellowknife and Iqaluit return nothing.

  • category=ev charger on /places/nearby. No separate EV API, which is what the plan asked for and what already existed
  • Measured 2026-09-17 within 25 km of a downtown anchor: major cities hit the result cap, Banff 16, Swift Current 3, Kenora 2, Whitehorse 2, Yellowknife 0, Iqaluit 0
  • No network, connector type, power rating, port count, access or status: the corpus has no columns for them, so they are absent rather than null

AvailabilityAvailability was not re-checked against production for this record. The 2026-09-17 sample used category=ev charger on /places/nearby, with no connector, power, or status fields. Yellowknife and Iqaluit returned nothing.

RecordedGeocodingNewAvailability unverified

Places, and the fields we do not have

/places/search, /places/nearby and /places/{id} over the points of interest the geocoding corpus already carries. /geocode/nearby is unchanged. The plan asks for phone numbers and opening hours; we do not have them, so they are absent from the response rather than null.

  • /places/search returns places, where /geocode/search returns whatever best matches and for Calgary that is the city
  • /places/{id} is new capability rather than a rename: the geocoder had no by-id lookup, so a client that stored a result had no way to refresh it
  • A malformed id is a 404, not a 400. From a caller's side that is the same answer, and distinguishing them would leak our storage type into the contract

AvailabilityAvailability was not re-checked against production for this record. Phone, hours, website, accessibility, and operator are absent from the corpus, not returned as null.

RecordedRoutingNewAvailability unverified

Road closures, for one province

GET /incidents, /closures and /road-conditions over DriveBC's Open511 feed. One province of thirteen, and the reason it is one province is that 511 Alberta wants an API key nobody has registered for.

  • Polled live behind a 60 second cache, not ingested: a road event that is an hour old is worthless, and a cached snapshot hides its own age
  • A closure means the publisher said closed. The event category says why a road is affected, never whether it is shut, and several construction events describe brief closures in prose while reporting all lanes open
  • The publisher's description comes back verbatim. Our categories are a lossy projection of theirs, and the sentence a driver needs is in the prose

AvailabilityAvailability was not re-checked against production for this record. The note covers British Columbia provincial events from DriveBC. Routing does not avoid them.

RecordedPlatformNewAvailability unverified

Report a wrong result

POST /feedback files a data-correction report against any product, and every live example in the docs now carries a control that opens one. Authenticated like everything else and never metered: telling us our data is wrong must not cost you a call.

  • POST /feedback, and POST /places/{id}/feedback for a report about one place
  • Your request is attached only if you tick the box. The API refuses context without include_context: true rather than dropping it silently, and the dialog shows you the exact bytes first
  • Ten categories, narrowed to the ones that make sense for the product you are reporting on, and a free-text field that is stored exactly as you write it

AvailabilityAvailability was not re-checked against production for this record. Reports are not metered. You cannot read your reports back yet.

RecordedGeocodingFixedAvailability unverified

Why Victoria used to be a hamlet

Searching a provincial capital by name returned somewhere else of the same name. The cause was a unit error in the loaders that had been sitting in the corpus since the first build, and finding it took building the national benchmark that now guards it.

  • Victoria, Fredericton, Charlottetown, Kingston, Windsor and Waterloo return the city you meant
  • A 4,032-query benchmark across all thirteen jurisdictions, stratified by province, settlement size, language and query type, runs on every geocoder change
  • A leading number in a query now means an address lookup, with an exception for the Cariboo road houses that are named for their mileage

AvailabilityAvailability was not re-checked against production for this record. The measured ranks came from a local restore of the corpus, not from a serving rebuild.

RecordedRoutingImprovedAvailability unverified

Cycling and walking routes know about hills

The Canada graph is rebuilt over our own 30 m national elevation model, so every edge carries a grade and bicycle and pedestrian times reflect the climb. Driving times are unchanged: Valhalla's auto and truck costing have no grade term, which is why use_hills is a 400 on those modes rather than a no-op.

  • bicycle and pedestrian durations and isochrones now account for terrain, with no parameter needed
  • use_hills from 0 (avoid climbs even for a longer route) to 1 (indifferent), on bicycle and pedestrian only
  • Grades come from NRCan MRDEM-30 at 30 m to 85 degrees north, the same model the outdoor styles shade with; SRTM, which most engines use, stops at 60

AvailabilityAvailability was not re-checked against production for this record. The note says bicycle and pedestrian times use grade, and use_hills is rejected on driving modes.

RecordedRoutingImprovedAvailability unverified

Highway preference, without a second router

use_highways on /route and /isochrone is Valhalla's existing auto and truck costing option on the Canada OSM graph. Industry and remote routing stay experimental: no winter-road graph, no resource-road costing.

  • use_highways from 0 (avoid motorways and trunks) to 1 (prefer), on auto, car, and truck only
  • bicycle and pedestrian reject the flag with a 400 that names the allowed modes
  • Docs on /docs/apis/routing and /docs/reference/coverage say what the graph does not model

AvailabilityAvailability was not re-checked against production for this record. use_highways applies to auto, car, and truck. There is no winter-road graph.