{"version":"2.1.238","anchor":"session-state-gathered-into-one-container-instead-of-scatter","canonical_anchor":"session-state-gathered-into-one-container-instead-of-scatter","heading":"Session state gathered into one container instead of scattered globals","tier":"internal","area":"Session State","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.238\/e\/session-state-gathered-into-one-container-instead-of-scatter","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.238","markdown":"### Session state gathered into one container instead of scattered globals\n\nSession state now lives in one per-session container, making sessions cleaner to tear down and restore.\n\n**What**\n\nState that used to live in loose module-level variables and React context is now held per session in a single object, covering things like whether the main loop is busy, terminal focus, feedback notices, project onboarding, push reachability, lost MCP authentication and changed skills. This makes tearing down and restoring a session coherent, and changes nothing you can see.\n\n**Details**\n\n- Call sites read from the container instead of context, for example the main-loop-busy check.\n- Many bare module-level maps and sets were replaced with lazily created per-session holders.\n- Failures restoring a session are logged with \"session rehydrator threw: \".\n\n**Evidence**\n\n`session rehydrator threw: `\n\n- Area: Session State\n- Tier: Under the hood\n- Useful: 2\/5\n- Signal: 3\/5"}