# Этапы разработки Последовательность gates предохраняет небольшого агента от догадок о ещё не принятых interfaces. Внутри этапа независимые атомарные задачи доступны параллельно при разных scopes/owners. ## [S00: Профиль и проверка стека](stages/S00.md) Зафиксировать Web scope, browser targets и проверенные кандидаты, не устанавливая непроверенный framework по догадке. Задач: 31; entry: нет; exit: S00-010. ## [S01: Предметные контракты](stages/S01.md) Утвердить небольшие interfaces и fixtures, которые последующие операторы реализуют независимо. Задач: 9; entry: S00-010; exit: S01-009. ## [S02: Workspace и инженерный каркас](stages/S02.md) Создать runnable пустое приложение, тестовые runners и CI без выдачи scaffolding за готовую функцию. Задач: 12; entry: S01-009; exit: S02-012. ## [S03: Токены и базовые компоненты](stages/S03.md) Создать каталог переиспользуемых primitives и состояния accessibility до feature views. Задач: 15; entry: S02-012; exit: S03-015. ## [S04: Локальное хранилище](stages/S04.md) Реализовать account-isolated durable data и безопасные миграции, без секретов в public preferences. Задач: 11; entry: S03-015; exit: S04-011. ## [S05: WSS и аутентификация](stages/S05.md) Подключить реальный browser XMPP adapter с bounded auth/reconnect и provenance. Задач: 11; entry: S04-011; exit: S05-011. ## [S06: Аккаунты и lifecycle](stages/S06.md) Обеспечить login/switch/logout с изолированными async operations и browser-safe credentials. Задач: 11; entry: S05-011; exit: S06-011. ## [S07: Навигация, контакты и списки](stages/S07.md) Собрать адаптивный shell и реальные roster/presence/avatars. Задач: 13; entry: S06-011; exit: S07-013. ## [S08: Сообщения и read state](stages/S08.md) Реализовать domain reducers и отправку через crypto port; default encryption remains fail-closed until crypto stage. Задач: 11; entry: S07-013; exit: S08-011. ## [S09: Лента и composer](stages/S09.md) Соединить UI с message use cases без обхода crypto readiness. Задач: 12; entry: S08-011; exit: S09-012. ## [S10: Действия над сообщениями](stages/S10.md) Реализовать небольшие command/reducer/UI сценарии replies, edit, retract, local delete и reactions. Задач: 15; entry: S09-012; exit: S10-015. ## [S11: Архив и восстановление](stages/S11.md) Обеспечить page/cursor/source safety и durable commit; не replay всю историю на старте. Задач: 13; entry: S10-015; exit: S11-013. ## [S12: OMEMO и доверие](stages/S12.md) Интегрировать проверенный browser crypto backend по малым adapters/fixtures; неподдержанный формат остаётся blocker. Задач: 22; entry: S11-013; exit: S12-022. ## [S13: MUC](stages/S13.md) Добавить группы и полный encrypted recipient set без ослабления прав/анонимности. Задач: 13; entry: S12-022; exit: S13-013. ## [S14: Файлы и upload](stages/S14.md) Реализовать безопасную загрузку и durable drafts по одному небольшому IO/use-case шагу. Задач: 13; entry: S13-013; exit: S14-013. ## [S15: Просмотр медиа](stages/S15.md) Реализовать preview/cache/player/viewer/export и accessibility. Задач: 11; entry: S14-013; exit: S15-011. ## [S16: Recording и геопозиция](stages/S16.md) Реализовать явные permission/capture flows и ручной выбор точки. Задач: 11; entry: S15-011; exit: S16-011. ## [S17: Личные звонки](stages/S17.md) Реализовать signaling/ICE/media/call history по малым состояниям с отдельными проверками. Задач: 14; entry: S16-011; exit: S17-014. ## [S18: Web Push и gateway](stages/S18.md) Реализовать bounded minimal backend и browser service worker с честными closed-tab ограничениями. Задач: 15; entry: S17-014; exit: S18-015. ## [S19: Lock и security hardening](stages/S19.md) Зафиксировать реальные границы local protection и проверить недоверенные входы/секреты. Задач: 11; entry: S18-015; exit: S19-011. ## [S20: Настройки и диагностика](stages/S20.md) Завершить пользовательские preferences, capabilities и справку без ложных гарантий. Задач: 9; entry: S19-011; exit: S20-009. ## [S21: Полная Web-приёмка и поставка](stages/S21.md) Проверить реальные требования по тематическим suites, hosting и release guide. Ни scaffold, ни mock не дают product done. Задач: 13; entry: S20-009; exit: S21-013.