Skip to content

Store an edit the server won't take as a conflict - #47

Merged
SashankBhamidi merged 1 commit into
mainfrom
fix/refused-edits
Nov 7, 2026
Merged

SashankBhamidi merged 1 commit into
mainfrom
fix/refused-edits

Conversation

@SashankBhamidi

Copy link
Copy Markdown
Member

Three bugs in what ships, found while planning what's next.

  • An edit the server won't take stopped every sync. A 403, 400 or 415, or a JMAP forbidden, left the push in flight, and every sync after raised at it. Now it's a NOT_ALLOWED conflict with the server's reason in Conflict.reason, and the rest of the pushes still go out.
  • Cyrus and Baïkal add SCHEDULE-STATUS to the attendees of an event you organize, so your own write came back as a remote change. The CalDAV fingerprint now leaves out SCHEDULE-STATUS and SCHEDULE-FORCE-SEND.
  • A refused change was taken as news when the server reported the synced copy at a new version, so it went out again. It stays refused now.

New: NotAllowed, ConflictKind.NOT_ALLOWED, Conflict.reason and Record.is_refused_for_key. Renamed: Record.is_refused_change to is_refused_existing, since it covers deletes too. New column conflict_reason, schema version 1 edited in place.

The JMAP adapter checks a SetError's properties itself until PyCalendar/calendaring-jmap#94 lands. The probes are in #46.

…heduling parameters in the CalDAV fingerprint
@SashankBhamidi
SashankBhamidi removed the request for review from stevepiercy November 7, 2026 20:05
@codecov

codecov Bot commented Nov 7, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@read-the-docs-community

Copy link
Copy Markdown

@SashankBhamidi
SashankBhamidi merged commit 1bb9ad2 into main Nov 7, 2026
16 checks passed
@SashankBhamidi
SashankBhamidi deleted the fix/refused-edits branch November 7, 2026 20:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant