Skip to content

all-day events can gain a day when the model passes an exclusive end date #279

Open

Description

@WSHAPER

Steps to reproduce

  1. ask the assistant to schedule a multi-day all-day event, e.g. "schedule X in my calendar tomorrow and the day after, all day"
  2. the model calls schedule_event with start_date and end_date
  3. the all-day branch converts to RFC 5545 with DTEND = end_date + 1, per the inclusive contract in the docstring

Not deterministic, depends on what the model sends: most of the time it sends inclusive dates, but sometimes it emits DTEND-style (exclusive) values, likely after seeing calendar data elsewhere (search results, exports), which is exclusive.

Expected behaviour

a two-day request produces a two-day event regardless of which convention the model uses

Actual behaviour

In manual e2e on my instance (PR #257 review rounds): one-day requests consistently sent end_date == start_date and stored correctly. One two-day run sent end_date = start_date + 2, which stored a three-day event. So the inclusive convention holds most of the time but not always.

Came up in the #257 review (the end_date + 1 delta discussion) and in #277's "other findings" list. Dropping the +1 is not the answer, that breaks the majority inclusive case. Options worth discussing:

  • normalize prompt-side: make the tool description carry a concrete two-day example, e.g. "for an event on October 15 and 16, pass start_date 2026-10-15 and end_date 2026-10-16", models follow examples much better than contract wording
  • or have the agent prompt state the convention explicitly when calendar tools are enabled

Activity

  1. marcelklehr commented on Oct 20, 2026

    @marcelklehr
    Member

    We can refien the tool description with that example (that's the reason that we have this whole project in the first place :) )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions