Fix cloud conflict adoption and durable media recovery - #158
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis change makes cloud conflict recovery and media synchronization safer when local persistence or remote upload state is uncertain. Cloud adoption keeps unrelated local page and metadata edits, media recovery avoids stale job mutations and deleted upload intents, the exit flow blocks departure after an unverified current write, and legacy accountless media records remain unreadable rather than being assigned to the next account. Focused Flutter coverage passed for conflict adoption, media queue recovery, durable outbox migration, and cloud exit handling. No merge-blocking defects were found. Confidence Score: 5/5Safe to merge based on the verified conflict, durability, recovery, concurrency, and account-isolation flows. Focused Flutter tests and controlled before-and-after reproductions confirmed preservation of unrelated conflict edits, safe reconciliation after asynchronous reads, recovery from deleted upload intents, blocked exit after unverified current writes, and isolation of legacy accountless media records. Files Needing Attention: No additional files need attention from the validated scope.
What T-Rex did
Reviews (1): Last reviewed commit: "Fix cloud conflict adoption and durable ..." | Re-trigger Greptile |
After #156, choosing "Use cloud" could overwrite unrelated queued edits, and recovered disk writes or expired media uploads could leave sync blocked. This follow-up fixes the remaining recovery cases from the two reviews.
Validation: TypeScript; 78 Convex tests; contract audit (42 functions, 34 error codes); release-safety checks; Flutter analyzer (no errors or warnings, 34 existing infos); 756 Flutter tests passed, with the two existing environment-only skips. Regression tests cover conflict preservation, failed discards, inactive-page/rename acknowledgements, write/removal recovery, mixed unreadable/unverified work, legacy startup, expired uploads, and references or restaging during a server read.
No manual two-client session was run for this provider-layer change. Windows and Linux CI cover the tests, native bridge, and app builds.
The beta deployment policy remains a separate release decision: keep the dev deployment stable for the beta window, or move beta builds to production before invitations.