I haven't even considered one shared context. I scope messages instead: every message carries an audience. Everybody, one specific player, or a team. A bot's thread is then just every message whose audience includes it, flattened into its own conversation with the router.
I haven't mentioned team scopes in the article. Werewolves get a private chat at night to agree on a target. In the physical game they coordinate silently, with their eyes open while everyone else has theirs closed, so it seemed only fair to let them actually talk.
On self-preservation I would have bet the same way you did, and lost. They do not play like they have anything to lose. I watched one bot under a nine-player pile-on vote for itself, which was not one of the options it had been given.
Deception goes the same direction. You have to push them to commit to a lie, and the first one to try something bold gets swarmed by the others before it can pay off.
The router architecture you described is really the key insight here. Most projects that try to get multiple LLMs interacting just throw them all in a shared context and hope for the best, but flattening the group chat into individual user/assistant threads per bot is a much cleaner approach. It sidesteps the fundamental limitation of the API format while preserving the feel of a real conversation. The NEEDS_TURN flag preventing quiet players from disappearing is exactly the kind of detail that separates a working demo from something that actually holds up across multiple games. The state machine approach to game phases is also something I have seen work well in complex multi-agent systems, enforcing structured outputs per phase rather than letting the model free-form everything. The reminders appended to the last message rather than stored in history is a smart detail too, since it keeps the instruction fresh without bloating the context. And the play styles with opposite villager/werewolf motivations is a nice touch, forcing the same personality to express itself differently depending on the role. Looking forward to part two, especially around how models handle deception and self-preservation when they actually have something to lose.