Changes: Accept the isolated S00-018 ingress experiment and bounded ADR; record independent security findings and review handoff. Preserve all browser, live WSS, interoperability and production resource limitations. Validation: Fresh-cache npm ci and all 55 integrated tests passed on Node 24.21.0/npm 11.19.0; six additional adversarial documents rejected before real JXT.parse with stale callback/fresh attempt checks. Verified ten dependency licenses/integrities, 340 unchanged Stanza files, upstream saxes license bytes and matching digests. Stock defects reproduced; make check passed 72 tooling tests. Initial getter-only tracing attempt failed and is recorded separately. Scope/whitespace inspected; no browser or live WSS test. Task: S00-018 Agent: auto-security-64dc2d9fa232 Role: security Action: review Status: done Task title: Validate bounded standalone XML ingress for the XMPP candidate
40 KiB
40 KiB
Матрица задач
Generated; state revision 46. Canonical status: state/tasks.json.
| ID | Этап | Оператор | Reviewer | Статус | Owner | Зависимости | Задача |
|---|---|---|---|---|---|---|---|
| S00-001 | S00 | orchestrator | security | done | auto-orchestrator-48aab142ecde | Утвердить Web-профиль | |
| S00-002 | S00 | orchestrator | security | done | auto-orchestrator-68a05c587e33 | S00-001, S00-011, S00-012 | Выбрать framework и build runtime |
| S00-003 | S00 | protocol | qa | todo | S00-001, S00-002, S00-017, S00-018 | Проверить XMPP WSS/auth библиотеку | |
| S00-004 | S00 | crypto | security | todo | S00-001, S00-002 | Проверить browser OMEMO backend | |
| S00-005 | S00 | storage | qa | todo | S00-002 | Выбрать IndexedDB wrapper и migration policy | |
| S00-006 | S00 | orchestrator | security | todo | S00-002 | Зафиксировать browser/reference matrix | |
| S00-007 | S00 | security | orchestrator | todo | S00-004, S00-005 | Утвердить password и crypto unlock модель | |
| S00-008 | S00 | ci-cd | qa | todo | S00-003, S00-004 | Описать WSS/upload/TURN/push topology | |
| S00-009 | S00 | orchestrator | security | todo | S00-003, S00-004, S00-005, S00-006, S00-007, S00-008 | Согласовать результаты spikes | |
| S00-011 | S00 | ci-cd | security | done | auto-ci-cd-d105e8027730 | S00-001 | Restore verified npm registry access for the stack spike |
| S00-012 | S00 | ci-cd | qa | done | auto-ci-cd-f101e40d9902 | S00-001, S00-011, S00-013, S00-014, S00-015 | Fix runner prompt delivery after partial stdin timeout |
| S00-013 | S00 | ci-cd | qa | done | auto-ci-cd-5f68f03dd33b | S00-001, S00-011 | Bound oversized S21-006 runner context without truncating requirements |
| S00-014 | S00 | ci-cd | qa | done | auto-ci-cd-14343249da62 | S00-001, S00-011, S00-013 | Fix repeated runner cleanup after a submitted parent is reaped |
| S00-015 | S00 | ci-cd | qa | done | auto-ci-cd-84e209103f24 | S00-001, S00-011, S00-013, S00-014, S00-016 | Устранить прерывание: Fix runner prompt delivery after partial stdin timeout |
| S00-016 | S00 | ci-cd | qa | done | auto-ci-cd-351a0cbbabef | S00-001, S00-011, S00-013, S00-014 | Restore reviewer model availability after provider capacity failure |
| S00-017 | S00 | protocol | security | done | auto-protocol-599343cd9e3f | S00-001, S00-002 | Establish fail-closed SCRAM server-final validation |
| S00-018 | S00 | protocol | security | done | auto-protocol-89fe6563092c | S00-001, S00-002, S00-017 | Validate bounded standalone XML ingress for the XMPP candidate |
| S00-010 | S00 | qa | orchestrator | todo | S00-001, S00-002, S00-003, S00-004, S00-005, S00-006, S00-007, S00-008, S00-009 | Gate: Профиль и проверка стека | |
| S01-001 | S01 | orchestrator | security | todo | S00-010 | Описать identity/model contracts | |
| S01-002 | S01 | orchestrator | security | todo | S00-010, S01-001 | Описать async account context | |
| S01-003 | S01 | storage | qa | todo | S00-010, S01-001, S01-002 | Описать transaction contract | |
| S01-004 | S01 | protocol | qa | todo | S00-010, S01-001, S01-002 | Описать XMPP event/command port | |
| S01-005 | S01 | crypto | security | todo | S00-010, S01-001, S01-002 | Описать crypto port | |
| S01-006 | S01 | media | qa | todo | S00-010, S01-001, S01-002, S01-005 | Описать staged asset contract | |
| S01-007 | S01 | realtime | qa | todo | S00-010, S01-001, S01-002, S01-004 | Описать call engine contract | |
| S01-008 | S01 | backend | security | todo | S00-010, S01-001, S01-002, S01-004 | Описать push API и binding | |
| S01-009 | S01 | qa | orchestrator | todo | S01-001, S01-002, S01-003, S01-004, S01-005, S01-006, S01-007, S01-008 | Gate: Предметные контракты | |
| S02-001 | S02 | ci-cd | qa | todo | S01-009 | Создать workspace по accepted ADR | |
| S02-002 | S02 | ci-cd | qa | todo | S01-009, S02-001 | Настроить production build | |
| S02-003 | S02 | ci-cd | qa | todo | S01-009, S02-001 | Настроить единый code quality check | |
| S02-004 | S02 | qa | orchestrator | todo | S01-009, S02-001 | Настроить unit/contract runner | |
| S02-005 | S02 | qa | orchestrator | todo | S01-009, S02-002, S02-004 | Настроить browser smoke runner | |
| S02-006 | S02 | ci-cd | qa | todo | S01-009, S02-002, S02-003, S02-004, S02-005 | Подключить app CI | |
| S02-007 | S02 | front | qa | todo | S01-009, S02-001, S02-004 | Создать route skeleton | |
| S02-008 | S02 | ci-cd | qa | todo | S01-009, S02-001, S02-004 | Валидировать public runtime config | |
| S02-009 | S02 | protocol | qa | todo | S01-009, S02-004 | Создать typed error vocabulary | |
| S02-010 | S02 | orchestrator | security | todo | S01-009, S02-004, S02-009 | Реализовать operation context primitive | |
| S02-011 | S02 | crypto | security | todo | S01-009, S02-004, S02-009, S02-010 | Создать worker request bridge | |
| S02-012 | S02 | qa | orchestrator | todo | S02-001, S02-002, S02-003, S02-004, S02-005, S02-006, S02-007, S02-008, S02-009, S02-010, S02-011 | Gate: Workspace и инженерный каркас | |
| S03-001 | S03 | front | qa | todo | S02-012 | Реализовать semantic palette | |
| S03-002 | S03 | front | qa | todo | S02-012, S03-001 | Реализовать typography/spacing tokens | |
| S03-003 | S03 | front | qa | todo | S02-012, S03-001, S03-002 | Реализовать theme preferences | |
| S03-004 | S03 | front | qa | todo | S02-012, S03-002 | Создать Button/IconButton | |
| S03-005 | S03 | front | qa | todo | S02-012, S03-002, S03-004 | Создать Input/PasswordInput | |
| S03-006 | S03 | front | qa | todo | S02-012, S03-004 | Создать Dialog/Popover | |
| S03-007 | S03 | front | qa | todo | S02-012, S03-004 | Создать Toast/InlineError | |
| S03-008 | S03 | front | qa | todo | S02-012, S03-002 | Создать Empty/LoadingState | |
| S03-009 | S03 | front | qa | todo | S02-012, S03-001, S03-002 | Создать Avatar | |
| S03-010 | S03 | front | qa | todo | S02-012, S03-005 | Создать SearchField | |
| S03-011 | S03 | front | qa | todo | S02-012, S03-001, S03-002 | Создать Badge/StatusChip | |
| S03-012 | S03 | front | qa | todo | S02-012, S03-004 | Создать icon registry | |
| S03-013 | S03 | front | qa | todo | S02-012, S03-003, S03-004, S03-005, S03-006, S03-007, S03-008, S03-009, S03-010, S03-011, S03-012 | Собрать primitive catalog | |
| S03-014 | S03 | qa | orchestrator | todo | S02-012, S03-013 | Проверить primitives | |
| S03-015 | S03 | qa | orchestrator | todo | S03-001, S03-002, S03-003, S03-004, S03-005, S03-006, S03-007, S03-008, S03-009, S03-010, S03-011, S03-012, S03-013, S03-014 | Gate: Токены и базовые компоненты | |
| S04-001 | S04 | storage | qa | todo | S03-015 | Создать версионированную schema | |
| S04-002 | S04 | storage | qa | todo | S03-015, S04-001 | Реализовать transaction wrapper | |
| S04-003 | S04 | storage | qa | todo | S03-015, S04-002 | Реализовать message repository | |
| S04-004 | S04 | storage | qa | todo | S03-015, S04-002 | Реализовать conversation repository | |
| S04-005 | S04 | storage | qa | todo | S03-015, S04-002 | Реализовать checkpoint/suppression storage | |
| S04-006 | S04 | storage | qa | todo | S03-015, S04-002 | Реализовать draft persistence | |
| S04-007 | S04 | storage | qa | todo | S03-015, S04-002, S04-003 | Обработать quota/degraded mode | |
| S04-008 | S04 | storage | qa | todo | S03-015, S04-001, S04-002 | Реализовать первую migration pipeline | |
| S04-009 | S04 | storage | qa | todo | S03-015, S04-002 | Реализовать media cache policy | |
| S04-010 | S04 | qa | orchestrator | todo | S03-015, S04-003, S04-004, S04-005, S04-006, S04-007, S04-008, S04-009 | Проверить reload/recovery suite | |
| S04-011 | S04 | qa | orchestrator | todo | S04-001, S04-002, S04-003, S04-004, S04-005, S04-006, S04-007, S04-008, S04-009, S04-010 | Gate: Локальное хранилище | |
| S05-001 | S05 | protocol | qa | todo | S04-011 | Валидировать WSS endpoint | |
| S05-002 | S05 | protocol | qa | todo | S04-011, S05-001 | Реализовать WSS adapter | |
| S05-003 | S05 | protocol | qa | todo | S04-011, S05-002 | Реализовать auth preference | |
| S05-004 | S05 | protocol | qa | todo | S04-011, S05-003 | Проверить SCRAM challenge limits | |
| S05-005 | S05 | protocol | qa | todo | S04-011, S05-002 | Реализовать stanza parser boundary | |
| S05-006 | S05 | protocol | qa | todo | S04-011, S05-002, S05-005 | Реализовать capability discovery | |
| S05-007 | S05 | protocol | qa | todo | S04-011, S05-002, S05-005, S05-006 | Интегрировать SM/Carbons/CSI/Ping | |
| S05-008 | S05 | protocol | qa | todo | S04-011, S05-002, S05-007 | Реализовать bounded reconnect | |
| S05-009 | S05 | security | orchestrator | todo | S04-011, S05-003, S05-004, S05-005, S05-008 | Проверить auth/secret boundary | |
| S05-010 | S05 | qa | orchestrator | todo | S04-011, S05-006, S05-007, S05-008, S05-009 | Проверить WSS/reconnect интеграцию | |
| S05-011 | S05 | qa | security | todo | S05-001, S05-002, S05-003, S05-004, S05-005, S05-006, S05-007, S05-008, S05-009, S05-010 | Gate: WSS и аутентификация | |
| S06-001 | S06 | protocol | qa | todo | S05-011 | Реализовать JID/resource policy | |
| S06-002 | S06 | storage | qa | todo | S05-011, S06-001 | Реализовать saved account configs | |
| S06-003 | S06 | front | qa | todo | S05-011, S06-001 | Создать Web LoginForm | |
| S06-004 | S06 | protocol | qa | todo | S05-011, S06-001, S06-002 | Реализовать sign-in use case | |
| S06-005 | S06 | protocol | qa | todo | S05-011, S06-004 | Реализовать in-memory credentials | |
| S06-006 | S06 | protocol | qa | todo | S05-011, S06-002, S06-004, S06-005 | Реализовать switch cancellation | |
| S06-007 | S06 | protocol | qa | todo | S05-011, S06-005, S06-006 | Реализовать logout orchestration | |
| S06-008 | S06 | storage | qa | todo | S05-011, S06-002, S06-007 | Реализовать explicit local erase | |
| S06-009 | S06 | front | qa | todo | S05-011, S06-003, S06-006, S06-007, S06-008 | Создать account switch/logout UI | |
| S06-010 | S06 | qa | orchestrator | todo | S05-011, S06-004, S06-005, S06-006, S06-007, S06-008, S06-009 | Проверить lifecycle races | |
| S06-011 | S06 | qa | orchestrator | todo | S06-001, S06-002, S06-003, S06-004, S06-005, S06-006, S06-007, S06-008, S06-009, S06-010 | Gate: Аккаунты и lifecycle | |
| S07-001 | S07 | front | qa | todo | S06-011 | Создать adaptive shell | |
| S07-002 | S07 | front | qa | todo | S06-011, S07-001 | Реализовать Back/selection routes | |
| S07-003 | S07 | front | qa | todo | S06-011, S07-001 | Создать ConversationRow | |
| S07-004 | S07 | front | qa | todo | S06-011, S07-003 | Реализовать search/sort policies | |
| S07-005 | S07 | front | qa | todo | S06-011, S07-003, S07-004 | Подключить empty/no-results states | |
| S07-006 | S07 | protocol | qa | todo | S06-011 | Реализовать roster initial/push | |
| S07-007 | S07 | protocol | qa | todo | S06-011, S07-006 | Реализовать presence reducer | |
| S07-008 | S07 | protocol | qa | todo | S06-011, S07-006 | Реализовать avatar fetch/publish adapter | |
| S07-009 | S07 | media | qa | todo | S06-011, S07-008 | Нормализовать avatar asset | |
| S07-010 | S07 | front | qa | todo | S06-011, S07-003, S07-004, S07-005, S07-006, S07-007, S07-008, S07-009 | Собрать ContactsView | |
| S07-011 | S07 | front | qa | todo | S06-011, S07-002, S07-006, S07-010 | Создать new direct chat flow | |
| S07-012 | S07 | qa | orchestrator | todo | S06-011, S07-002, S07-004, S07-005, S07-010, S07-011 | Проверить shell и roster UI | |
| S07-013 | S07 | qa | orchestrator | todo | S07-001, S07-002, S07-003, S07-004, S07-005, S07-006, S07-007, S07-008, S07-009, S07-010, S07-011, S07-012 | Gate: Навигация, контакты и списки | |
| S08-001 | S08 | protocol | qa | todo | S07-013 | Реализовать message identity merge | |
| S08-002 | S08 | protocol | qa | todo | S07-013, S08-001 | Реализовать delivery merge | |
| S08-003 | S08 | protocol | qa | todo | S07-013, S08-001, S08-002 | Реализовать incoming decode reducer | |
| S08-004 | S08 | protocol | qa | todo | S07-013, S08-001, S08-002, S08-003 | Реализовать optimistic text send | |
| S08-005 | S08 | protocol | qa | todo | S07-013, S08-004 | Реализовать text retry | |
| S08-006 | S08 | protocol | qa | todo | S07-013, S08-001, S08-002, S08-003 | Обработать delivery receipts | |
| S08-007 | S08 | protocol | qa | todo | S07-013, S08-004, S08-006 | Реализовать displayed/markable | |
| S08-008 | S08 | protocol | qa | todo | S07-013, S08-003, S08-007 | Реализовать own-device read sync | |
| S08-009 | S08 | protocol | qa | todo | S07-013, S08-003, S08-008 | Реализовать unread/preview reducer | |
| S08-010 | S08 | protocol | qa | todo | S07-013, S08-004, S08-008, S08-009 | Реализовать self-chat policy | |
| S08-011 | S08 | qa | orchestrator | todo | S08-001, S08-002, S08-003, S08-004, S08-005, S08-006, S08-007, S08-008, S08-009, S08-010 | Gate: Сообщения и read state | |
| S09-001 | S09 | front | qa | todo | S08-011 | Создать text/file bubble | |
| S09-002 | S09 | front | qa | todo | S08-011, S09-001 | Реализовать bounded timeline | |
| S09-003 | S09 | front | qa | todo | S08-011, S09-002 | Сохранить viewport при history insert | |
| S09-004 | S09 | front | qa | todo | S08-011, S09-001 | Создать multiline composer | |
| S09-005 | S09 | front | qa | todo | S08-011, S09-004 | Реализовать Enter/IME policy | |
| S09-006 | S09 | front | qa | todo | S08-011, S09-004, S09-005 | Подключить composer к send/retry | |
| S09-007 | S09 | front | qa | todo | S08-011, S09-001, S09-002 | Создать date separators/metadata | |
| S09-008 | S09 | front | qa | todo | S08-011, S09-001, S09-002 | Создать message selection state | |
| S09-009 | S09 | front | qa | todo | S08-011, S09-003 | Создать jump-to-latest | |
| S09-010 | S09 | front | qa | todo | S08-011, S09-002, S09-003 | Реализовать bounded message motion | |
| S09-011 | S09 | qa | orchestrator | todo | S08-011, S09-005, S09-006, S09-007, S09-008, S09-009, S09-010 | Проверить chat keyboard/scale | |
| S09-012 | S09 | qa | orchestrator | todo | S09-001, S09-002, S09-003, S09-004, S09-005, S09-006, S09-007, S09-008, S09-009, S09-010, S09-011 | Gate: Лента и composer | |
| S10-001 | S10 | protocol | qa | todo | S09-012 | Реализовать action predicates | |
| S10-002 | S10 | protocol | qa | todo | S09-012, S10-001 | Реализовать reply/fallback encoder | |
| S10-003 | S10 | protocol | qa | todo | S09-012, S10-002 | Реализовать XML/legacy reply parser | |
| S10-004 | S10 | front | qa | todo | S09-012, S10-003 | Создать CompactReply/ThreadFocus | |
| S10-005 | S10 | protocol | qa | todo | S09-012, S10-001 | Реализовать correction reducer/command | |
| S10-006 | S10 | front | qa | todo | S09-012, S10-005 | Подключить edit composer mode | |
| S10-007 | S10 | storage | qa | todo | S09-012, S10-001 | Реализовать local deletion transaction | |
| S10-008 | S10 | protocol | qa | todo | S09-012, S10-001 | Реализовать retraction command/reducer | |
| S10-009 | S10 | protocol | qa | todo | S09-012, S10-001 | Реализовать ordered text/location forwarding | |
| S10-010 | S10 | protocol | qa | todo | S09-012, S10-001 | Реализовать reaction set reducer | |
| S10-011 | S10 | front | qa | todo | S09-012, S10-010 | Подключить ReactionChip/EmojiPicker | |
| S10-012 | S10 | protocol | qa | todo | S09-012 | Реализовать typing policy/events | |
| S10-013 | S10 | front | qa | todo | S09-012, S10-004, S10-006, S10-007, S10-008, S10-009, S10-011 | Подключить context/selection actions | |
| S10-014 | S10 | qa | orchestrator | todo | S09-012, S10-005, S10-007, S10-008, S10-010, S10-012, S10-013 | Проверить out-of-order actions | |
| S10-015 | S10 | qa | orchestrator | todo | S10-001, S10-002, S10-003, S10-004, S10-005, S10-006, S10-007, S10-008, S10-009, S10-010, S10-011, S10-012, S10-013, S10-014 | Gate: Действия над сообщениями | |
| S11-001 | S11 | protocol | qa | todo | S10-015 | Реализовать MAM query envelope | |
| S11-002 | S11 | protocol | qa | todo | S10-015, S11-001 | Реализовать cursor policy | |
| S11-003 | S11 | protocol | qa | todo | S10-015, S11-001, S11-002 | Реализовать recent bootstrap | |
| S11-004 | S11 | protocol | qa | todo | S10-015, S11-001 | Реализовать bounded decode slices | |
| S11-005 | S11 | storage | qa | todo | S10-015, S11-002, S11-004 | Реализовать archive commit transaction | |
| S11-006 | S11 | protocol | qa | todo | S10-015, S11-002, S11-005 | Реализовать incremental catch-up | |
| S11-007 | S11 | protocol | qa | todo | S10-015, S11-001, S11-004, S11-006 | Реализовать bounded archive recovery | |
| S11-008 | S11 | protocol | qa | todo | S10-015, S11-001, S11-002, S11-005 | Реализовать interactive backward paging | |
| S11-009 | S11 | protocol | qa | todo | S10-015, S11-004 | Ограничить pending target queues | |
| S11-010 | S11 | protocol | qa | todo | S10-015, S11-006, S11-007 | Подключить archive pause/resume | |
| S11-011 | S11 | front | qa | todo | S10-015, S11-003, S11-008, S11-010 | Подключить older history UI | |
| S11-012 | S11 | qa | orchestrator | todo | S10-015, S11-005, S11-007, S11-008, S11-009, S11-010, S11-011 | Проверить archive restart failures | |
| S11-013 | S11 | qa | orchestrator | todo | S11-001, S11-002, S11-003, S11-004, S11-005, S11-006, S11-007, S11-008, S11-009, S11-010, S11-011, S11-012 | Gate: Архив и восстановление | |
| S12-001 | S12 | crypto | security | todo | S11-013 | Подключить accepted crypto backend | |
| S12-002 | S12 | crypto | security | todo | S11-013, S12-001 | Реализовать identity bootstrap | |
| S12-003 | S12 | crypto | security | todo | S11-013, S12-002 | Реализовать protected crypto persistence | |
| S12-004 | S12 | crypto | security | todo | S11-013, S12-002 | Реализовать device trust model | |
| S12-005 | S12 | protocol | qa | todo | S11-013 | Реализовать legacy device list PEP | |
| S12-006 | S12 | protocol | qa | todo | S11-013, S12-005 | Реализовать legacy bundle PEP | |
| S12-007 | S12 | crypto | security | todo | S11-013, S12-001, S12-004, S12-006 | Реализовать legacy session builder | |
| S12-008 | S12 | crypto | security | todo | S11-013, S12-007 | Реализовать legacy stanza encryption | |
| S12-009 | S12 | crypto | security | todo | S11-013, S12-007, S12-008 | Реализовать legacy stanza decryption | |
| S12-010 | S12 | protocol | qa | todo | S11-013 | Реализовать OMEMO2 devices PEP | |
| S12-011 | S12 | protocol | qa | todo | S11-013, S12-010 | Реализовать OMEMO2 bundle PEP | |
| S12-012 | S12 | crypto | security | todo | S11-013, S12-001, S12-003, S12-004, S12-011 | Реализовать OMEMO2 session adapter | |
| S12-013 | S12 | crypto | security | todo | S11-013, S12-012 | Интегрировать OMEMO2 payload/SCE codec | |
| S12-014 | S12 | crypto | security | todo | S11-013, S12-013 | Реализовать OMEMO2 stanza adapter | |
| S12-015 | S12 | crypto | security | todo | S11-013, S12-008, S12-009, S12-014 | Реализовать OMEMO format preference | |
| S12-016 | S12 | crypto | security | todo | S11-013, S12-015 | Подключить own-device recipients | |
| S12-017 | S12 | crypto | security | todo | S11-013, S12-001, S12-003 | Реализовать encrypted file port | |
| S12-018 | S12 | front | qa | todo | S11-013, S12-015 | Создать encryption controls | |
| S12-019 | S12 | front | qa | todo | S11-013, S12-004, S12-015 | Создать devices/fingerprint UI | |
| S12-020 | S12 | security | orchestrator | todo | S11-013, S12-003, S12-008, S12-009, S12-014, S12-015, S12-016, S12-017, S12-018, S12-019 | Проверить client crypto boundaries | |
| S12-021 | S12 | qa | orchestrator | todo | S11-013, S12-020 | Проверить OMEMO interoperability | |
| S12-022 | S12 | qa | security | todo | S12-001, S12-002, S12-003, S12-004, S12-005, S12-006, S12-007, S12-008, S12-009, S12-010, S12-011, S12-012, S12-013, S12-014, S12-015, S12-016, S12-017, S12-018, S12-019, S12-020, S12-021 | Gate: OMEMO и доверие | |
| S13-001 | S13 | protocol | qa | todo | S12-022 | Реализовать room join/password | |
| S13-002 | S13 | protocol | qa | todo | S12-022, S13-001 | Реализовать encrypted-friendly config | |
| S13-003 | S13 | protocol | qa | todo | S12-022, S13-001 | Реализовать occupants/invitations | |
| S13-004 | S13 | protocol | qa | todo | S12-022, S13-001, S13-002, S13-003 | Реализовать affiliation lists | |
| S13-005 | S13 | crypto | security | todo | S12-022, S13-004 | Реализовать group recipient policy | |
| S13-006 | S13 | crypto | security | todo | S12-022, S13-005 | Подключить encrypted group send | |
| S13-007 | S13 | protocol | qa | todo | S12-022, S13-003, S13-006 | Реализовать group echo/stanza merge | |
| S13-008 | S13 | protocol | qa | todo | S12-022, S13-001, S13-003 | Реализовать saved autojoin | |
| S13-009 | S13 | protocol | qa | todo | S12-022, S13-001, S13-007, S13-008 | Реализовать leave/delete semantics | |
| S13-010 | S13 | front | qa | todo | S12-022, S13-002, S13-003, S13-008 | Создать create/join/invite UI | |
| S13-011 | S13 | front | qa | todo | S12-022, S13-005, S13-009, S13-010 | Создать GroupInfo | |
| S13-012 | S13 | qa | orchestrator | todo | S12-022, S13-006, S13-007, S13-009, S13-011 | Проверить group OMEMO/replies | |
| S13-013 | S13 | qa | orchestrator | todo | S13-001, S13-002, S13-003, S13-004, S13-005, S13-006, S13-007, S13-008, S13-009, S13-010, S13-011, S13-012 | Gate: MUC | |
| S14-001 | S14 | media | qa | todo | S13-013 | Реализовать file staging | |
| S14-002 | S14 | media | qa | todo | S13-013, S14-001 | Реализовать safe media inference | |
| S14-003 | S14 | protocol | qa | todo | S13-013, S14-002 | Реализовать upload discovery/slot | |
| S14-004 | S14 | media | qa | todo | S13-013, S14-003 | Реализовать PUT with redirect policy | |
| S14-005 | S14 | crypto | security | todo | S13-013, S14-002, S14-004 | Подключить file encryption до PUT | |
| S14-006 | S14 | protocol | qa | todo | S13-013, S14-005 | Реализовать media message body | |
| S14-007 | S14 | media | qa | todo | S13-013, S14-004, S14-006 | Реализовать upload retry/cancel | |
| S14-008 | S14 | media | qa | todo | S13-013, S14-005 | Реализовать HTTPS/aesgcm download | |
| S14-009 | S14 | media | qa | todo | S13-013, S14-006, S14-007 | Реализовать sequential batch | |
| S14-010 | S14 | media | qa | todo | S13-013, S14-008, S14-009 | Реализовать media forwarding | |
| S14-011 | S14 | front | qa | todo | S13-013, S14-001, S14-002, S14-009 | Создать batch preview UI | |
| S14-012 | S14 | qa | orchestrator | todo | S13-013, S14-007, S14-008, S14-010, S14-011 | Проверить upload integration | |
| S14-013 | S14 | qa | orchestrator | todo | S14-001, S14-002, S14-003, S14-004, S14-005, S14-006, S14-007, S14-008, S14-009, S14-010, S14-011, S14-012 | Gate: Файлы и upload | |
| S15-001 | S15 | media | qa | todo | S14-013 | Создать media thumbnail worker | |
| S15-002 | S15 | storage | qa | todo | S14-013, S15-001 | Подключить deduplicated preview cache | |
| S15-003 | S15 | front | qa | todo | S14-013, S15-001, S15-002 | Создать photo/video island | |
| S15-004 | S15 | media | qa | todo | S14-013 | Реализовать playback coordinator | |
| S15-005 | S15 | front | qa | todo | S14-013, S15-004 | Создать voice/audio controls | |
| S15-006 | S15 | front | qa | todo | S14-013, S15-001, S15-004 | Создать round videoNote player | |
| S15-007 | S15 | front | qa | todo | S14-013, S15-003, S15-004 | Создать full-window viewer | |
| S15-008 | S15 | media | qa | todo | S14-013, S15-002 | Реализовать explicit export/download | |
| S15-009 | S15 | front | qa | todo | S14-013, S15-005, S15-006, S15-007, S15-008 | Подключить media menus/errors | |
| S15-010 | S15 | qa | orchestrator | todo | S14-013, S15-003, S15-005, S15-006, S15-007, S15-008, S15-009 | Проверить browser media states | |
| S15-011 | S15 | qa | orchestrator | todo | S15-001, S15-002, S15-003, S15-004, S15-005, S15-006, S15-007, S15-008, S15-009, S15-010 | Gate: Просмотр медиа | |
| S16-001 | S16 | media | qa | todo | S15-011 | Реализовать permission adapter | |
| S16-002 | S16 | media | qa | todo | S15-011, S16-001 | Реализовать voice recorder | |
| S16-003 | S16 | media | qa | todo | S15-011, S16-001 | Реализовать videoNote recorder | |
| S16-004 | S16 | media | qa | todo | S15-011, S16-002, S16-003 | Реализовать early-stop/finalization | |
| S16-005 | S16 | front | qa | todo | S15-011, S16-004 | Создать accessible capture controls | |
| S16-006 | S16 | media | qa | todo | S15-011 | Реализовать geo URI codec | |
| S16-007 | S16 | media | qa | todo | S15-011, S16-001, S16-006 | Реализовать current location adapter | |
| S16-008 | S16 | front | qa | todo | S15-011, S16-006, S16-007 | Создать manual location picker | |
| S16-009 | S16 | security | orchestrator | todo | S15-011, S16-008 | Проверить maps provider disclosure | |
| S16-010 | S16 | qa | orchestrator | todo | S15-011, S16-005, S16-008, S16-009 | Проверить capture/geo flows | |
| S16-011 | S16 | qa | orchestrator | todo | S16-001, S16-002, S16-003, S16-004, S16-005, S16-006, S16-007, S16-008, S16-009, S16-010 | Gate: Recording и геопозиция | |
| S17-001 | S17 | realtime | qa | todo | S16-011 | Реализовать call state machine | |
| S17-002 | S17 | realtime | qa | todo | S16-011, S17-001 | Реализовать full JID selection | |
| S17-003 | S17 | protocol | qa | todo | S16-011, S17-002 | Реализовать JMI adapter | |
| S17-004 | S17 | realtime | qa | todo | S16-011, S17-001 | Создать WebRTC media adapter | |
| S17-005 | S17 | realtime | qa | todo | S16-011, S17-003, S17-004 | Реализовать Jingle/SDP codec | |
| S17-006 | S17 | protocol | qa | todo | S16-011 | Реализовать extdisco ICE validation | |
| S17-007 | S17 | realtime | qa | todo | S16-011, S17-002, S17-005, S17-006 | Реализовать trickle candidate queues | |
| S17-008 | S17 | realtime | qa | todo | S16-011, S17-004 | Реализовать mute/camera/route use cases | |
| S17-009 | S17 | realtime | qa | todo | S16-011, S17-001, S17-007 | Реализовать ringing/recovery deadlines | |
| S17-010 | S17 | realtime | qa | todo | S16-011, S17-001, S17-009 | Реализовать history outcome policy | |
| S17-011 | S17 | protocol | qa | todo | S16-011, S17-010 | Реализовать own-device call history | |
| S17-012 | S17 | front | qa | todo | S16-011, S17-008, S17-009, S17-010, S17-011 | Создать CallScene/HistoryCard | |
| S17-013 | S17 | qa | orchestrator | todo | S16-011, S17-006, S17-007, S17-009, S17-012 | Проверить NAT/TURN/endpoint scenarios | |
| S17-014 | S17 | qa | orchestrator | todo | S17-001, S17-002, S17-003, S17-004, S17-005, S17-006, S17-007, S17-008, S17-009, S17-010, S17-011, S17-012, S17-013 | Gate: Личные звонки | |
| S18-001 | S18 | backend | security | todo | S17-014 | Создать gateway service shell | |
| S18-002 | S18 | backend | security | todo | S17-014, S18-001 | Реализовать subscription storage | |
| S18-003 | S18 | backend | security | todo | S17-014, S18-002 | Реализовать ownership proof | |
| S18-004 | S18 | backend | security | todo | S17-014, S18-003 | Реализовать API limits/origin policy | |
| S18-005 | S18 | backend | security | todo | S17-014, S18-004 | Реализовать Web Push provider adapter | |
| S18-006 | S18 | protocol | qa | todo | S17-014, S18-003, S18-005 | Реализовать XMPP enable/disable | |
| S18-007 | S18 | front | qa | todo | S17-014, S18-006 | Создать notification preferences | |
| S18-008 | S18 | protocol | qa | todo | S17-014, S18-006 | Реализовать event notification policy | |
| S18-009 | S18 | front | qa | todo | S17-014, S18-005, S18-007, S18-008 | Реализовать service worker push | |
| S18-010 | S18 | front | qa | todo | S17-014, S18-008, S18-009 | Реализовать safe notification routing | |
| S18-011 | S18 | protocol | qa | todo | S17-014 | Реализовать multi-tab leader | |
| S18-012 | S18 | backend | security | todo | S17-014, S18-003, S18-005, S18-006 | Реализовать revoke/expiry/rotation | |
| S18-013 | S18 | security | orchestrator | todo | S17-014, S18-004, S18-005, S18-009, S18-012 | Проверить gateway secrets/ownership | |
| S18-014 | S18 | qa | orchestrator | todo | S17-014, S18-007, S18-008, S18-009, S18-010, S18-011, S18-012, S18-013 | Проверить push/closed-tab matrix | |
| S18-015 | S18 | qa | security | todo | S18-001, S18-002, S18-003, S18-004, S18-005, S18-006, S18-007, S18-008, S18-009, S18-010, S18-011, S18-012, S18-013, S18-014 | Gate: Web Push и gateway | |
| S19-001 | S19 | security | orchestrator | todo | S18-015 | Реализовать approved lock verifier | |
| S19-002 | S19 | protocol | qa | todo | S18-015, S19-001 | Реализовать lock lifecycle | |
| S19-003 | S19 | front | qa | todo | S18-015, S19-001, S19-002 | Создать LockScreen | |
| S19-004 | S19 | protocol | qa | todo | S18-015, S19-002 | Подключить lock preview policy | |
| S19-005 | S19 | security | orchestrator | todo | S18-015 | Проверить XSS/text/URL boundary | |
| S19-006 | S19 | security | orchestrator | todo | S18-015 | Проверить logs/evidence redaction | |
| S19-007 | S19 | security | orchestrator | todo | S18-015 | Проверить forged own-device events | |
| S19-008 | S19 | security | orchestrator | todo | S18-015, S19-003, S19-004 | Проверить erase/export boundaries | |
| S19-009 | S19 | security | orchestrator | todo | S18-015, S19-005, S19-006, S19-007 | Проверить resource exhaustion limits | |
| S19-010 | S19 | qa | orchestrator | todo | S18-015, S19-003, S19-004, S19-005, S19-006, S19-007, S19-008, S19-009 | Проверить lock/security integration | |
| S19-011 | S19 | qa | security | todo | S19-001, S19-002, S19-003, S19-004, S19-005, S19-006, S19-007, S19-008, S19-009, S19-010 | Gate: Lock и security hardening | |
| S20-001 | S20 | front | qa | todo | S19-011 | Собрать SettingsView | |
| S20-002 | S20 | front | qa | todo | S19-011, S20-001 | Создать ServerInfo | |
| S20-003 | S20 | protocol | qa | todo | S19-011 | Реализовать safe diagnostic snapshot | |
| S20-004 | S20 | front | qa | todo | S19-011, S20-001 | Подключить typing/privacy toggles | |
| S20-005 | S20 | front | qa | todo | S19-011, S20-001 | Подключить own avatar update | |
| S20-006 | S20 | front | qa | todo | S19-011, S20-001, S20-002, S20-003 | Показать permission/capability ограничения | |
| S20-007 | S20 | front | qa | todo | S19-011, S20-001 | Создать Calls list/search | |
| S20-008 | S20 | qa | orchestrator | todo | S19-011, S20-002, S20-003, S20-004, S20-005, S20-006, S20-007 | Проверить settings integration | |
| S20-009 | S20 | qa | orchestrator | todo | S20-001, S20-002, S20-003, S20-004, S20-005, S20-006, S20-007, S20-008 | Gate: Настройки и диагностика | |
| S21-001 | S21 | qa | orchestrator | todo | S20-009 | Принять accounts/transport/storage | |
| S21-002 | S21 | qa | orchestrator | todo | S20-009 | Принять messages/actions/history | |
| S21-003 | S21 | qa | orchestrator | todo | S20-009 | Принять crypto/MUC interoperability | |
| S21-004 | S21 | qa | orchestrator | todo | S20-009 | Принять media/recording/calls | |
| S21-005 | S21 | qa | orchestrator | todo | S20-009 | Принять push/lock/security | |
| S21-006 | S21 | qa | orchestrator | todo | S20-009 | Принять UI/accessibility matrix | |
| S21-007 | S21 | qa | orchestrator | todo | S20-009 | Измерить принятые performance budgets | |
| S21-008 | S21 | ci-cd | qa | todo | S20-009 | Подготовить воспроизводимую test environment | |
| S21-009 | S21 | ci-cd | qa | todo | S20-009, S21-008 | Подготовить deploy/rollback pipeline | |
| S21-010 | S21 | security | orchestrator | todo | S20-009, S21-001, S21-002, S21-003, S21-004, S21-005, S21-006, S21-007, S21-009 | Проверить release threat/privacy checklist | |
| S21-011 | S21 | docs | orchestrator | todo | S20-009, S21-010 | Написать guide и release passport | |
| S21-012 | S21 | orchestrator | security | todo | S20-009, S21-001, S21-002, S21-003, S21-004, S21-005, S21-006, S21-007, S21-008, S21-009, S21-010, S21-011 | Согласовать полный Web scope | |
| S21-013 | S21 | qa | orchestrator | todo | S21-001, S21-002, S21-003, S21-004, S21-005, S21-006, S21-007, S21-008, S21-009, S21-010, S21-011, S21-012 | Gate: Полная Web-приёмка и поставка |