create_event writes no ORGANIZER, so events with attendees invite nobody #39
Labels
No labels
blocked
waiting-on-julian
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jlxq0/caldav-mcp#39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
create_eventwritesATTENDEEand noORGANIZER, so every event it creates with attendees invites nobody. Read off the stored object rather than the tool's response:No
ORGANIZERline. RFC 6638 scheduling keys on it, so Stalwart correctly generates no iTIP: 360 log lines in the window, zero scheduling events, measured with a control.The
create_eventschema has no organizer parameter, so this is not a caller mistake and no caller can work around it.Why it is worse than a missing feature
Every signal afterwards says it worked. The event appears on the calendar,
list_eventsreturns the attendee, andcreate_event's own response echoesattendees: ["lucy@kampong.social"]besideorganizer: null. Nothing distinguishes an event that invited somebody from one that invited nobody, and the person who created it has no reason to look.Julian is asking for agents that schedule for him, and Lucy has calendar access. He would find out from the person who did not turn up.
The fix
Set
ORGANIZERto the authenticated principal on create.whoamialready returnsjulian@kampong.socialwith a principal href, so the value is available and needs no new parameter.Surface it on read.
organizer: nullon an object that has one is the next version of this defect.The acceptance test, and it must read the stored object
Asserting on
create_event's response would pass against today's code, because the response is built from the same struct that omits it. That is the whole reason this went unnoticed, and a test written the obvious way reproduces the blindness rather than catching it.Break it and watch it go red: remove the
ORGANIZERline from the builder and confirm the test fails on the stored object.Two questions one step on, worth deciding rather than discovering
Does updating an event with attendees issue a
REQUEST? Does removing an attendee issue aCANCEL? Both are the same class: a mutation that looks applied locally and notifies nobody. Answer them in this change or say why they are separate.Found by mantis running a scheduling probe for Clark. It cost a wasted measurement and would otherwise have cost a real invitation.