How we put a promise next to a number
Written down on October 31, 2026, before any number that tests a 2027 promise had been published. If we change a rule, this page will say what changed and when.
What this is
Olivia Chow won the mayoral election held on October 26, 2026. The City Clerk declared the result on October 29, 2026:
532,201 votes to Brad Bradford's 404,013, among 53 candidates for mayor.
/promises shows some of what she said she would do, in her own words, beside the published number that can test it, with the date of each.
It does not say whether a promise was kept.
Which promises get on the page
- A published public number can test it. The number comes from a source that publishes it on its own schedule: the City, the TTC, Statistics Canada. If we would have to count, survey or estimate it ourselves, it is not on the page.
- Her own words. Each promise is quoted as she or her campaign wrote it, character for character, short, with a link to where we read it and the date we read it. The quote is the most explicit version we found. If the only version we found is a news outlet quoting her, the page says so. We never paraphrase a promise and never fill in what she did not say.
- The number the promise itself names. If she said "fares frozen", the number is the fare. If she said "at or around inflation", it is the tax rise and inflation. We do not swap in a number that is easier to get.
- The comparison period is chosen now. Each promise's entry says which published number will be set beside it and over what period, before that number exists. A period is never picked after seeing the data.
- One source for each claim. The list is kept by hand in
docs/promises/promises.jsonin the project's repository, a source and a date read for every quote and every number.tcd/promises.pyrefuses a file where any of them is missing.
What the status words mean
Each promise carries one of three phrases. They describe the data, never the person.
Next number due [date]. The number that tests this promise has not been published yet. The date is when it is next expected, and the entry says where that date comes from. Numbers from before the promise are shown for context and are labelled as such.
Number published [date]. The number that tests this promise is out. The date is the day it was published, with its value, its source and the day we read it. We show it beside her words and add nothing to it.
No public number tests this. We have not found a published number that tests this promise. That is not a claim that none exists, and it does not mean the promise cannot be checked. If you know of one, tell us.
What we never do
- No "kept" or "broken", no grades, no scores, no colours, no ticks or crosses, no label on a person. A number beside her words is the whole answer.
- She does not control everything a number measures. Inflation, provincial decisions, council votes, interest rates and the TTC's own board all move the numbers we show. A number that moves says what happened in the city. It does not say why, or whose doing it was.
- Where her words leave room ("at or around"), we do not decide what counts. We show the gap between the two published numbers and stop.
- No per-councillor votes. How each member voted is someone else's work, and we link to it below.
- No promises from other candidates, and no promises from before 2026.
Changing these rules
A change to this page is recorded here with its date and the reason, and the old text is kept in the repository's history. A promise is never added, dropped or re-measured quietly: adding or dropping one is listed below with the day.
- October 31, 2026. First version.
Votes: the Council Scorecard
How every councillor has voted is not something we do. The Council Scorecard, made by Matt Elliott (City Hall Watcher), covers it. Ours is published numbers beside promises, so the two do not overlap.