rpg-mcp-live decisions: why the code looks like this