In reply to tfitz:
I agree with your approach.
My concern is that a number of folks I have talked with considered the use model for phase_ready_to_end() differently. Instead, they considered it as a way to avoid objections. In other words, just extend on-the-fly. I don't think this approach is viable.
Perhaps documentation should be more explicit about the use case for this feature.
Other things to consider:
Any time you fork join-none a sequence, it needs to decide if it cares about extending the phase.
What about drivers waiting on multiple outstanding responses (e.g. ethernet packets)?
I'm not saying that the limit of 20 is wrong. I am simply saying that using phase_read_to_end() needs to be qualified with that understanding.