I voted other. The tension is like this: on one side, the very notion of a puppet is that you can't select production, and I like that. It's an interesting tradeoff. There are already powerful reasons not to annex cities, so there should be something that matters on the other side of the scale. On the other side, an empire should have some means of directing energy toward protecting its conquests. So, what I'd suggest is allowing empires to protect puppets in a dynamic way, not by hard coding. It should require some investment, and still leave puppets relatively more vulnerable than self-founded or annexed cities, just not as much as currently.
I suggest that a puppet should gain production toward walls and castles whenever resistance has ended and a great general is stationed in it. The amount of production could be a balance element, but as a starting guess I would make it 25% per turn for walls and 12.5% for castles. This would mean you could create a castle by keeping a GG in a city for 12 turns. Another possibility could let GGs build a citadel in a puppet and automatically create all era appropriate defensive buildings. These options would let a player defend territory, but at a cost, not just by buffing puppets generally.