The session activity heartbeat restamps last_activity_at and last_activity_description mid-turn and on idle ticks. With those columns in the digest, every heartbeat window still broadcast sessions.changed and the Desktop Sessions panel kept refreshing on its own (#98005). Drop them from the signature; message_count, title, pin/archive and row create/delete still move it. Open the probe through the tracked read-only connect every other live state.db reader uses, and keep the last digest when a read fails after a good one so a busy moment cannot flip the signature to mtime and back. Ports the heartbeat / row-change / busy-store regression tests from #102987. Fixes #98005 Co-authored-by: 小象 <247313108+shorehefei-ship-it@users.noreply.github.com> Co-authored-by: salch-cred <salch-cred@users.noreply.github.com> Co-authored-by: ajbmachon <ajbmachon2@gmail.com>