Same cacheability as CacheHint::UntilChanged, and additionally marks
the start of the most recently changed stretch of that tier.
A provider that spends one cache breakpoint per run of same-hint blocks
sees the change of hint as a run boundary, so the blocks ahead of the
mutation end up in a cache entry of their own instead of sharing one
with the block that just changed. Nothing else about the block differs:
assembly sorts it to the same position as UntilChanged, and its text
is untouched.
How much of the window counts as stable, in 0.0..1.0. The oldest
that fraction is cached; the newest tail is not, because it is what
changes every turn and would invalidate the whole prefix with it.