feat(api): implement sync collection reconciliation #93
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/issue-88-sync"
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?
Implements the real RFC 6578 sync collection route for issue #88.
Changes:
Verification at head
5d8182e:Independent review at head
5d8182efound no remaining patch-introduced P1 or P2 defects. Review findings and resolutions are recorded in comments 4583, 4585, 4586, and 4588.Closes #88
Independent review of head
360da17found three issues requiring changes before merge:P2: CalDavClient.send turns upstream HTTP 401 from discovery and resource GET into SecurityViolation, and sync maps that to forbidden/403. Preserve unauthenticated/401 for upstream credential rejection while keeping local URL and redirect security failures forbidden.
P2: parse_components can return a valid component after silently ignoring an unterminated later sibling. A malformed calendar resource must refuse before observations, projections, or sync state change.
P2: replaying an applied partial sync reconstructs only concurrent_change warnings, losing dependency_unavailable or calendar_unsupported warnings from the original response. Replay must preserve the original warning codes and messages.
The implementation worker is addressing these findings on the branch before merge.
Follow-up review finding on head
9ecb668: component validation accepts STANDARD, DAYLIGHT, VALARM, AVAILABLE, or VOTE at any nesting depth. Parent-aware nesting is required so a nested STANDARD cannot be parsed as VEVENT properties, and VALARM or other children cannot nest under an invalid parent. The worker is fixing this together with the unsupported VAVAILABILITY and VPOLL regression.Follow-up P2: CalendarError::Unauthenticated is shared by CalDavClient.send, so non-sync routes such as agenda, tasks, items, resolve, and mutations now receive the new variant. Their error classifiers must preserve backend HTTP 401 as unauthenticated/401 rather than falling through to dependency_unavailable/503. The worker is auditing those mappings while retaining forbidden for local security violations.
Fresh independent review of head
5d8182efound no remaining patch-introduced P1 or P2 defects. The review covered backend authentication status mapping, RFC 5545 component framing and legal nesting, malformed-resource atomic refusal, warning-preserving replay with legacy result compatibility, RFC 6578 cursor and projection reconciliation, concurrency, and the CLI/API contract. The earlier findings in comments 4583, 4585, and 4586 were addressed on this head.