In steady state, after constraint solving marks something, we just yield to marking. But it seems like we could have a smarter metric, where we yield subject to timeout so long as we have at least one thing of new work but haven't yet hit some minimum quota of minimum work. For example we might have a mutator mark stack that always has one damn thing in it. It's probably more profitable to try to run one extra constraint after that, so long as we haven't been running for too long.
I think that we should get rid of timeout instead. We should always full run constraints.