It looks like you have the rules correct on surprise.

I've run this module twice in 5e for a six-man level 1 party.

Looking at my notes I originally had him as 3rd level assassin in my initial conversion pass. By the time I finished I had made him a Thug (MM p350), swapping his Strength and Dexterity scores. An assassin was too powerful, imo, for level one PCs. Instead, I was going to have him attack at a time the PCs were already in combat. Because of the Thug's abilities I don't have to care about stealth rolls. He just gets advantage on all attacks and that, to me, was a good enough simulation of 'surprise'. Though I will admit that no players were actually caught off guard by his betrayal.

The first time he struck was when the PCs encountered the skeletons. I considered them 'allies' for purposes of the Thug getting advantage. The fact that he hits twice at advantage will be far more of a surprise to your players than his betrayal will be. His damage per attack of 1d4+2 is low enough it won't kill any PC outright.

The second time he betrayed the PCs was in the caves fighting the Illusionist. This was a much harder fight but I realized that the Thug having to attack a foe that is within 5 ft. of an ally to get advantage means that you can't use advantage on the squishies in the back row. I was fine with this.

I know my solution doesn't directly address your questions about surprise. However, I wanted the interaction with the "assassin" to be more role-playing than combat centric considering he's probably the only thing the PCs will converse with in the entire first half of the module.