As you can see, this evening a rapid-fire succession of events appears to have closed the door on Trumpcare 2.0 in the Senate. That doesn’t mean Obamacare repeal is over by any means. But it’s another major defeat. And after a while defeats tend to grow on themselves. I fully expect Mitch McConnell to go back to the drawing board, tinker with the bill and try again. But this is the first time I sense that McConnell’s next attempt may be harder than the last. Or, to put it a different way, it’s possible that this defeat for the repealers may prove a turning point in the grinding war over Obamacare repeal even though it will not be the final battle.

In any case, I want to set aside predicting the future, which is a bad business, and share some thoughts on the big picture behind what happened tonight.

Why did this happen?

A few critical reasons: The biggest reason is that Trumpcare is supremely unpopular. The bill’s mammoth unpopularity is scarcely even questioned. Nor is there much attempt to make it more popular. Nothing for weeks has been about anything more than assembling 50 votes. Closely related to this and deepening this unpopularity is the huge and sustained nationwide activism against Trumpcare. Finally, the absolute opposition of Democrats has forced Republicans not only to push these bills solely with Republican votes but with zero bipartisan cover. The latter point is very important. Each of the three factors has reinforced the others.

But there is one deeper driver at work which makes each of the above possible. At the outset of Obamacare’s post-legislative history, Republicans were for repeal. Then repeal became ‘Repeal and Replace’, a tacit but highly significant concession that the 2009 status quo ante was not acceptable. Over time, Repeal and Replace got gussied up with claims that the replacement for Obamacare would be better than Obamacare. There was a good deal of vagueness and mendacity packaged into this messaging. But the critical thing was that in the process of evolving from ‘Repeal’ to ‘Repeal and Replace’, Republicans made a tacit concession that those who had gained coverage under Obamacare should in fact have coverage. It was just that Obamacare did it in a flawed way and Obamacare’s replacement would do it better.

We know this in many ways but the clearest evidence is the simple fact that Republicans were so resistant to accepting the repeated Republican-appointee-led CBO scores showing tens of millions of people losing coverage. In spite of themselves Republicans had been forced to accept that the number of people covered is the core metric by which we judge any plan. Of course, most Republicans have not explicitly accepted this. But the war against the CBO scores testify to an acceptance in spite of themselves. If that wasn’t the metric, they wouldn’t care.

This de facto acceptance that those who got coverage under Obamacare should not lose coverage created a basic and largely unresolvable problem. Without an architecture at least something like Obamacare and without the taxes passed to fund it, it simply was not possible to provide coverage on this scale. There’s basically no shortcut. This has left Republicans with a contradictory set of promises that are quite hard to reconcile or fulfill.

In most respects, this is no different from what Democrats hoped would be a truism about major new programs. Once people get access to new benefits they’re really hard to take away, especially when tens of millions of people have them. Of course, none of this was foreordained and it’s far from guaranteed even now. It is quite possible that McConnell will still be able to pass a Trumpcare bill. If he does, it will immediately be passed by the House and signed into law. If that doesn’t happen it will only be because of furious and sustained activism around the country. But it is critical to understand that key difficulties Republicans are having today stem from tacit concessions about the reality of Obamacare that now go back years.