NEC-315: Drawing edits saved while sync was stopped are written over, with no copy, by the next connect's first write #309
No reviewers
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda!309
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-nec-315-drawing-edits-saved-while-sync-was-stopp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task: NEC-315 — https://projectron.nerchure.com/tasks/335
The hardness run's lost drawing edits (seed 1461695148) were not written over by sync: instrumenting the connect's first write and watching the file across the quit showed Excalidraw's save on close cut off part-way, truncating the earlier save with the edits before sync could read it. This adds a notice when a connect finds a structured file empty or unreadable though its record held content (SAFE-A47), keeps the approved SAFE-A46 net (a connect's first write keeps a drawing holding element versions its document lacks), permanent diagnostic logging of the first write's decision and every ledger move, and fixes the hardness harness to save before a quit, report a cut-off save, and judge lost offline work shape by shape against the file. The limitation is recorded in docs/sync-limitations.md. Local gate green; 80 minutes of Excalidraw hardness passed over four seeds (A 2.28.1, B 2.27.3).
Spec:
docs/changes/NEC-315-drawing-edits-overwritten-at-connect/spec.mdChangelog
Nectenda now tells you when it starts and finds a drawing or canvas emptied or cut off, as a save interrupted by Obsidian closing can leave it, instead of silently replacing it.