Извлечено из замороженного 10-reference/ui-navigation.

Решили: реплицируется состояние мира, а не состояние взгляда. Поэтому UI-навигация принципиально client-local: какой экран открыт, какой таб активен, что лежит в стеке — личное дело каждого клиента и по сети не ходит.

Почему: взгляд не влияет на исход. Синхронизировать его значит платить трафиком и сложностью за то, что игроку не нужно, и вдобавок отнимать у него право смотреть куда хочет — один открыл инвентарь, а у второго дёрнулся экран. Реплицировать нужно ровно то, от чего зависит бой; всё остальное клиент решает сам.

Следствие для кода: навигатор не имеет сетевого слоя вообще, и добавлять его не нужно даже когда включится кооп. Синхронизации требует пауза (она меняет ход боя), а не экран, из которого её поставили.

Отдельное решение того же кластера: dev-консоль — свой Modal-экран навигатора, а не внешний пакет (QFSW). Причина: внешняя консоль оставалась последним посторонним писателем контекста ввода — то есть единственным местом, которое меняло состояние ввода мимо IInputService.

Владелец правды: Assets/_Project/Scripts/UI/Navigation/ (стек, ScreenKind); правило ввода — CLAUDE.md; модель репликации — Journal - Host-Authoritative, Not Lockstep.