Scribble, or just tap anywhere. Two dots then appear, one after the other, where the transcript so far says they should. Tap both. A second or two of friction; no recording can do it for you.
A free-form scribble has no reference signal, so a liveness check can only score its statistics, and a recorded human scribble scores perfectly. The nonce blocks replaying the proof, not the stroke. Two taps close that hole for about two seconds of extra friction.
SHA-256(challenge ‖ "tap1" ‖ scribble): a direction and a distance (25–45 % of the field) from where the pen lifted, clamped to the canvas. Nobody can know where it will appear before the scribble is finished, because it depends on the scribble. A recorded scribble cannot come with a recorded tap.SHA-256(challenge ‖ "tap2" ‖ scribble ‖ tap₁) relative to where that tap landed. It depends on the first tap, so it is a second fresh event: two reaction times, and a dot-to-dot movement whose Fitts index is known.width × height) and pressure. A finger is 20–45 px wide, lands off-centre, rolls a pixel or two, and stays down 50–150 ms; a mouse click lasts 60–150 ms; synthesised input is a 1 × 1 point with down and up in the same millisecond. Instant presses on every dot raise the risk; drift, in-contact movement and finger-sized contact count as evidence; and on touch the landing tolerance grows by half the finger's width, so a finger that covers the dot is a hit even when its centroid is outside. Switch-access and voice-control users produce instant clicks with no path; that is why instant presses are risk, not rejection.SHA-256(challenge ‖ scribble ‖ tap₁ ‖ tap₂) seeds the Sophie Germain search: candidate i is SHA-256(seed ‖ i) forced to width and to p ≡ 5 (mod 6); the verifier rederives one candidate and runs two Miller–Rabin tests.The scribble is not what makes the chain work; the opener is. Any client-contributed event before dot 1 starts it, and a single tap anywhere is enough: dot 1 = SHA-256(challenge ‖ "tap1" ‖ opener), dot 2 as before. Everything the taps prove is unchanged, and the friction drops to about a second and a half. What the scribble still adds is a richer behavioral trace for a future classifier, a check against synthesised strokes, and character. Switch modes at the top of the instrument and compare.
One caveat holds in both modes: the moment a dot appeared is client-reported, so the reaction-time floor traps lazy automation but is not a number a server can trust. For a measured floor the chain has to pass through the server, which reveals each dot from a secret of its own and times the reply itself, at the cost of two round trips.
A client that replays a recorded scribble, reads each dot from the page, waits a plausible 250 ms and taps. That is the "Replayer that waits" simulation, and it passes. The cost it imposes is that the bot must be online and must read the stimulus, which a pure replay cannot do; the next rung is rendering the dot so it must be perceived rather than read (shader noise, contrast tuned to vision), and after that the work and the environment score are what remain. The raw strokes ride in the bundle so a server can run a stronger classifier later.
SHA-256(challenge ‖ scribble ‖ tap₁ ‖ tap₂) equals the seed.