Repository navigation
fix: conformance on caldav's test servers - #46
Merged
Merged
Conversation
Bedework 3 answers listings from an index that lags behind writes, and the conformance suite on it failed with stale etags, UIDs not found and change feeds missing items. The suite on caldav's servers now waits the way the scenario stories already do. Prompt: please look through the logs and investigate what needs to be done to get the conformance tests passing. It's better to fix things properly than to make workarounds. It's within the scope to do changes in [the caldav and caldav-server-tester checkouts] if needed. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
SOGo, Zimbra, Bedework and Posteo delete on a stale If-Match (caldav's delete.if-match broken), yet write.conditional was declared full there. caldav now reads the ETag before such a DELETE, which is emulation with a window, so the declaration says emulated. Prompt: please look through the logs and investigate what needs to be done to get the conformance tests passing. It's better to fix things properly than to make workarounds. It's within the scope to do changes in [the caldav and caldav-server-tester checkouts] if needed. Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
SOGo and Ox add parameters to ATTENDEE, and no capability declaration can express a server adding to what it was sent, so the conformance round trip and verify fail there. Record it as a known failure until it is decided how verification should treat it. Prompt: Document the problem as for now, and add [it to my tasklist], I will think more about it later. [answer to: servers add RSVP=TRUE / EMAIL= to attendees; should verification tolerate it, count it as lossy, or keep it a documented failure?] Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
tobixen
force-pushed
the
conformance-on-caldav-servers
branch
from
November 6, 2026 00:06
70ced6a to
40dcb16
Compare
A CalDAV server that drops or refuses data should not be declared with full support in the capability table. Prompt: [do the remaining conformance-triage work (unmapped caldav hints, new caldav-server-tester checks and caldav profile updates) now] Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
caldav now records PENDING and FAILED apart from RFC 5545's four statuses (save-load.todo.status.rfc10051), since a server not supporting RFC 10051 need not keep them. A task list declares the statuses both hints keep where either says some are lost, and leaves out a status no hint knows to be kept; with neither saying so, the statuses stay fully supported. On Ox, which keeps the four and drops the two, the values are as before; the note now says Ox does not advertise RFC 10051. Prompts: (on the save-load.todo.status hint, in the caldav review) Note for "save-load.todo.status" - a server may or may not support RFC 10051. We can only demand it to support FAILED and PENDING if the server declares support for RFC 50051 (sic). If there are many servers acceptign (sic) all the RFC 5545 statuses but not accepting FAILED and PENDING, then maybe we need to split out a child for the RFC 10051-statuses Followup-Prompt: (...) save-load.todo.status.rfc10051 is fine. (...) Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
tobixen
force-pushed
the
conformance-on-caldav-servers
branch
from
November 6, 2026 08:31
40dcb16 to
9afd3a7
Compare
The PARTICIPANT branch only applies where RELATED-TO is kept, so only CCS and GMX get a lossy time log; Bedework 3, robur, Ox and Zimbra keep it unsupported. The fragment and the test docstring now say so. The conditional-delete fragment mentions that write.conditional is unsupported on those servers with a caldav older than 3.8. An x-property hint whose behaviour is empty no longer raises. Prompt: [fix issues found during the review process] Assisted-By: Claude Opus 5.5 <noreply@anthropic.com> Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
This was referenced Nov 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Disclaimer: the code and the text below the line are AI-generated, by Claude Opus 5.5, from the prompts:
Fewer conformance failures on caldav's test servers. The suite waits out a server's search-cache delay as the stories do (Bedework 3 went from 55 failures to 10). The capability table now reads the caldav hints that say what a server drops or refuses: task attendees, recurrences and X- properties on Ox, the STATUS and PRIORITY values Ox and Zimbra keep, PARTICIPANT on six servers (time entries go without users there), Zimbra's renaming, and Zimbra's multiget returning deleted objects (single objects are read with a GET).
write.conditionalis emulated where DELETE ignores If-Match, given a caldav that reads the ETag first. The value-map conformance test no longer adds one item twice.Depends on unreleased caldav: python-caldav/caldav#846 (conditional delete) and the caldav branch
feat/hints-tester-group-b(new hints, PR to follow). With caldav 3.7 the new hints read as unknown and their tests skip; CI may fail until caldav 3.8. Locally the suite passes against caldav master.Still failing on live servers: Ox 8, Zimbra 7 (floating times, VTIMEZONE, added attendee parameters, and a few more). Documented in docs/caldav-servers.md where it applies.