{"version":"2.1.235","anchor":"module-level-singletons-replaced-with-accessor-backed-state","canonical_anchor":"module-level-singletons-replaced-with-accessor-backed-state","heading":"Module-level singletons replaced with accessor-backed state containers","tier":"internal","area":"Internals","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.235\/e\/module-level-singletons-replaced-with-accessor-backed-state","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.235","markdown":"### Module-level singletons replaced with accessor-backed state containers\n\nInternal rework moves several module-level singletons into per-container accessor-backed state, no user-visible behavior change\n\nA broad internal refactor replaces file-scope mutable variables with getter functions holding state: promo campaign parsing, tmux RGB application, the classifier warning latch, design MCP session\/initialize caches, the passes eligibility in-flight promise, the plan-file cache, and the plugin approved-plan map all now live in per-container state. The wake router and monitor-ws task take their dependencies as arguments instead of reading module scope.\n\nThere is no user-visible behavior change, but the caches become resettable per session or account rather than shared across the whole process.\n\n- Area: Internals\n- Tier: Under the hood\n- Useful: 1\/5\n- Signal: 0\/5"}