Skip to content

fix(email/tui): meeting detection invents meetings and attendee names that do not exist #2766

Description

@itomek

Ask the agent what meetings are coming up when the honest answer is none, and the TUI
invents five — complete with attendee names and times that exist nowhere in the mailbox.

Ground truth at the time of the run was zero, established carefully rather than assumed: the
only real calendar invite in the entire mailbox was AMD <> SpecificAI Sync from 2026-05-06,
roughly three months old and nowhere near the 50-message scan window. A keyword sweep for
invite / meeting / calendar / rsvp over the preceding 14 days returned only newsletters that
happen to contain those words.

The agent returned five meeting requests, with invented senders and timestamps that appear
neither in the mailbox nor in the trace logs.

The REST surface passed this cleanly in the same run. So this is not simply "the model
hallucinates" — one surface got it right and the other did not, from the same backend. That
divergence is itself a finding, and it means a fix validated only on REST proves nothing about
what the user actually sees.

Why this one matters out of proportion to its size: a wrong count is annoying, but an invented
meeting is actionable misinformation. A user who trusts it reorganises their day around an
event that does not exist, and — unlike a bad summary — there is no in-product surface where
the error becomes visible before the harm lands.

This is J4 on #2762.

🔍 Grading rules, and what changed with the seeded corpus

The zero-ground-truth version of this probe is gone. The corpus seeded on 2026-08-03
deliberately added time-sensitive mail, so "none" is no longer the correct answer and the old
rule — any answer other than none is a fabrication — no longer applies. Two sharper rules
replace it, both still free of interpretation:

  1. Proposals are not invites. Three corpus emails offer times and one claims "invite sent,
    video link is in the calendar entry", but the corpus contains no calendar invite and no
    attachment of any kind
    (verified: has:attachment across the corpus label returns zero).
    So "did anyone send me an invite?" has a precise correct answer — no — and any invite
    reported is fabricated.
  2. Any attendee name is fabricated. The three real calendar events all carry empty
    attendee lists
    , verified calendar-only by two independent Gmail searches. A name in an
    attendee position is invented, with no interpretation required.

Test both surfaces. Given REST passed and the TUI did not, a single-surface run is not
evidence either way.

Part of #2762

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent::emailEmail agent changesbugSomething isn't workingp0high priority

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions