You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stop the terminal-status webhook fan-out from treating a Fast parent's Slack, Teams, Telegram, or Discord coordinates as an ordinary direct notification target.
Match exact destination coordinates so non-Fast conversations and distinct child-task threads keep their canned status notifications.
Preserve normal pull_request_status_changed platform-event delivery and Fast rendering, with a deterministic canned fallback only when Fast fails before posting any reply.
Keep source-control event policy explicit: opened and terminal events use normal Fast interpretation, while feedback and conflict events retain their visibility-required presentation-only behavior.
Why this change was made
Fast child payloads inherit their parent conversation coordinates. The terminal webhook fan-out read those fields as an ordinary direct destination and posted its fixed was merged/closed by text into the Fast conversation, independently of the structured platform event that Fast also received.
Impact
Fast conversations receive the structured event and report it conversationally in session-owned wording without a preceding canned duplicate. Ordinary task conversations and dedicated child threads retain automated terminal updates, and failed Fast turns still produce one deterministic fallback when no reply was posted.
Final revision: eed7931e stops notifyPullRequestTerminalStatus from posting canned status text when an inherited destination exactly matches the Fast parent conversation. Normal Fast pull_request_status_changed delivery and conversational rendering are preserved. Non-Fast targets and distinct child-task threads still receive direct automation, while a Fast-owned fallback posts only if inference fails before any reply.
Analogous event audit: PR feedback and conflicts already arbitrate Fast-parent delivery before direct fallback; PR opened, task-settled, child-message, artifact, and automation events have no parallel canned direct poster. CI failures flow through PR feedback and remain unchanged. Focused API/SDK suites, full lint/typechecking, and pre-push checks pass.
roomote-roomoteBot
changed the title
[Fix] Fast sessions post duplicate PR merge notifications
[Fix] Fast sessions repeat automated PR status notifications
Aug 27, 2026
roomote-roomoteBot
changed the title
[Fix] Fast sessions repeat automated PR status notifications
[Fix] Fast conversations receive duplicate canned PR status updates
Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
pull_request_status_changedplatform-event delivery and Fast rendering, with a deterministic canned fallback only when Fast fails before posting any reply.Why this change was made
Fast child payloads inherit their parent conversation coordinates. The terminal webhook fan-out read those fields as an ordinary direct destination and posted its fixed
was merged/closed bytext into the Fast conversation, independently of the structured platform event that Fast also received.Impact
Fast conversations receive the structured event and report it conversationally in session-owned wording without a preceding canned duplicate. Ordinary task conversations and dedicated child threads retain automated terminal updates, and failed Fast turns still produce one deterministic fallback when no reply was posted.