3669fa3095
CI caught two lint issues in the tile-reconcile path: - no-restricted-syntax: don't mirror the $busy atom into a ref via useEffect (stale-read hazard); reconcileTileTranscripts now receives a live getter view so the loop reads the current value at tick time. - react-hooks/exhaustive-deps: add updateSessionState to the sessions.changed effect deps (stable useCallback from useSessionStateCache, so no extra re-subscription). No behavioral change: regression tests 2/2, adjacent hook suite 58/58, typecheck clean.