-
Notifications
You must be signed in to change notification settings - Fork 4
fix(sync): fail closed before conflict retention can discard unique bytes #167
Copy link
Copy link
Open
Labels
area:conflictsConflict detection and resolutionConflict detection and resolutionarea:syncthingEmbedded Syncthing and upstream behaviorEmbedded Syncthing and upstream behaviorbugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentationgoPull requests that update go codePull requests that update go codepriority:P0Confirmed critical safety issueConfirmed critical safety issuerisk:data-lossRisk of losing or replacing user bytesRisk of losing or replacing user bytesrisk:false-successRisk of reporting success without evidenceRisk of reporting success without evidencerisk:releaseRelease-blocking evidence or documentation riskRelease-blocking evidence or documentation risk
Milestone
Description
Metadata
Metadata
Assignees
Labels
area:conflictsConflict detection and resolutionConflict detection and resolutionarea:syncthingEmbedded Syncthing and upstream behaviorEmbedded Syncthing and upstream behaviorbugSomething isn't workingSomething isn't workingdocumentationImprovements or additions to documentationImprovements or additions to documentationgoPull requests that update go codePull requests that update go codepriority:P0Confirmed critical safety issueConfirmed critical safety issuerisk:data-lossRisk of losing or replacing user bytesRisk of losing or replacing user bytesrisk:false-successRisk of reporting success without evidenceRisk of reporting success without evidencerisk:releaseRelease-blocking evidence or documentation riskRelease-blocking evidence or documentation risk
Parent and release gate
Sub-issue of #150. This implementation blocks the replacement VaultSync 2.0.2 candidate. Candidate
eb83ade738c1da90cc9c798823ddd7bfd43b6466remains NO-GO.Problem
With
MaxConflicts=10, the pinned Syncthing source can physically remove unique conflict bytes. Deterministic characterization also demonstrates conflict-on-conflict deletion, pruning after a failed rename, and replacement risk at a generated-name collision.MaxConflicts=-1, a higher limit, stock versioning, and a Syncthing upgrade do not address every path.Policy
MaxConflictsis a hard stop, never an authorization to delete.0stops at the first conflict;-1remains unlimited.Implementation scope
go/patches/, never the generated Syncthing tree.Acceptance criteria
Out of scope
No Syncthing upgrade, #152/STUN patch, automatic quarantine, StoreKit, signing, entitlement, bundle-ID, product-ID, relay-protocol, tag, release, upload, or deployment change.