Thanks for the ideas.
With the solution you're using, wouldn't an overlap be an issue. So one system going long, other short in the same instrument. Positions wouldn't reflect this and would assume there is some problem. When partial fills and disconnections are added, I can't see this being reliable.
With executions you'll have three critical pieces of info - instrument, position, clientId. Assuming you use one clientId per system, this gives a better picture than reqPositions.
But currently in production, I use the same method as you. For the future I need something with a bit more separation, that's all.