Manual / Reading the numbers
When a number is missing
- For
- a controller looking at a blank where they expected a figure
- Status
- current
- Covers
- the dash, the greys, the dashed roads, (stale), and the counts that say what they left out
- Last checked against the app
6f7727e(2026-08-19)
This app draws a blank rather than a zero wherever it does not know something. There are five different kinds of blank, they mean five different things, and telling them apart is nearly always faster than asking anybody.
The five kinds
| What you see | What it means |
|---|---|
| — (a dash) | The app has no value for this. Not zero, not nothing happened |
| A blank cell, or a control with no value in it | Nobody has published the answer. Commonest for how late a bus is running |
| A grey or neutral colour, or a band named Unknown | The measurement could not be made. It is its own answer, not the bottom of a scale |
| A dashed road on the traffic overlay | A remembered reading, not a live one. Its age is in the tooltip |
| The control is not there at all | This deployment has no source for it. Nothing you can switch on |
The last of those is the one people report as a fault most often, and it is the one that never is one. See A tab is greyed out.
Where each shows up, and what to do
A dash
A dash means no value, and it is used consistently: a time the app does not have, a distance it does not trust, a diversion figure it could not derive, a punctuality cell with nothing observed in it, a service-km figure on a record it could not resolve.
Never read a dash as a zero. A punctuality cell reading — is not a bus
doing 0 km/h, and a service-km figure of — is not a closure that cost nothing.
What to do: nothing, usually. Two dashes are worth following up:
- a distance dash on a route whose panel also carries a geometry caption is the app declining to state a figure it cannot believe — see What the timetable does not know about the road;
- a service-km dash on a diversion activation comes with a note saying why, and the note is the diagnosis.
A blank where lateness should be
A bus the live feed has published no running prediction for shows no lateness anywhere: no pill on its panel, no text in the route panel's list, its own grey on the map. This is common, blameless and entirely separate from "on time" — it has a page of its own.
What to do: nothing for one bus. If every bus is grey, the prediction feed has stopped arriving; that is worth reporting.
Grey, or a band called Unknown
Three overlays have an explicit unmeasured state, and each names it rather than guessing:
- the traffic overlay draws unmeasured roads in neutral grey, with no data in its legend, and the Only congested roads filter deliberately hides them — a filter that quietly dropped the greys would read as "the feed improved";
- the headway pair list greys a pair whose deviation could not be measured, bands it Unknown, and says which of the two buses is missing. It never alarms, and it sorts last — absence is never news;
- the road overlays carry Severity unknown and Clearance unknown bands for records the source did not classify.
What to do: read it as a gap in the source, not a reading of zero. A grey road is not a clear road.
A dashed road
The traffic overlay draws a road dashed when it is showing you the last reading it had rather than a live one. The legend says last known, not live, and hovering the road gives its age.
What to do: check the age before acting on it. Treating a remembered colour as an observation is exactly the error the dash exists to prevent.
(stale), on the live line
The line under the sidebar heading replaces the feed's clock with (stale) when the app's most recent attempt to fetch the live feed failed. The buses on screen are real buses at their last known positions, drawn faded to say so.
(stale) is not an age. The attempt that failed may have been seconds ago. For the age of one particular bus, click it: the Bus panel says Reported 3 min ago.
Counts that tell you what they left out
Two screens deliberately say when they are not showing you everything, and both are easy to skim past:
- the Headway list's heading reads 18 of 43 concerning pairs when the server capped what it sent. A cap that is not reported reads as "this is all of them";
- a diversion's comparison against the timetable adds "Some bands are a partial total — not every segment has enough trips in every band." when it could not cover the whole day.
What to do: take the qualifier at face value. Neither is an error, and neither number is wrong — they are both narrower than they look.
What they do not mean
A blank is not a fault. Every case on this page is the app declining to state something it does not know. The design choice behind all of it is that a careful blank beats a confident number, and it was made deliberately in each place.
A missing number is rarely something you can fix. Most of these come from a source that has not published — the state's live feed, a road feed, the published timetable. An administrator can confirm that is what it is; they cannot make somebody else's feed publish.
Zero is a real value, and the app does print it. Where a count is genuinely
zero you will see 0, and where a diversion serves every stop on its section the
app says so in words: "None — every stop on this section is still served."
A dash and a zero are never used for the same thing.
And a screen with no numbers at all is usually a filter. Before reporting an empty table, check the operator scope, the depot, the date and the direction. See The map looks wrong for the map's version of the same list.