docs: decide to build our own store and delete the vendored provider
The vendored dmfs provider was kept on the grounds that it hands us the sync bookkeeping for free. The phase-1 sync audit measured that bookkeeping and found most of it broken, absent, or unusable: _DIRTY not set on delete, no home for a per-collection sync token, read-only collections inexpressible, ACCOUNT_TYPE write-once so enabling sync is a full migration, and cleanUpLists able to delete a user's lists after a backup restore. Sixteen findings are provider-imposed rather than platform- or protocol-imposed. Costing the alternative showed the swap is far smaller than assumed. TasksDataSource is already a 14-method, domain-shaped interface; exactly one file above the data layer references TasksContract. The work is a second implementation behind an interface built for it, not a rewrite. Against ~5 weeks to build, owning the store removes 2.5-4 weeks from the sync plan, and 8,200 of the vendored 14,555 lines are things we would never write - 23 migrations from a 2013 schema, 798 lines of full-text search the app has zero call sites for, and 1,581 lines of a type-safe layer over ContentValues that Room deletes. External mode (OpenTasks, tasks.org) is unaffected and keeps every file that describes somebody else's schema. STORAGE-DECISION.md is the reasoning; OWN-STORE.md is the architecture and the six-phase plan. :provider stays in-tree until phase 5 so recurrence parity can be tested against it before it goes. Also corrected here: the provider's JVM test count (51 -> 56, measured from the test-results XML) and a fourth site of the debunked "switching sync on is never a migration" claim, in StorageMode.kt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -159,7 +159,7 @@ drift apart. Keep that convention.
|
||||
`contenttestpal`, which are JitPack-only; adding JitPack would widen the
|
||||
dependency trust surface for test-only code. ⚠️ This is the one place
|
||||
vendoring lost coverage — those were the provider's *integration* tests
|
||||
(recurrence, reparenting, instances, observers). The 51 JVM tests in
|
||||
(recurrence, reparenting, instances, observers). The 56 JVM tests in
|
||||
`src/test` all pass and are retained.
|
||||
15. **`agendula_provider_changed_receivers` emptied.** Upstream notifies
|
||||
`org.andstatus.todoagenda`, which listens for changes to the *dmfs* authority
|
||||
@@ -175,7 +175,7 @@ drift apart. Keep that convention.
|
||||
|
||||
Unlikely to ever be worth it — upstream 1.4.2 is from 2021 — but if it is: the
|
||||
`AGENDULA CHANGE` markers are the complete list of what to reapply, `git log` on
|
||||
this directory is the audit trail, and the 51 JVM tests are the safety net.
|
||||
this directory is the audit trail, and the 56 JVM tests are the safety net.
|
||||
Re-read change 1 before touching anything account-related.
|
||||
|
||||
## Known-unverified
|
||||
|
||||
Reference in New Issue
Block a user