Two by-elections lost, one held by the Tories, but the biggest lesson of the last extraordinary few hours is apparent by looking at the swings against Rishi Sunak’s party: that they suggest the Conservative Party is on course to lose Number 10 at the next election.
This does not mean the situation isn’t salvageable. But it will be hard.
No single by-election result can be used to predict the result at next year’s poll, likely next autumn.
And there is plenty of nuance and questions for all three main party leaders.
And it is too early to say whether Johnny Mercer was unwise to compare the new Labour MP for Selby to a member of The Inbetweeners on account of his youth.
But it’s worth focusing on the overall picture.
All three by-election results show a swing away from the Conservatives: 6.7% to Labour in Uxbridge, 23.7% to Labour in Selby and 29% to the Liberal Democrats in Somerset in Somerton and Frome.
All three of these would be enough to mean Rishi Sunak would no longer be in Number 10: it would take a swing of just 3.2% for the Tories to lose their majority and – given the lack of potential coalition partners in parliament – handing the keys of Downing Street to Labour.
Even Labour’s weakest result in Uxbridge puts the Labour Party within touching distance of the 7% swing that would mean Sir Keir Starmer’s party is the largest party in a hung parliament.
It would take a 12% swing from Tory to Labour for Sir Keir to get an overall majority and to govern without the help of MPs from other parties.
So it is for the Tories to turn around the supertanker of unpopularity, something which supporters of the PM believe is possible if we see more positive economic data and the party behaves.
But the British public never delivers clean results, and there was much nuance in the verdict delivered by the constituents.
In Selby and Ainsty, the Labour result broke records – it saw Labour overturning the biggest Tory majority since the Second World War, and the party is evidently delighted.
However Labour victory was delivered by over 20,000 Tory voters staying at home. The Labour vote rose just a touch.
But come next year, will the 20,000 return to the Tories, switch to Labour or stay at home? That question, and questions like it, will determine the future of British politics.
Meanwhile, the Labour result in Uxbridge will be seen as a disappointment for many in the party, but is far from disastrous.
The margin of loss was small, and there was still a swing from the Tories to Labour big enough to see the Tories lose Downing Street if replicated in a general election.
Indeed it is a curiosity in this election that Labour didn’t challenge more robustly Tory claims they were on course to lose all three seats, given the Tories holding on to one was always a distinct possibility.
The biggest question will be how much this galvanises the Tories to amplify their attacks on Labour’s green policy – and whether Labour starts to tiptoe away from its previous positions – as it appeared to do over the ULEZ congestion charge.
Finally the Lib Dems pulled off a stunning victory in the South West in Somerton and Frome, taking back the seat once held by David Heath but lost in 2015 at the end of five years of coalition government that saw the Lib Dems in power.
But the Lib Dems are brilliant at pouring resources into by-elections – will they be able to repeat such results when resources are spread more thinly?
The failure of Labour to capture Uxbridge is probably enough to stave off open panic in the Tory party. But the picture for Mr Sunak remains ominous.