Files
LumaWeb/planning/ROADMAP.md
T
wt 55d9c69a21 S00-004: Record blocked task and remediation handoff
Changes: Preserve incomplete work and blocker metadata for S00-004. This checkpoint does not mark implementation accepted.
Validation: Session ended with status blocked.
Blocker: S00-004 acceptance requires establishing legacy/OMEMO2 AND worker/wasm AND persistence without a homegrown ratchet. Reproduced (this run) probes and live public-registry queries confirm only the audited session/ratchet engine + persistence are verified (@signalapp/libsignal-client@0.105.0, Node native addon, zero .wasm). The browser/worker/WASM deployment and the OMEMO/OMEMO2 wire layer are not available from any maintained package on the reachable registry (@signalapp/libsignal, @converse/omemo, @xmpp/omemo, omemo2, omemo-js, omemo-client, omemo-top, omemo-wasm all E404). ENC-009 forbids a homegrown algorithm/ratchet and ENC-011 forbids substituting media AES-GCM for the OMEMO2 wire format, so the spike cannot synthesize a browser backend inside S00-004 scope.

Task: S00-004
Agent: auto-crypto-fe1c81c17ded
Role: crypto
Action: claim
Status: blocked

Task title: Проверить browser OMEMO backend
2026-10-15 15:42:43 +07:00

5.5 KiB
Raw Blame History

Этапы разработки

Последовательность gates предохраняет небольшого агента от догадок о ещё не принятых interfaces. Внутри этапа независимые атомарные задачи доступны параллельно при разных scopes/owners.

S00: Профиль и проверка стека

Зафиксировать Web scope, browser targets и проверенные кандидаты, не устанавливая непроверенный framework по догадке.

Задач: 22; entry: нет; exit: S00-010.

S01: Предметные контракты

Утвердить небольшие interfaces и fixtures, которые последующие операторы реализуют независимо.

Задач: 9; entry: S00-010; exit: S01-009.

S02: Workspace и инженерный каркас

Создать runnable пустое приложение, тестовые runners и CI без выдачи scaffolding за готовую функцию.

Задач: 12; entry: S01-009; exit: S02-012.

S03: Токены и базовые компоненты

Создать каталог переиспользуемых primitives и состояния accessibility до feature views.

Задач: 15; entry: S02-012; exit: S03-015.

S04: Локальное хранилище

Реализовать account-isolated durable data и безопасные миграции, без секретов в public preferences.

Задач: 11; entry: S03-015; exit: S04-011.

S05: WSS и аутентификация

Подключить реальный browser XMPP adapter с bounded auth/reconnect и provenance.

Задач: 11; entry: S04-011; exit: S05-011.

S06: Аккаунты и lifecycle

Обеспечить login/switch/logout с изолированными async operations и browser-safe credentials.

Задач: 11; entry: S05-011; exit: S06-011.

S07: Навигация, контакты и списки

Собрать адаптивный shell и реальные roster/presence/avatars.

Задач: 13; entry: S06-011; exit: S07-013.

S08: Сообщения и read state

Реализовать domain reducers и отправку через crypto port; default encryption remains fail-closed until crypto stage.

Задач: 11; entry: S07-013; exit: S08-011.

S09: Лента и composer

Соединить UI с message use cases без обхода crypto readiness.

Задач: 12; entry: S08-011; exit: S09-012.

S10: Действия над сообщениями

Реализовать небольшие command/reducer/UI сценарии replies, edit, retract, local delete и reactions.

Задач: 15; entry: S09-012; exit: S10-015.

S11: Архив и восстановление

Обеспечить page/cursor/source safety и durable commit; не replay всю историю на старте.

Задач: 13; entry: S10-015; exit: S11-013.

S12: OMEMO и доверие

Интегрировать проверенный browser crypto backend по малым adapters/fixtures; неподдержанный формат остаётся blocker.

Задач: 22; entry: S11-013; exit: S12-022.

S13: MUC

Добавить группы и полный encrypted recipient set без ослабления прав/анонимности.

Задач: 13; entry: S12-022; exit: S13-013.

S14: Файлы и upload

Реализовать безопасную загрузку и durable drafts по одному небольшому IO/use-case шагу.

Задач: 13; entry: S13-013; exit: S14-013.

S15: Просмотр медиа

Реализовать preview/cache/player/viewer/export и accessibility.

Задач: 11; entry: S14-013; exit: S15-011.

S16: Recording и геопозиция

Реализовать явные permission/capture flows и ручной выбор точки.

Задач: 11; entry: S15-011; exit: S16-011.

S17: Личные звонки

Реализовать signaling/ICE/media/call history по малым состояниям с отдельными проверками.

Задач: 14; entry: S16-011; exit: S17-014.

S18: Web Push и gateway

Реализовать bounded minimal backend и browser service worker с честными closed-tab ограничениями.

Задач: 15; entry: S17-014; exit: S18-015.

S19: Lock и security hardening

Зафиксировать реальные границы local protection и проверить недоверенные входы/секреты.

Задач: 11; entry: S18-015; exit: S19-011.

S20: Настройки и диагностика

Завершить пользовательские preferences, capabilities и справку без ложных гарантий.

Задач: 9; entry: S19-011; exit: S20-009.

S21: Полная Web-приёмка и поставка

Проверить реальные требования по тематическим suites, hosting и release guide. Ни scaffold, ни mock не дают product done.

Задач: 13; entry: S20-009; exit: S21-013.