447eb51f29
New-session persistence is lazy: after `/new`, the JSONL is not created until assistant output exists. Exiting before any assistant message left the per-terminal breadcrumb pointing at a not-yet-materialized file, which `readTerminalBreadcrumbEntry` rejected (missing target), so `continueRecent` fell back to `findMostRecentSession` and resurrected the pre-`/new` transcript. `/new` now records a durable `fresh` breadcrumb boundary. The reader returns a fresh breadcrumb even when its target is absent (with `exists:false`), and `continueRecent` honors it by starting fresh instead of falling back. The crumb is re-stamped non-fresh once the session materializes, so a genuinely stale/deleted breadcrumb still falls back to the most-recent session. The breadcrumb write is now synchronous so the fresh->materialized re-stamp cannot reorder. Fixes #5730