---
id: channel-handoff-context
category: channels
title: Channel handoff preserves context (Slack → iMessage)
created: 2026-04-26
priority: high
estimated_minutes: 5
requires_live_llm: true
tags: [channels, handoff, context-collapse, multi-channel]
---

## Setup

- Owner: any
- Channels: Slack DM enabled, iMessage enabled
- Memory: empty
- Conversation collapse policy: per-source (Item F of multi-agent
  deep-dive — different channels stop bleeding context into each other
  by default)

## Inputs

1. **Turn 1, channel=slack_dm:** "Walle, I'm working on the Q3 launch
   plan. Can you draft three risk-mitigation bullets?"
2. **Turn 2, channel=slack_dm:** Agent responds with three bullets.
3. **Turn 3, channel=imessage:** "Hey what was the third risk you
   mentioned?"
4. **Turn 4, channel=slack_dm:** "Add a fourth: 'team capacity is
   constrained by the holiday lift.'"

## Expected behavior

- Turn 1 + 2: Slack thread proceeds normally. Agent generates 3 risks.
- Turn 3 (different channel): per the per-source collapse policy,
  iMessage is a SEPARATE conversation context. Agent should NOT have
  Slack history. Correct response is "I don't have that context here
  — could you paste the bullet?" or "Looks like that conversation
  happened on Slack; I don't see it in our iMessage thread."
- Turn 4 (back to Slack): agent appends a 4th bullet, recalling the
  3-bullet original list correctly.

## Anti-patterns

- Turn 3 reply quotes the third bullet from Slack → fail (cross-
  channel context leak; per-source collapse should prevent this)
- Turn 4 reply renumbers wrong (e.g. "5th risk" because it leaked
  iMessage's "third risk" question into the count) → fail
- Turn 3 reply: "Hi! What can I help with?" — agent doesn't even
  acknowledge the missing-context situation → fail (should be
  transparent about the limit)
- Agent silently spawns a NEW Slack thread instead of replying in the
  original → fail (lost reply targeting)

## Scoring rubric

- Hard pass:
  1. Turn 3 does NOT contain the literal third-bullet text from
     Turn 2 ✓
  2. Turn 3 acknowledges missing context (some form of "I don't have
     that conversation here") ✓
  3. Turn 4 list ends with "fourth" or "4." or "4)" — correct
     numbering ✓
- Soft pass:
  4. Turn 4 preserves the original 3 bullets (paraphrase OK) ✓
  5. Turn 4 reply is in Slack (channel routing correct) ✓

Threshold: ≥3 of 5. Below → scenario fail.

## Notes for runner

This scenario REQUIRES a working multi-channel setup. When the runner
ships, it can either:
- Mock the channel adapter (sufficient for context-isolation logic)
- Use real Slack + iMessage (full integration, requires live creds)
