"A notebook does not accuse you when Tuesday stays blank. Software should learn that restraint."
Start with the human act
Practice needs repetition, not surveillance. A streak turns a private return to paper into a number carrying a threat: miss tomorrow and it breaks. In a writing well built around attention, that is a category error.
Make data carry the promise
Inkwell records facts that help recovery: date, transcribed state, keywords, and optional job status. It does not compute a moral summary. A calendar dot may mark an entry without painting a blank day red.
Interrogate failure
Length bands help choose a passage that fits available time, but the app does not race the hand. A pause, scratch, refill, or look through the window is not latency; it is the practice.
Absence is also design
The refusal reaches the schema: no streak column, punishment notification, leaderboard event, or hidden consecutive-days endpoint. An absent capability is stronger than a disabled toggle.
Follow the promise beyond success
A happy screen cannot prove this boundary. Trace rejection, failure, repeated delivery, cancellation, and next-day reload. Design a calendar response that renders written and blank days but has no streak, rank, debt, or missed-day field. If API response, stored row, and button copy disagree, the quiet mismatch becomes the real product.
A question worth carrying
Carry “Practice Without Performance” 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.