4db2f78ec7
A refresh racing an in-flight delete/archive resurrected the just-removed row: refreshSessions repopulated $sessions straight from the backend page ignoring tombstones, and the projects.tree prune dropped a tombstone the moment its id left scoped_session_ids — so the grouped lane un-filtered it too. The row only vanished on a later refresh once the RPC finally landed. refreshSessions now filters tombstoned rows (and their lineage tip) before merging. The prune keeps a tombstone while its mutation is still in flight locally via $sessionMutationsInFlight, then hands it back to the normal scoped-based prune once settled.