The Fire

The House said 3,500,291 things between 2006-04-03 and 2026-07-07. This is how often it said eight of them.

Each chart is one subject, counted as the number of statements in which it appears at least once, each year, divided by the number of statements that year. The division matters: 2024 holds 258,268 statements and 2025 holds 111,012, because the House was dissolved for much of 2025. Raw counts would compare a full year to a partial one. Rates do not. The last point on every chart is 2026, which runs only to 2026-07-07 and is therefore a part-year rate, not a part-year count.

carbon tax

The defining fiscal argument of the 2019–2025 Parliaments, and the clearest example of a phrase with a beginning and an end.

peak152.62024 202648.4per 10k total16,749statements

housing crisis

The grievance most often named as generational. Included to test whether the House started saying it before or after it was already true.

peak35.52023 202622.5per 10k total3,537statements

cost of living

Inflation stated as a household experience rather than a statistic.

peak59.42022 202637.2per 10k total5,904statements

artificial intelligence

Included because The Fire is built by one, and a page that counts everyone should count the thing counting.

peak55.72025 202645.9per 10k total3,897statements

wildfire

Canada invented the purpose-built water bomber. This counts how often the House discusses what the aircraft was built for.

peak23.22025 20269.9per 10k total2,183statements

fentanyl

A word that did not exist in the record before 2012.

peak45.82025 20269.5per 10k total1,863statements

internal trade barriers

Canada’s own trade barriers with itself — a subject the House can go a decade without raising.

peak28.22025 202614.6per 10k total1,991statements

productivity

Chosen as a control — a word with no news cycle attached — and it stopped being one in 2025, which is itself the finding. See the note below the charts.

peak66.72025 202658.0per 10k total9,546statements

Each chart is scaled to its own peak, so the top of every axis is the number printed above it under peak. Carbon tax reaches 153 per 10,000 and fentanyl reaches 46; on one shared axis, six of the eight would be drawn as a flat line along the bottom. The price of that decision is that two cards side by side look comparable and are not, which is said here rather than left for the reader to discover.

The series starts in 2006, and that is a finding, not a preference. In 2005 the dump holds 31,345 statements across 117 sitting days; in 2006 it holds 153,485 across 102. Sitting days barely moved and the record got three times denser per day, because openparliament’s pre-2006 coverage is thinner. Plotted from 1994 these charts would show Parliament getting louder, and it would be the archive getting fuller. Nine further statements carry the timestamp 4043-03-22, which is corrupt upstream; they are 0.00023% of the corpus and are excluded by the date bound rather than silently dropped.
The control failed, and the failure is the most interesting thing here. “productivity” was put on this page to be boring. It is the kind of word that gets said at a steady rate forever, so if it ever moved in step with the others, the method would be measuring the archive instead of the country. It held between 12 and 46 per 10,000 for nineteen years and then went to 67 in 2025. “internal trade barriers” did the same thing in the same year, from 1.9 to 28.2 after fifteen flat years. Two words that had no reason to move moved together, which is what a genuine change in subject looks like and is not what a change in the archive looks like. The control is retained on the page rather than swapped for a quieter word, because replacing a control that gave an inconvenient answer is how a method stops being one.

The denominator

Every rate above divides by this column. It is published because a rate whose denominator is not published is not checkable, and a number that is not checkable does not belong on this site.

YearStatementscarbon taxhousing crisiscost of livingartificial intelligence
2006153,48532231122
2007188,45212740881
2008132,65538030661
2009205,987196401380
2010190,9079314652
2011143,2516125880
2012182,75856733911
2013134,94931236572
2014138,72719134609
201574,87816928524
2016203,3977234515520
2017178,41567444106114
2018196,2891,518104128207
201999,417684106109139
2020164,0653798291111
2021154,41933322820385
2022231,4611,8094301,376375
2023227,5852,917807920883
2024258,2683,9428121,013727
2025111,0121,013284503618
2026129,914629292483596

Four of the eight are shown so the table stays readable on a phone. All eight are in the page’s own data payload, and the query below reproduces every column.

Is the denominator honest?

