Changes arrive in order and are buffered per target. The source ACK advances only to the slowest target's position — so one lagging consumer holds the ACK back but never reorders or drops for the others. Slow a target: with drop_disconnect it's cut loose (and will re-snapshot on reconnect); with slow_down the whole source applies backpressure.
ACK = min(target positions). drop_disconnect keeps the source healthy by shedding a slow client; slow_down preserves the client at the cost of source throughput.