Code review flagged that R1's early-exit (chosen in 1793f8d to satisfy
a len(errs)==1 assertion) would diverge from Tasks 3-6 which use
accumulate-all. Retrofit R1 + relax the test to use any()/next() so a
user fixes all continuity gaps in one validate pass. Also deepcopy the
page template in the fixture helper to avoid shared-ref leaks in later
rule tests.