9cdbeceda4
`session.info` claimed the cwd for whatever the selection happened to be, so a background tile's payload could re-point a fresh draft at the tile's workspace. Treat a nonempty `stored_session_id` as non-matching when no primary session is selected; only an ABSENT id uses the selected-session fallback (the backend omits it on a lazy session, and refusing there would leave the workspace un-owned for the rest of the conversation). Matching goes through the lineage rather than raw string equality: the backend id is the live session_key, which auto-compression rotates to the continuation tip, while a selection made from a pinned row holds the stable lineage root. Comparing those literally reads one conversation as two. Co-authored-by: ZHJay <ZHJay@users.noreply.github.com>