I really like the proposed system, on top of being light on calculations it's easy for the player to follow(generally a fan of MoO2 style abstractions using low integers).
The only point that's a bit out of place for me is 1 unfulfilled demand using the same amount of reserves over time for a size 4 and a size 8,
despite the selection mechanics suggesting that they are orders of magnitude different.
Something like each tier using 2-10x as much supplies/time would get out of hand really fast, a suggestion in the spirit of simplicity:
- 4 demand world with no supply uses 1+2+3+4 units each month
- 5 demand, 3 fulfilled: 4+5 units
- 8 demand, 5 fulfilled: 6+7+8 units
Not necessarily good for gameplay, just throwing it out there to bring manual supply/market size models a bit closer.
That said, I totally get what you're saying there. Was actually thinking about having non-exported production give a bit of credits if there's unfilled demand nearby - a small amount compared to being a primary exporter, but something, just for the case you're describing. Not sure whether it'll be necessary (I also don't know right now), but it's an option.
IMO multiple small worlds could even get full price for the pooled production, it'd make sense if there is so much unfulfilled demand nearby.
Guessing that gets back to the performance problem, your idea doesn't need additional checks about who sends what to which planets.
If performance is the reason it could be worked around by sorting demand by size and processing it in decreasing order,
then going through supply and assigning it to wherever there is a shortage(or just going through demand again as it'll have neighbors already built for that tick).
...
Maiming colonies/trade fleets do not need to be "the" solution, costs to cover the operation or relation hits could act as deterrents in all but the most extreme cases.
Don't think the ethics angle is worth worrying about, a space game is not as personal as something like Rimworld.
That one was just some "journalist" needing something to write about and deliberately misunderstanding abstractions anyway.