# Upgrade Guide — vNEXT

<!-- assembled-by: assemble-next-md -->
<!-- bump: patch -->

## What Changed

Closes the bug the gold-standard live-test caught: multi-machine placement assigned a Slack channel to a machine connected to a DIFFERENT Slack workspace, so the channel "owned" by that machine black-holed (the user got a "working…" standby, never a reply). Placement now knows which channels each machine's adapters can actually reach (`MachineCapacity.servesChannels`, adapter-derived on the heartbeat) and refuses to own a Slack channel on a machine not connected to its workspace — three-valued (`yes`/`no`/`unknown`), `yes` ranked over `unknown` (fail-open on a missing/old signal), all-`no` → `queued` + an honest "no machine serves this" attention surface (never a black-hole pick). Mirrors CMT-1570 (which made placement quota-aware). Ships behind the existing multi-machine path; single-machine = no-op; inert until the Slack inbound threads the channel scope (telegram is shared, so it's deliberately not threaded).

## What to Tell Your User

Nothing user-facing yet — it ships behind the multi-machine path and is the fix for the cross-machine bug the live-test caught (a Slack channel served on the wrong machine). The payoff lands when the multi-machine flags are flipped on.

## Summary of New Capabilities

Internal: placement avoids a machine that can't reach a channel's platform/workspace (mirrors the quota-awareness fix). No new routes or flags; rides the existing multi-machine heartbeat.

## Evidence

- `tests/unit/machineServesChannel.test.ts` (8), `tests/unit/PlacementExecutor.test.ts` (+8 serve-filter), `tests/unit/SessionRouter.test.ts` (+3 incl. the behavioral proof that a Slack channel places on the machine serving its workspace, not the cheaper non-serving one — the bug fixed — and the failover wiring-integrity test). 71 relevant tests green; tsc clean.
- Spec converged 6 iterations (5 cross-model codex/gpt-5.5 + lessons-aware + decision-completeness), ~33 findings; second-pass implementation review concurs.
