dd3e6ed932
Partial salvage of #100887 by @jwilson411. The restore-path half (raise TranscriptReadError from load_transcript, fail the turn closed) already landed via #100910; this keeps the complementary half: every slash-command handler and platform helper that reads the transcript now catches TranscriptReadError and tells the user the history exists but is unreadable, instead of letting the exception reach the dispatch wrapper, which logs it and sends no reply. (cherry picked from commit 2a132c903f51c8d21f6eea64ddeef688c9619a18, run.py/session.py hunks dropped as already on main; notice-path tests replaced accordingly)