refactor: migrate Google Tasks to read-only multi-sync sources #445

Closed
opened 2026-05-13 18:42:17 +00:00 by barrettruth · 0 comments
Owner

Parent: #123
Depends on: #444
Follow-up to: #291, #442
Related: #290

Problem

Google Tasks pull already exists, but it still behaves like editable imported Delta tasks with complex local-edit/conflict bookkeeping. The new direction is simpler and stricter: Google Tasks imports are read-only Delta task rows, just like Google Calendar imports will be.

This should be the first real consumer of the shared sync-source/read-only model so Calendar does not become the first implementation of the new architecture.

Decisions

  • Google Tasks remains pull-only.
  • Imported Google Tasks become read-only task rows.
  • Existing imported Google Tasks can be hard-migrated into the new model; backward-compatible preservation of old local edits is not required.
  • Google Task lists migrate into the per-source sync-state table.
  • Google Tasks and Google Calendar should appear as separate sync sections under one connected Google account.
  • Use the simpler read-only sync result vocabulary: seen, created, updated, cancelled, skipped, duplicate skipped when applicable, and errors.
  • Disconnecting Google hard-removes imported Google Tasks rows, links, and source state by default.

Acceptance criteria

  • Google Task list sync state no longer depends on ad hoc list metadata in the shared Google integration blob.
  • Existing Google Tasks imports are migrated/hardened as read-only imported tasks.
  • Normal user task mutation paths reject Google Tasks imported rows.
  • The Google Tasks sync engine can still update imported rows from Google.
  • Settings keeps one Google account section and a distinct Google Tasks sync section.
  • Attempted edits from UI surfaces produce the shared warning/read-only feedback.
  • Disconnect removes imported Google Tasks rows and associated external links/source rows.
  • Docs describe the read-only Google Tasks model and remove stale local-edit conflict semantics where applicable.
  • Tests cover pull idempotence, read-only blocking, sync update allowed, hard disconnect cleanup, and source-state migration.

Non-goals

  • Do not add writes back to Google Tasks.
  • Do not add scheduled sync here.
  • Do not add Google Calendar pull here.
Parent: #123 Depends on: #444 Follow-up to: #291, #442 Related: #290 ## Problem Google Tasks pull already exists, but it still behaves like editable imported Delta tasks with complex local-edit/conflict bookkeeping. The new direction is simpler and stricter: Google Tasks imports are read-only Delta task rows, just like Google Calendar imports will be. This should be the first real consumer of the shared sync-source/read-only model so Calendar does not become the first implementation of the new architecture. ## Decisions - Google Tasks remains pull-only. - Imported Google Tasks become read-only task rows. - Existing imported Google Tasks can be hard-migrated into the new model; backward-compatible preservation of old local edits is not required. - Google Task lists migrate into the per-source sync-state table. - Google Tasks and Google Calendar should appear as separate sync sections under one connected Google account. - Use the simpler read-only sync result vocabulary: `seen`, `created`, `updated`, `cancelled`, `skipped`, `duplicate skipped` when applicable, and `errors`. - Disconnecting Google hard-removes imported Google Tasks rows, links, and source state by default. ## Acceptance criteria - Google Task list sync state no longer depends on ad hoc list metadata in the shared Google integration blob. - Existing Google Tasks imports are migrated/hardened as read-only imported tasks. - Normal user task mutation paths reject Google Tasks imported rows. - The Google Tasks sync engine can still update imported rows from Google. - Settings keeps one Google account section and a distinct Google Tasks sync section. - Attempted edits from UI surfaces produce the shared warning/read-only feedback. - Disconnect removes imported Google Tasks rows and associated external links/source rows. - Docs describe the read-only Google Tasks model and remove stale local-edit conflict semantics where applicable. - Tests cover pull idempotence, read-only blocking, sync update allowed, hard disconnect cleanup, and source-state migration. ## Non-goals - Do not add writes back to Google Tasks. - Do not add scheduled sync here. - Do not add Google Calendar pull here.
barrettruth added this to the v0.1.0 milestone 2026-05-13 18:42:17 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
barrettruth/delta#445
No description provided.