“There can be no moral ambiguity,” the speaker tweeted last Monday. “There are no sides. There is no other argument,” he wrote in a lengthier Facebook post a week later, hours before the CNN appearance. Ryan’s target was clear, yet still, he did not name Trump. He wanted people to think—and write—that he was criticizing the president, even though he wasn’t actually criticizing the president. It was the kind of rhetoric usually reserved for the shadowboxing of early primary campaigns (at least until a certain pugnacious real-estate developer came on the scene), when candidates try to score points off their opponents without directly attacking them.

On Monday night, Ryan knew he wouldn’t be able to keep up the act. Whether the questions came from a constituent or CNN moderator Jake Tapper, the speaker would have to address Trump’s response to Charlottesville directly. What would he say? How hard would he hit the president?

Not very hard, it turned out.

It was Eric Kramer, a financial analyst from Racine, who asked the obvious question: “Are you willing to come out and forcefully condemn Trump's statement, such as Bob Corker and Mitt Romney have?”

This was slow-pitch softball, and Ryan was cocking his bat. “Let me get into this,” he began.

What followed was a grounder to second base. Ryan proceeded to offer a familiar mix of praise and polite criticism for the president, hailing his scripted remarks on Charlottesville (“pitch perfect,” Ryan declared) while knocking the ones that seemed to represent Trump’s true feelings about the protests. “I think he made comments that were much more morally ambiguous, much more confusing,” Ryan said about Trump’s defense of white supremacist demonstrators at a Trump Tower press conference a week ago. “And I do think he could have done better. I think he needed to do better.”

He added: “So I do believe that he messed up in his comments on Tuesday, when it sounded like a moral equivocation, or at the very least moral ambiguity, when we need extreme moral clarity.”

That was as far as Ryan was willing to go. “Morally ambiguous,” “needed to do better,” and “messed up.” He quickly pivoted off Trump to a broader point about the nation’s collective need to “unify and stand up against this repulsive, this repugnant, vile bigotry.”

“It should not be about the president,” Ryan said. “This is not about Republicans or Democrats.” He praised Trump’s remarks denouncing hate at the top of his Afghanistan speech, but when Tapper asked him if the president had “done enough,” Ryan deflected. “I don’t think any of us have done enough,” he replied.

An even more revealing moment occurred a few minutes later. Of all the questions Ryan faced during the hour-long town hall, none elicited a more passionate response from the speaker than one in which he was asked whether he would support a formal censure of the president, which some Democrats have proposed. “I will not support that,” Ryan declared. “That would be so counterproductive. If we descend this issue into some partisan hack-fest, into some bickering against each other, and demean it down to some political food fight, what good does that do to unify this country?”