Hey Robin,
I’ll try to help you with this problem, but keep in mind that i’m preety new in the DDD concepts.
I’ve said that saga should not depend on read model, the projection because in my opinion (I’ve also seen someone else with vast knowledge about thoose things saying similar thing, but i cannot remember who he was exactly or where it came from), the projections should be separated completely from the write model, the write model is tightly connected with your domains and so the read model should not affect your domain process.
It might be that your language isn’t quite right because as I said, for me, projections, read models are completely separated thing, and might not be in your use case.
I see that your projection contains the state of payments for each users which, from my perspective it is essentially an aggregate, not a read model, it has a state that is used for checking the constraint on for example if person was paid or not.
So instead querying the read model, you would just communicate with it, sending the commands and receiving appropriate events in your saga, it would just communicate between Person and AggregatOfPayments.
It is quite hard for me to model out exactly the solution, but i think we had miscommunication on the ‘projection’, ‘read model’ language, as long as you keep everything consistent in your domain model and manage inconsistency inside saga, its all ok.
Its also a question, whether you use event sourcing approach, it could be quite tricky to model out such system without boilerplate code, as for me i don’t really trust the event processors so i do not use projections inside my model to create some state that will be used in my core domain. Everytime i need something consistent, i create an aggregate, if it requires passing around similar commands between aggregates, i just do it.
To put it simply: Everything is possible with just aggregates and sagas between them, read model, projection, should be done in a way so it can be ran separately.
There’s one link i’ve found about the saga and read model: https://stackoverflow.com/questions/34284697/why-cant-sagas-query-the-read-side