"An open page cannot prove handwriting; the hand says when the passage became ink."
Start with the human act
The generated passage and handwritten page are different artifacts. Stored text proves the first. Scroll position, screen time, and browser wakefulness describe a device, not a hand.
Make data carry the promise
An explicit action marks an entry transcribed. Nullable transcribed_at records the transition and permits an honest undo. Clearing it restores current state without inventing browser evidence.
Interrogate failure
“Finish task” sounds like obligation; “pen met paper” names an event. It does not claim beautiful handwriting, complete copying, or earned reward. The system acknowledges contact and leaves quality alone.
Absence is also design
The timestamp anchors Today, search, photos, and restart recovery. Other artifacts can arrive around it without redefining it, and tomorrow's interface reads durable state instead of guessing.
Follow the promise beyond success
A happy screen cannot prove this boundary. Trace rejection, failure, repeated delivery, cancellation, and next-day reload. Define idempotent mark and unmark endpoints and list device signals they reject as handwriting evidence. If API response, stored row, and button copy disagree, the quiet mismatch becomes the real product.
A question worth carrying
Carry “When Pen Met Paper” as a review question. Look past feature presence to whether any path steals the human role being protected. Missing fields and absent pressure belong to the architecture too.