The trial ends in read-only, not a locked door
15 days in, nothing changed except whether you got free AI passes. Beatstack, it turned out, was a screenwriting app nobody had to pay for.
We fixed that by deciding what "expired" should mean, and landed somewhere worth keeping: after the trial, every project still opens, reads, exports, and saves. Only new edits stop. One gate, commit(), the single door every change already passes through, so there was never a list of features to remember to block.
First pass was too eager. Undo and restoring a save point also go through commit(), so a trial lapsing mid-session could trap you inside whatever you were in the middle of. Fixed by teaching commit() to take an intent: editing gets gated, getting yourself out of trouble never does.
It also fails open. A Keychain that won't answer reads as "unknown," never as "expired." Every failure mode here points the same direction: toward you keeping your work.
Update: superseded the next day. See [the wall](/blog/skipping-the-free-trial-was-the-exploit).