# Web-профиль Применяются неизменённые clear specifications из `specs/`. Они охватывают Web/Desktop/Android, но данная основа реализует только Web. Матрица applicability в `planning/requirements.json` перечисляет каждый ID и причину исключения native-only требований; они не исчезают из оригиналов. ## Решения основы - Один active account, несколько сохранённых configurations. - Защищённый XMPP WebSocket WSS; native TCP/SRV options не изображаются рабочими browser controls. - OMEMO на клиенте; backend не расшифровывает сообщения/файлы. - Password только в памяти с повторным вводом по необходимости; persistent unlock crypto state — отдельный ADR и задача, не plaintext localStorage. - Browser storage и quota отображаются честно; нет обещания hardware-backed vault. - Browser notifications/push требуют permission/provider/gateway. Закрытая вкладка не является живым socket/media process. - Нет автоматически работающего APNs/Android/tray/Watch пути. - Framework, runtime versions, browser matrix и providers пока не приняты. Первые ADR выбирают их с первичными sources и runnable spikes. - TypeScript — предпочтительный кандидат для типизированных contracts; окончательный язык/стек фиксирует S00-002. До этого scaffold не добавляет непроверенные dependency versions. - Минимальный первый демонстрационный вертикальный срез не равен полной готовности. Release gate требует полного Web scope, encrypted send и interoperability evidence. ## Обязательные ограничения Нельзя обходить отсутствующую crypto library через самодельный Double Ratchet, mock-success или server plaintext. Если кандидаты несовместимы, фиксируется blocker и реальный plan change. Документационный scope задачи не делает криптографическую проблему простой: small LLM должна выполнить bounded spike/test либо передать конкретный blocker специалисту. Публичные URL/providers записываются в runtime config. Credentials/VAPID private key/TURN secrets хранятся отдельно и не попадают в committed evidence.