fix(outbound): persist mirror route only after successful delivery (#…
fix(outbound): persist mirror route only after successful delivery (#124459) A failed message send (e.g. missing channel credentials on a fresh install) durably rewrote the agent's folded main session route before delivery was even attempted: prepareOutboundMirrorRoute called ensureOutboundSessionEntry pre-send, stamping delivery.route/origin and minting a conversations-registry row for the never-reached target. The Control UI then showed the phantom channel identity and the composer bound to a dead conversation. Route resolution stays read-only in prepareOutboundMirrorRoute; the durable write commits once per send at the first success proof: identified platform evidence (onDeliveryResult) or plugin action acceptance (onPluginSendAccepted), both before the in-delivery transcript mirror so first-contact routes still create their session row, with a post-return safety net for adapters whose results carry no platform identity. The gateway send RPC sibling had the same pre-send persistence and gets the same commit-on-evidence ordering. Regression test proves a failed send leaves the seeded main-session origin and conversation identity untouched while a successful send still persists the mirror route; fails on pre-fix code.
评论
?
参与讨论