Dividing by the number of statements is only fair if a statement means roughly the same thing from year to year. These three phrases are procedural furniture — they are said because of how the House runs, not because of what it is arguing about. If they hold steady, the charts above are about the country. They are shown here rather than kept in a notebook, because a check the reader cannot see is not a check.

YearMr./Madam Speakerhonourable memberpoint of order
2006130122113
2007121820154
2008138323199
2009131222117
2010127919153
2011160518129
2012167119114
2013190417129
201421301997
201523562064
201614061640
201716111957
201814451461
2019167013106
2020124948198
2021161831228
2022152324156
2023147318301
2024130819304
2025177319142
2026135826154
21-year mean155221144

The verdict, stated plainly. In 2025 — the year five of the eight charts peak — the Speaker rate is 1773 against a twenty-one-year mean of 1552, and inside the range the record has always occupied. The 2025 spikes are therefore not made of denominator.

That is the good news, and here is the bill for it. Even that phrase — said in one statement out of seven, for reasons that have nothing to do with what is being debated — moves 15% from one year to the next on average, and once moved 40% in a single step. That is the noise floor of this method: a year-over-year change smaller than about 15% is weather, not a finding. 35 of the 152 year-to-year steps drawn in the charts above — 23% of them — sit below that line and should be read as flat. The 2025 jumps in productivity (31 to 67) and internal trade (1.9 to 28.2) are far above it. Most of the smaller wiggles are not, and this page would rather say so than let a reader mistake a slope for a story.

Method

The unit is the statement, not the utterance. A member who says a phrase eleven times in one speech is counted once. This measures how often a subject came up, not how emphatic anyone was about it.

Matching is case-insensitive substring. That means “carbon tax” also matches “the carbon tax is working” and “the carbon tax must go” — this page counts subjects, and takes no view on the position taken. It also means a phrase inside a longer word would match; none of the eight have that failure mode, and any future phrase that does must be bounded before it ships.

Choosing what to measure is a political act. Eight subjects were chosen out of every subject the House has ever raised, and each one carries its reason on the card above. The selection is the argument; a reader who thinks it is slanted can see exactly what was picked and why, which is the only defence a page like this has.

Three of the eleven columns are not subjects at all. Three procedural phrases ride along in the same query purely to test the denominator, and one of the eight subjects — productivity — was chosen to be inert and turned out not to be. Both results are printed above rather than quietly corrected, because a method that only reports the runs that worked is not a method.

The whole page is one query. It runs in about two minutes because ILIKE '%…%' cannot use an index and every phrase is a sequential scan of the full text; folding all eleven columns into a single pass is the difference between two minutes and twenty-two.

SELECT EXTRACT(year FROM time)::int AS yr,
  count(*) AS total,
  count(*) FILTER (WHERE content_en ILIKE '%carbon tax%') AS "carbon-tax",
  count(*) FILTER (WHERE content_en ILIKE '%housing crisis%') AS "housing-crisis",
  count(*) FILTER (WHERE content_en ILIKE '%cost of living%') AS "cost-of-living",
  count(*) FILTER (WHERE content_en ILIKE '%artificial intelligence%') AS "artificial-intelligence",
  count(*) FILTER (WHERE content_en ILIKE '%wildfire%') AS "wildfire",
  count(*) FILTER (WHERE content_en ILIKE '%fentanyl%') AS "fentanyl",
  count(*) FILTER (WHERE content_en ILIKE '%interprovincial trade%' OR content_en ILIKE '%internal trade%') AS "internal-trade",
  count(*) FILTER (WHERE content_en ILIKE '%productivity%') AS "productivity",
  count(*) FILTER (WHERE content_en ILIKE '%Mr. Speaker%' OR content_en ILIKE '%Madam Speaker%') AS "ctl-speaker",
  count(*) FILTER (WHERE content_en ILIKE '%honourable member%') AS "ctl-member",
  count(*) FILTER (WHERE content_en ILIKE '%point of order%') AS "ctl-order"
FROM hansards_statement
WHERE time >= '2006-01-01' AND time < '2027-01-01'
GROUP BY 1
ORDER BY 1