Merge (and demote) error and warning messages.

The condition can still emerge under rare conditions.  It only potentially damages performance, instead of correctness, so warning is appropriate.
Remove a redundent conditional clause.

Note that when it holds in the next conditional, we break the loop.  By induction we can therefore take it to be false before that point.
doco
Don't delegate to the default scheduler.

It doesn't do what we want, and we now schedule the full topology anyway.