docs(sync): split the sync work into five chunks

SYNC.md decides; it doesn't sequence. SYNC-PLAN.md turns its ~40 scattered
findings into five chunks — mapper, auth/discovery, engine core, incremental
sync + scheduling, hardening — each with a done-when and the traps it must
not get wrong.

Closes SYNC.md's three open questions: vendor dav4jvm/cert4android at our
Java 17 target, server-wins-and-report on 412, External mode stays.
This commit is contained in:
2026-09-04 16:15:45 +02:00
parent 8f735ffce7
commit fd6c302c17
2 changed files with 434 additions and 6 deletions
+14 -6
View File
@@ -1190,12 +1190,17 @@ everything about storage modes.
## Open questions
1. **dav4jvm + cert4android distribution *and* Java target.** Scoped JitPack,
vendor, or in-house verbs? Now compounded: 4.x requires **Java 21** and we
target 17 across `:app` and all of floret-kit. Vendoring recompiles at our own
target and freezes the API churn — it looks better than it did. Before phase 2.
2. **Conflict policy** — preserve-local-on-412, or documented LWW?
3. **External mode** — survives, or becomes an importer? Before phase 1.
1. ~~**dav4jvm + cert4android distribution *and* Java target.**~~ **closed:
vendor**, recompiled at our own Java 17 target. `FAIL_ON_PROJECT_REPOS` stays,
the Ktor/guava/xpp3 tail is not paid for, and the API churn is frozen. The
MPL-2.0 obligations make the attribution screen mandatory rather than
optional. See [`SYNC-PLAN.md`](SYNC-PLAN.md).
2. ~~**Conflict policy**~~ **closed: server wins, the local edit is discarded**
— DAVx5's policy, and the only one that terminates. It is *reported* to the
user rather than applied silently. Preserve-local stays withdrawn: RFC 4791
§4.1 makes the duplicate unuploadable.
3. ~~**External mode**~~ **closed: kept, unchanged.** The mapper and UI stay
dual-capable. Retiring it is a separate decision and does not block sync.
4. ~~**Canonical recurring-completion behaviour**~~ **closed:** the store writes
model (a), `RECURRENCE-ID` overrides sharing the master's UID. Read all four.
5. **The DAVx5 enum ask** — worth filing, and what compatibility we owe if it
@@ -1235,6 +1240,9 @@ shipped.
## Related
- [`SYNC-PLAN.md`](SYNC-PLAN.md) — **the build plan.** This document decides;
that one sequences it into five chunks and records the decisions taken to
close the open questions above.
- [`STORAGE-AND-SYNC.md`](STORAGE-AND-SYNC.md) — where task data lives. This is
its step 5.
- [`../provider/PROVENANCE.md`](../provider/PROVENANCE.md) — every deviation from