47d6ce78a2
Follow-up to the #65422 salvage: - startup_orphan_reap joins _RECOVERABLE_END_REASONS (kept distinct from ws_orphan_reap for forensics): every recovery fence (find_latest_gateway_session_for_peer, unarchive_recoverable_session, promote_to_session_reset) now treats a startup-swept row as an accidental end, so a sweep never makes a session unresumable. - Config key moves from sessions.orphan_reaper to dashboard.startup_orphan_sweep in DEFAULT_CONFIG, next to its siblings ws_ping_interval / ws_ping_timeout / ws_orphan_reap_grace_s; the raw loader in tui_gateway.server reads the new key (fail-open on missing). cli-config.yaml.example and website/docs/user-guide/configuration.md follow the dashboard.* documentation pattern. - New regression test: a stranded 'active' row (ended_at NULL, no live runtime) is swept AND still recoverable via peer-keyed lookup and fully revivable via reopen_session afterward.