fix(channels): deliver the first reply on a thread - #6072
Conversation
The delivery worker's first post for an item has no receipt yet, and that branch passed an empty locator to the adapter. The Slack adapter needs locator['channel'], so it raised KeyError and the first answer on any thread was silently never delivered — the playground showed the answer, Slack showed 'Working…' forever. The thread row already holds the full target (team, channel, thread_ts); _send now takes the thread and uses its locator for the no-receipt post. Same defect class as the bridge's F63: a read with no writer, surviving because fixtures seeded the receipt directly.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Railway Preview Environment
|
Context
The agent ran and answered, the playground showed the reply, and Slack showed "Working…" forever. The delivery worker crashed with
KeyError: 'channel'inside the Slack adapter. The first post for an outbox item has no receipt yet, and that branch of_sendpassed an empty locator, although the thread row holds the full target (team, channel, thread timestamp). The first-ever answer on any thread could never be delivered.Changes
_sendnow takes the thread and usesthread.data.external_locatorfor the no-receipt post. Later posts and edits keep using the stored receipt, unchanged.This is the same defect class the branch's ledger records for the bridge adapter (F63): a read with no writer, which survived because test fixtures seeded the receipt directly and never exercised the first post.
Tests
post_messagereceives).