Skip to content
Accountability

Corrections log

Every correction to a published figure, dated, with the original value, the corrected value, and the reason. This is the separator between a data product and a commentary site.

29 Apr 2026 housing_trajectory
Was Housing share-card displayed "Housing: 48% of the way to the target" against a "305k · 2030 target" denominator (Labour's political pledge of 305,000 net additional dwellings per year by 2030/31).
Now Housing share-card now displays "Housing: 49% of the way to the target" against a "300k · OBR 2030 path" denominator (the OBR working assumption that housing_trajectory is scored against). Card text and indicator value now match: 146,880 annualised completions ÷ 300,000 = 49%.

A pre-broadcast cross-check on 2026-04-29 found the OG share card used Labour's 305k political pledge as the percentage denominator, while the homepage delivery-commitment card and the housing_trajectory indicator score the same numerator (146,880 annualised Q4 2025 completions) against the OBR 300k working assumption. The two denominators answer different questions, but on a single share card we prefer arithmetic coherence with the indicator the card visualises. Labour's 305k pledge remains surfaced on the homepage delivery-commitment card prose, where both denominators are explained side by side (live indicator 49% vs OBR 300k; annual NAD 73% vs Labour 305k). The numerator (147k annualised completions) is unchanged.

29 Apr 2026 headline_score
Was Editorial sentence attributed the dominant pillar's 7-day delta to "the score" (e.g. "the score is worsening (down 12.6 on the week)" while the headline was actually +1.7 on the week).
Now Editorial sentence now attaches the move to the pillar by name (e.g. "Market Stability is the biggest drag, down 12.6 on the week."). The headline's own delta is published separately under headline.delta24h / .delta30d / .deltaYtd.

A pre-broadcast audit on 2026-04-29 found the editorial copy could attribute a pillar-level move to the headline when the dominant pillar moved against the headline. The fix changes the sentence subject so the magnitude can never be misread as the headline's movement; the headline's own deltas remain on the response unchanged. Methodology and pillar/headline values are unaffected.

29 Apr 2026 brent_gbp
Was £72.68/bbl, observed_at 2026-04-17 (12-day-stale editorial fixture).
Now £76.46/bbl, observed_at 2026-04-20 (live EIA RBRTE × BoE XUDLUSS pair from the 2026-04-27 backfill run).

The live EIA Open Data v2 path had been silently returning empty rows since 2026-04-17, so every five-minute cron tick was re-writing the editorial fixture rather than ingesting a fresh print. The latest-observation selector previously preferred the most-recently-ingested live row, so the stale-dated fixture row kept winning over fresher backfill data. Fixed by a two-tier selector that prefers fresher observed_at when backfill is more recent than a fixture-fall-through, plus an editorial fixture refresh to match. Live-path root cause (EIA returning empty rows for the EPCBRENT facet) is still under investigation; diagnostic logging widened in the same change.

29 Apr 2026 ftse_250
Was 22,984, observed_at 2026-04-23 (6-day-stale editorial fixture).
Now 22,583, observed_at 2026-04-24 (live EODHD close from the 2026-04-27 backfill run).

The live EODHD path had been returning HTTP 404 for FTMC.LSE, so the adapter was silently falling through to the editorial fixture every cron tick. Same root cause and same fix as the Brent correction above: two-tier latest-observation selector now surfaces fresher backfill rows when a live adapter is silently failing through to an older fixture, plus an editorial fixture refresh. EODHD ticker-namespace investigation still open.

28 Apr 2026 headline_score
Was Score values used pressure polarity: 0 = slack / on track, 100 = maximum stress.
Now Score values use public polarity: 0 = maximum stress, 100 = slack / on track.

Methodology change to align the published Tightrope Score with ordinary reader intuition: a falling score now means conditions are worsening. Historical headline, pillar, and event-delta rows were converted by complementing score values and flipping score-delta signs. NULL and out-of-range rows were left untouched.

27 Apr 2026 housing_trajectory
Was 72.4% (legacy seed row, FY-outturn-ratio methodology, observed_at 2026-03-31)
Now 49.0% (live fixture, quarterly-run-rate methodology, observed_at 2025-12-31)

A snapshot-selector bug caused the API to serve a stale seed-era row that outranked the current fixture under MAX(observed_at). The selector now picks live observations by MAX(ingested_at) over rows whose payload_hash is not historical-backfill or seed; the homepage now displays the fixture-driven Q4 2025 completions × 4 / 300k = 49.0%. The 72.4% figure was an annual outturn ratio (net additional dwellings 221,400 / 305k) — a different measure from the indicator's methodology and never the value the fixture intended to publish. Both measures remain documented in the delivery commitment card alongside the indicator.

17 Apr 2026 planning_consents
Was 7,300
Now 7,200

Q4 2025 large-site consents re-derived from the MHCLG release (major dwellings 900 + minor dwellings 6,300 = 7,200). The earlier 7,300 figure was a provisional rounding superseded by the published breakdown.