March 11th, 2026
Accountability Identity, Strict Mode Extensions & Penalty Pre-fills Today we unified the Accountability pipeline. We implemented a system that “learns” a user’s preferred consequence and automatically prefills it for future commitments, drastically reducing the friction of task creation. We also extended the strict lock mechanisms.1. Single Accountability Identity
We established a rule where a user’s chosenpenalty + waiver combination acts as their unique “Accountability Identity” within the app:
- Auto-Learning Profile: The Convex backend now learns this identity during any task creation or update.
- Zero-Friction Setup: We implemented a background worker that pre-fills new task drafts with the user’s latest identity. Users no longer have to manually set up a penalty and waiver for every new habit.
- Coupled Accountability Rule: We strictly enforced the “Two-way Street” validation on both the frontend and backend: a task must have both a penalty and a waiver, or neither. The
updateInternalservice correctly mergesnullsignals to wipe an identity if the user chooses.
2. Reactive Photo Recovery
We resolved issues with the “Embarrassing Photo” URLs expiring or failing to load:useFreshPhotoUrlHook: Created a reactive, self-healing hook that ensures image previews across the app are always valid.- On-Demand Resolution: Added the
getTempUrlConvex query to generate fresh, signed URLs on the fly from storedstorageIdreferences. - Server Priority: We now strictly prioritize server-refreshed URLs over stale local state, cleaning up broken thumbnail previews.
3. Strict Mode Extensions & Sovereign Execution
We deepened the “Steel Vault” locking mechanic and offline verification reliability:- Vault Extensions: Users can now extend the duration of an active “Steel Vault” lock directly from the UI.
- SQL Migration 10: Added
strict_until,strict_duration_days, andpenalty_waiver_jsonto local SQLite. This offline parity ensures that even without an internet connection, the Android hardware scheduler enforces the lock. - Sovereign Orphanhood (Revisited): We further secured the verification runner. Locked instances now inherit the
is_manual_editflag, guaranteeing that active vaults are immune to generic rescheduling purges or parent-task deletion. - Corruption Diagnostics: Hardened the local DB migration engine with atomic versioning to safely handle storage resets without breaking the native schedulers.
4. UX and Loop Fixing
- “Loop of Doom” Fixed: We solved the frustrating “Bounce Back” bug. Explicitly clearing a Penalty in the UI now intentionally sets the draft to
null(Manual Override), preventing the backgrounduseAccountabilityPrefillhook from erroneously instantly re-filling it. - Streamlined Navigation: Removed redundant confirmation modals and navigation interceptors from the Embarrassing Photo screen to combat dialog fatigue.