Very good points on either side of the argument here.
GM: you've got to be able to be "wrong" in order to be right, to "lose" in order to win.
You're objectively right, but your players don't understand it. I get what's being said.
That said, my group is in a similar predicament: they make some dumb choices, and then when I follow what seems like natural consequences with that they get upset.
Case in point: they found a ruined village with a single, untouched Inn, the hideout of Bandits. After a fight was interrupted by a dragon showing up, the party was in the Inn while the dragon was outside eating the bandit bodies. The party left their mule and wagon at the village gate, where the bandits entered and retreated from. When one of the bandits (prisoner of theirs who escaped) took the wagon with him, one player got upset and blamed me for handing stuff out and taking it away. Me! It's a wagon filled with loot, left in front of the entrance FAR FAR FAR away from the players.
The long and short of it is that I still need to present things in a way that THEY feel responsible.
Responsibility is power. If you believe you are responsible, you have the power. If you blame the GM, or the world, you are externalizing the locus of blame, the locus of responsibility for your successes or failures. Now, it may be your fault. Really, you're the one who threw in that Assassin, whether or not the module wrote it. You're the one who should be saying "what makes a good scene?" rather than "what does the module tell me to do."
You could do the exact same encounter, but if you presented it differently, let the players have the power (or think they do) so that THEY chose the end result, they will at least understand they are the ones who did it.
This experience is making you a better GM. Learn from it. How can you change your presentation, whether or not you are in the right, so that your future games are better?
foreshadowing: mention the assassin works by invisibility, watching his foes; or that he strikes only when they're weakest.
Hints: mention there's a shadow or a moving tapestry (failed stealth you offer them), maybe an invisible assassin.
Roleplaying: The assassin could say "i'm impressed with your spirit. I'll give you a chance to flee. If not, I will fight you."