docs/sync-and-op-log/sync-severity-triage.md
Triage rules — how to decide whether a sync bug is real and how bad it is. AGENTS.md points here from Required reading per task; the rules below were moved out of that file verbatim to keep it skimmable. Each one is here because getting it wrong already produced a confidently wrong conclusion. Statistics are dated where cited — re-measure before relying on them.
master ships to real users. "It's only on master" never downgrades severity. Every master
push auto-publishes to the Play internal track (.github/workflows/build-android.yml,
tracks: internal + status: completed → testers' phones auto-update within minutes, on their
real data). ghcr.io/super-productivity/supersync:latest is master and has no
release-tagged build at all — it is the default in packages/super-sync-server/docker-compose.yml,
so self-hosters on docker compose pull run master HEAD. Snap edge is also published from
every master push. Only desktop/web/F-Droid/Play-production/Snap-stable are release-gated.git merge-base --is-ancestor <commit> v<tag> / git tag --contains <commit>. Tags are cut from
a point in time, and sync features routinely land just after: #8874's disjoint-field merge
landed ~24h after v18.14.0 was tagged and is in no release, so whole-entity-LWW field loss
(rename dies when another device marks the task done, #9095) is live in every shipped version.sync label. Keyword-grepping
sync/op-log/conflict undercounts by ~50×. Search what users actually write: lost,
disappeared, gone, missing, duplicate, reverted, old version, overwritten, reset, not syncing
(#7892 "all data deleted overnight"; #8107 user rebuilt lost projects from memory; #7549 done
tasks resurrecting). ~53 user-reported sync/data-loss issues from 44 authors in 90 days ≈ one
every 2 days (measured 2026-07). And silent data loss is structurally under-reported — absence of reports is never
evidence of absence.entityIds security check that never fired;
#9025 was self-retracted as "not a live data-loss bug"). The reproduction gates the fix, not belief.