# 2026-04-26 — NamespaceManager rewrite, step 3 ## Цель шага Срезать еще один слой прямых чтений `DefaultNSResolver().FissionResourceNS` в runtime code path. ## Почему это отдельный шаг После step 1 snapshot API уже существует, но runtime loops в executor и storagesvc все еще читают общую mutable map напрямую. Это не архитектурный rewrite, а чистый safety refactor: - `container.AdoptExistingResources()` - `newdeploy.AdoptExistingResources()` - `newdeploy.doIdleObjectReaper()` - `poolmgr.AdoptExistingResources()` - `poolmgr.doIdleObjectReaper()` - `storagesvc.ArchivePruner.getOrphanArchives()` ## Что меняем В этих местах цикл переводится на `DefaultNSResolver().Snapshot()`. ## Что НЕ меняем - не меняем семантику cleanup; - не меняем behavior watcher-ов; - не добавляем remove semantics; - не исправляем router race и buildermgr dedup на этом шаге.