5.4: sessionsCursor / showArchivedSessions / sessionMenuId /
pendingSessionDeletion / sessionDetailLoadingId / sessionFullPrompt move into
use-session-management.ts, which now also computes visibleSessions from the
archived flag it owns. Home reads back only what its own JSX renders.
sessions / activeSessionId / creatingSession / pendingSessionId stay in the
shell: each is read by the bootstrap effect or the consultation run before the
session hook is called. Reasons are listed one by one in the progress record.
useSessionManagement params 41 -> 34, useProfileOnboarding 38 -> 26.
The growth contract tightens to useState 36 / useRef 37 / lines 1846 and gains an
assertion that useSessionManagement still runs before useRectificationSurface,
with the opener handed over through rectificationSessionOpenerRef.
Zero behavior change, zero copy change.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUei7K13cYxLHE3Axe4A45