Symptom: @-mentioning the bot with a non-actionable message (e.g. "are you still a brain-dead bot?") made it propose a fully-formed CREATE_TASK ("Fix error message for duplicate firm invite") that had nothing to do with the message — pulled from unrelated, off-screen channel history.
Cause: the @-mention path gathers 50 messages of channel scrollback as context (ContextGatherer.gather(channel, instruction, 50, …)), and the system prompt opened with "Read the conversation … then decide." The model treated the transcript as a to-do list and surfaced the most actionable-looking topic in the window, regardless of whether the instruction asked for anything.
Fix (prompt grounding, TriageService):
/task text) is the command; the transcript is BACKGROUND only, to interpret references in the instruction. Never create/update/comment on a topic the instruction didn't ask about, even if the transcript discusses other bugs/ideas; don't trawl history for something actionable.Backend compiles; triage suite green. Real validation is dogfooding in Discord.
Follow-up lever if it recurs: drop the @-mention scrollback window (currently 50) — most instructions only need the last few messages + the replied-to message.