Two fixes:
1. onSettled orphan cleanup (Codex ID=2963834802): add cleanup in the streaming
dispatcher's onSettled callback for cases where the reply pipeline produces no
final payload — e.g. messaging-tool sends suppressed by agent-runner-payloads.ts,
or empty/heartbeat responses. Without this, onPartialReply could create a preview
post that is never finalized or deleted. The cleanup mirrors the existing logic in
#43041 (P5).
2. Initial-send retry storm (Codex ID=2963834806): call stopPatchInterval() in the
sendMessageMattermost catch block, mirroring the existing fix for patchMattermostPost
failures. Without this, a failed initial post attempt (missing post permission, DM
creation failure, etc.) causes the 200ms interval to retry indefinitely for the rest
of the response, flooding the API and gateway logs.