ab741ed331
A session is meant to be either the main thread or a tile, never both. openSessionTile enforced this from the tile side (refusing to tile the selected session), but the main side never dropped an existing tile — so any path that routes main to a session that's already tiled (cold-start remembered-session restore, a pasted/Cmd-K route, a notification jump) painted the same transcript twice: the workspace pane from the route and the tile pane in parallel, both fighting one runtime. resumeSession is the single chokepoint every load-into-main path funnels through, so close the redundant tile there once the session becomes the selection. The warm cache/runtime binding survives for main to reuse.