Opening a session triggers acpLoadSession which replays events like
acp:session_info and acp:model_state. Each of these called updateSession
which unconditionally stamped a fresh updatedAt, causing the session to
jump to the top of the sidebar recents list (sorted by updatedAt desc).
Change updateSession to preserve the existing updatedAt unless the caller
explicitly provides one in the patch. Callers that intentionally want to
bump the timestamp (e.g. sendMessage in useChat) already pass updatedAt
explicitly, so their behavior is unchanged.
Update the test to verify both behaviors: updatedAt is preserved when not
in the patch, and updated when explicitly provided.