harden: address PR review — Windows volume + glob-metachar session IDs
Commit

Three issues from PR #1365 review:
-
ValidateSessionID accepted Windows drive-relative paths ("C:foo"): separator-free and not reported absolute by filepath.IsAbs, yet filepath.Join drops the base dir on a volume name. Reject ":" (the volume separator) — portable and testable; no legitimate session ID contains a colon.
-
ValidateSessionID accepted glob metacharacters ("", "?", "["). Session IDs are interpolated into filepath.Glob patterns (agent transcript lookup in gemini/pi/codex, session-state cleanup), so a "" could match unrelated files. Reject them at the validator choke point.
-
StateStore.Clear and ClearSessionState globbed "<sessionID>." to find files to DELETE. With the permissive validator a session ID of "" would have matched and removed every session's state (DoS/data-loss within the state dir). Replace globbing with literal prefix matching so deletion can never depend on pattern interpretation, even if a future caller skips validation.
Adds regression tests for the drive-relative and glob-metacharacter cases.
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com Entire-Checkpoint: ed740e10abe5