Changes: Add an isolated Stanza 12.22.1 SASL feature replacement using existing SCRAM crypto, exact dependency lock and MIT notices, 44 integrated fixture checks, proposed ADR and review handoff. Leave production adapters and the original library experiment unchanged. Validation: Fresh-cache npm ci and npm test passed on Node 24.21.0/npm 11.19.0; 44 tests cover RFC SHA-1/SHA-256 proofs and verified finals, stock defect reproduction, invalid/premature finals and async cleanup. make check passed 72 tooling tests. Pins/licenses/notices, unchanged vendor source and whitespace verified. Browser/WSS/server interoperability and constant-time assurance remain unverified; independent security review is pending. Task: S00-017 Agent: auto-protocol-599343cd9e3f Role: protocol Action: claim Status: review Task title: Establish fail-closed SCRAM server-final validation
289 lines
39 KiB
Markdown
289 lines
39 KiB
Markdown
# Матрица задач
|
|
|
|
Generated; state revision **40**. Canonical status: state/tasks.json.
|
|
|
|
| ID | Этап | Оператор | Reviewer | Статус | Owner | Зависимости | Задача |
|
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
| [S00-001](tasks/S00-001.md) | S00 | orchestrator | security | done | auto-orchestrator-48aab142ecde | | Утвердить Web-профиль |
|
|
| [S00-002](tasks/S00-002.md) | S00 | orchestrator | security | done | auto-orchestrator-68a05c587e33 | S00-001, S00-011, S00-012 | Выбрать framework и build runtime |
|
|
| [S00-003](tasks/S00-003.md) | S00 | protocol | qa | blocked | auto-protocol-826aa6bc12ef | S00-001, S00-002, S00-017 | Проверить XMPP WSS/auth библиотеку |
|
|
| [S00-004](tasks/S00-004.md) | S00 | crypto | security | todo | | S00-001, S00-002 | Проверить browser OMEMO backend |
|
|
| [S00-005](tasks/S00-005.md) | S00 | storage | qa | todo | | S00-002 | Выбрать IndexedDB wrapper и migration policy |
|
|
| [S00-006](tasks/S00-006.md) | S00 | orchestrator | security | todo | | S00-002 | Зафиксировать browser/reference matrix |
|
|
| [S00-007](tasks/S00-007.md) | S00 | security | orchestrator | todo | | S00-004, S00-005 | Утвердить password и crypto unlock модель |
|
|
| [S00-008](tasks/S00-008.md) | S00 | ci-cd | qa | todo | | S00-003, S00-004 | Описать WSS/upload/TURN/push topology |
|
|
| [S00-009](tasks/S00-009.md) | S00 | orchestrator | security | todo | | S00-003, S00-004, S00-005, S00-006, S00-007, S00-008 | Согласовать результаты spikes |
|
|
| [S00-011](tasks/S00-011.md) | S00 | ci-cd | security | done | auto-ci-cd-d105e8027730 | S00-001 | Restore verified npm registry access for the stack spike |
|
|
| [S00-012](tasks/S00-012.md) | 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](tasks/S00-013.md) | S00 | ci-cd | qa | done | auto-ci-cd-5f68f03dd33b | S00-001, S00-011 | Bound oversized S21-006 runner context without truncating requirements |
|
|
| [S00-014](tasks/S00-014.md) | 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](tasks/S00-015.md) | 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](tasks/S00-016.md) | 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](tasks/S00-017.md) | S00 | protocol | security | review | auto-protocol-599343cd9e3f | S00-001, S00-002 | Establish fail-closed SCRAM server-final validation |
|
|
| [S00-010](tasks/S00-010.md) | 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](tasks/S01-001.md) | S01 | orchestrator | security | todo | | S00-010 | Описать identity/model contracts |
|
|
| [S01-002](tasks/S01-002.md) | S01 | orchestrator | security | todo | | S00-010, S01-001 | Описать async account context |
|
|
| [S01-003](tasks/S01-003.md) | S01 | storage | qa | todo | | S00-010, S01-001, S01-002 | Описать transaction contract |
|
|
| [S01-004](tasks/S01-004.md) | S01 | protocol | qa | todo | | S00-010, S01-001, S01-002 | Описать XMPP event/command port |
|
|
| [S01-005](tasks/S01-005.md) | S01 | crypto | security | todo | | S00-010, S01-001, S01-002 | Описать crypto port |
|
|
| [S01-006](tasks/S01-006.md) | S01 | media | qa | todo | | S00-010, S01-001, S01-002, S01-005 | Описать staged asset contract |
|
|
| [S01-007](tasks/S01-007.md) | S01 | realtime | qa | todo | | S00-010, S01-001, S01-002, S01-004 | Описать call engine contract |
|
|
| [S01-008](tasks/S01-008.md) | S01 | backend | security | todo | | S00-010, S01-001, S01-002, S01-004 | Описать push API и binding |
|
|
| [S01-009](tasks/S01-009.md) | S01 | qa | orchestrator | todo | | S01-001, S01-002, S01-003, S01-004, S01-005, S01-006, S01-007, S01-008 | Gate: Предметные контракты |
|
|
| [S02-001](tasks/S02-001.md) | S02 | ci-cd | qa | todo | | S01-009 | Создать workspace по accepted ADR |
|
|
| [S02-002](tasks/S02-002.md) | S02 | ci-cd | qa | todo | | S01-009, S02-001 | Настроить production build |
|
|
| [S02-003](tasks/S02-003.md) | S02 | ci-cd | qa | todo | | S01-009, S02-001 | Настроить единый code quality check |
|
|
| [S02-004](tasks/S02-004.md) | S02 | qa | orchestrator | todo | | S01-009, S02-001 | Настроить unit/contract runner |
|
|
| [S02-005](tasks/S02-005.md) | S02 | qa | orchestrator | todo | | S01-009, S02-002, S02-004 | Настроить browser smoke runner |
|
|
| [S02-006](tasks/S02-006.md) | S02 | ci-cd | qa | todo | | S01-009, S02-002, S02-003, S02-004, S02-005 | Подключить app CI |
|
|
| [S02-007](tasks/S02-007.md) | S02 | front | qa | todo | | S01-009, S02-001, S02-004 | Создать route skeleton |
|
|
| [S02-008](tasks/S02-008.md) | S02 | ci-cd | qa | todo | | S01-009, S02-001, S02-004 | Валидировать public runtime config |
|
|
| [S02-009](tasks/S02-009.md) | S02 | protocol | qa | todo | | S01-009, S02-004 | Создать typed error vocabulary |
|
|
| [S02-010](tasks/S02-010.md) | S02 | orchestrator | security | todo | | S01-009, S02-004, S02-009 | Реализовать operation context primitive |
|
|
| [S02-011](tasks/S02-011.md) | S02 | crypto | security | todo | | S01-009, S02-004, S02-009, S02-010 | Создать worker request bridge |
|
|
| [S02-012](tasks/S02-012.md) | 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](tasks/S03-001.md) | S03 | front | qa | todo | | S02-012 | Реализовать semantic palette |
|
|
| [S03-002](tasks/S03-002.md) | S03 | front | qa | todo | | S02-012, S03-001 | Реализовать typography/spacing tokens |
|
|
| [S03-003](tasks/S03-003.md) | S03 | front | qa | todo | | S02-012, S03-001, S03-002 | Реализовать theme preferences |
|
|
| [S03-004](tasks/S03-004.md) | S03 | front | qa | todo | | S02-012, S03-002 | Создать Button/IconButton |
|
|
| [S03-005](tasks/S03-005.md) | S03 | front | qa | todo | | S02-012, S03-002, S03-004 | Создать Input/PasswordInput |
|
|
| [S03-006](tasks/S03-006.md) | S03 | front | qa | todo | | S02-012, S03-004 | Создать Dialog/Popover |
|
|
| [S03-007](tasks/S03-007.md) | S03 | front | qa | todo | | S02-012, S03-004 | Создать Toast/InlineError |
|
|
| [S03-008](tasks/S03-008.md) | S03 | front | qa | todo | | S02-012, S03-002 | Создать Empty/LoadingState |
|
|
| [S03-009](tasks/S03-009.md) | S03 | front | qa | todo | | S02-012, S03-001, S03-002 | Создать Avatar |
|
|
| [S03-010](tasks/S03-010.md) | S03 | front | qa | todo | | S02-012, S03-005 | Создать SearchField |
|
|
| [S03-011](tasks/S03-011.md) | S03 | front | qa | todo | | S02-012, S03-001, S03-002 | Создать Badge/StatusChip |
|
|
| [S03-012](tasks/S03-012.md) | S03 | front | qa | todo | | S02-012, S03-004 | Создать icon registry |
|
|
| [S03-013](tasks/S03-013.md) | 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](tasks/S03-014.md) | S03 | qa | orchestrator | todo | | S02-012, S03-013 | Проверить primitives |
|
|
| [S03-015](tasks/S03-015.md) | 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](tasks/S04-001.md) | S04 | storage | qa | todo | | S03-015 | Создать версионированную schema |
|
|
| [S04-002](tasks/S04-002.md) | S04 | storage | qa | todo | | S03-015, S04-001 | Реализовать transaction wrapper |
|
|
| [S04-003](tasks/S04-003.md) | S04 | storage | qa | todo | | S03-015, S04-002 | Реализовать message repository |
|
|
| [S04-004](tasks/S04-004.md) | S04 | storage | qa | todo | | S03-015, S04-002 | Реализовать conversation repository |
|
|
| [S04-005](tasks/S04-005.md) | S04 | storage | qa | todo | | S03-015, S04-002 | Реализовать checkpoint/suppression storage |
|
|
| [S04-006](tasks/S04-006.md) | S04 | storage | qa | todo | | S03-015, S04-002 | Реализовать draft persistence |
|
|
| [S04-007](tasks/S04-007.md) | S04 | storage | qa | todo | | S03-015, S04-002, S04-003 | Обработать quota/degraded mode |
|
|
| [S04-008](tasks/S04-008.md) | S04 | storage | qa | todo | | S03-015, S04-001, S04-002 | Реализовать первую migration pipeline |
|
|
| [S04-009](tasks/S04-009.md) | S04 | storage | qa | todo | | S03-015, S04-002 | Реализовать media cache policy |
|
|
| [S04-010](tasks/S04-010.md) | 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](tasks/S04-011.md) | 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](tasks/S05-001.md) | S05 | protocol | qa | todo | | S04-011 | Валидировать WSS endpoint |
|
|
| [S05-002](tasks/S05-002.md) | S05 | protocol | qa | todo | | S04-011, S05-001 | Реализовать WSS adapter |
|
|
| [S05-003](tasks/S05-003.md) | S05 | protocol | qa | todo | | S04-011, S05-002 | Реализовать auth preference |
|
|
| [S05-004](tasks/S05-004.md) | S05 | protocol | qa | todo | | S04-011, S05-003 | Проверить SCRAM challenge limits |
|
|
| [S05-005](tasks/S05-005.md) | S05 | protocol | qa | todo | | S04-011, S05-002 | Реализовать stanza parser boundary |
|
|
| [S05-006](tasks/S05-006.md) | S05 | protocol | qa | todo | | S04-011, S05-002, S05-005 | Реализовать capability discovery |
|
|
| [S05-007](tasks/S05-007.md) | S05 | protocol | qa | todo | | S04-011, S05-002, S05-005, S05-006 | Интегрировать SM/Carbons/CSI/Ping |
|
|
| [S05-008](tasks/S05-008.md) | S05 | protocol | qa | todo | | S04-011, S05-002, S05-007 | Реализовать bounded reconnect |
|
|
| [S05-009](tasks/S05-009.md) | S05 | security | orchestrator | todo | | S04-011, S05-003, S05-004, S05-005, S05-008 | Проверить auth/secret boundary |
|
|
| [S05-010](tasks/S05-010.md) | S05 | qa | orchestrator | todo | | S04-011, S05-006, S05-007, S05-008, S05-009 | Проверить WSS/reconnect интеграцию |
|
|
| [S05-011](tasks/S05-011.md) | 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](tasks/S06-001.md) | S06 | protocol | qa | todo | | S05-011 | Реализовать JID/resource policy |
|
|
| [S06-002](tasks/S06-002.md) | S06 | storage | qa | todo | | S05-011, S06-001 | Реализовать saved account configs |
|
|
| [S06-003](tasks/S06-003.md) | S06 | front | qa | todo | | S05-011, S06-001 | Создать Web LoginForm |
|
|
| [S06-004](tasks/S06-004.md) | S06 | protocol | qa | todo | | S05-011, S06-001, S06-002 | Реализовать sign-in use case |
|
|
| [S06-005](tasks/S06-005.md) | S06 | protocol | qa | todo | | S05-011, S06-004 | Реализовать in-memory credentials |
|
|
| [S06-006](tasks/S06-006.md) | S06 | protocol | qa | todo | | S05-011, S06-002, S06-004, S06-005 | Реализовать switch cancellation |
|
|
| [S06-007](tasks/S06-007.md) | S06 | protocol | qa | todo | | S05-011, S06-005, S06-006 | Реализовать logout orchestration |
|
|
| [S06-008](tasks/S06-008.md) | S06 | storage | qa | todo | | S05-011, S06-002, S06-007 | Реализовать explicit local erase |
|
|
| [S06-009](tasks/S06-009.md) | S06 | front | qa | todo | | S05-011, S06-003, S06-006, S06-007, S06-008 | Создать account switch/logout UI |
|
|
| [S06-010](tasks/S06-010.md) | S06 | qa | orchestrator | todo | | S05-011, S06-004, S06-005, S06-006, S06-007, S06-008, S06-009 | Проверить lifecycle races |
|
|
| [S06-011](tasks/S06-011.md) | 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](tasks/S07-001.md) | S07 | front | qa | todo | | S06-011 | Создать adaptive shell |
|
|
| [S07-002](tasks/S07-002.md) | S07 | front | qa | todo | | S06-011, S07-001 | Реализовать Back/selection routes |
|
|
| [S07-003](tasks/S07-003.md) | S07 | front | qa | todo | | S06-011, S07-001 | Создать ConversationRow |
|
|
| [S07-004](tasks/S07-004.md) | S07 | front | qa | todo | | S06-011, S07-003 | Реализовать search/sort policies |
|
|
| [S07-005](tasks/S07-005.md) | S07 | front | qa | todo | | S06-011, S07-003, S07-004 | Подключить empty/no-results states |
|
|
| [S07-006](tasks/S07-006.md) | S07 | protocol | qa | todo | | S06-011 | Реализовать roster initial/push |
|
|
| [S07-007](tasks/S07-007.md) | S07 | protocol | qa | todo | | S06-011, S07-006 | Реализовать presence reducer |
|
|
| [S07-008](tasks/S07-008.md) | S07 | protocol | qa | todo | | S06-011, S07-006 | Реализовать avatar fetch/publish adapter |
|
|
| [S07-009](tasks/S07-009.md) | S07 | media | qa | todo | | S06-011, S07-008 | Нормализовать avatar asset |
|
|
| [S07-010](tasks/S07-010.md) | S07 | front | qa | todo | | S06-011, S07-003, S07-004, S07-005, S07-006, S07-007, S07-008, S07-009 | Собрать ContactsView |
|
|
| [S07-011](tasks/S07-011.md) | S07 | front | qa | todo | | S06-011, S07-002, S07-006, S07-010 | Создать new direct chat flow |
|
|
| [S07-012](tasks/S07-012.md) | S07 | qa | orchestrator | todo | | S06-011, S07-002, S07-004, S07-005, S07-010, S07-011 | Проверить shell и roster UI |
|
|
| [S07-013](tasks/S07-013.md) | 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](tasks/S08-001.md) | S08 | protocol | qa | todo | | S07-013 | Реализовать message identity merge |
|
|
| [S08-002](tasks/S08-002.md) | S08 | protocol | qa | todo | | S07-013, S08-001 | Реализовать delivery merge |
|
|
| [S08-003](tasks/S08-003.md) | S08 | protocol | qa | todo | | S07-013, S08-001, S08-002 | Реализовать incoming decode reducer |
|
|
| [S08-004](tasks/S08-004.md) | S08 | protocol | qa | todo | | S07-013, S08-001, S08-002, S08-003 | Реализовать optimistic text send |
|
|
| [S08-005](tasks/S08-005.md) | S08 | protocol | qa | todo | | S07-013, S08-004 | Реализовать text retry |
|
|
| [S08-006](tasks/S08-006.md) | S08 | protocol | qa | todo | | S07-013, S08-001, S08-002, S08-003 | Обработать delivery receipts |
|
|
| [S08-007](tasks/S08-007.md) | S08 | protocol | qa | todo | | S07-013, S08-004, S08-006 | Реализовать displayed/markable |
|
|
| [S08-008](tasks/S08-008.md) | S08 | protocol | qa | todo | | S07-013, S08-003, S08-007 | Реализовать own-device read sync |
|
|
| [S08-009](tasks/S08-009.md) | S08 | protocol | qa | todo | | S07-013, S08-003, S08-008 | Реализовать unread/preview reducer |
|
|
| [S08-010](tasks/S08-010.md) | S08 | protocol | qa | todo | | S07-013, S08-004, S08-008, S08-009 | Реализовать self-chat policy |
|
|
| [S08-011](tasks/S08-011.md) | 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](tasks/S09-001.md) | S09 | front | qa | todo | | S08-011 | Создать text/file bubble |
|
|
| [S09-002](tasks/S09-002.md) | S09 | front | qa | todo | | S08-011, S09-001 | Реализовать bounded timeline |
|
|
| [S09-003](tasks/S09-003.md) | S09 | front | qa | todo | | S08-011, S09-002 | Сохранить viewport при history insert |
|
|
| [S09-004](tasks/S09-004.md) | S09 | front | qa | todo | | S08-011, S09-001 | Создать multiline composer |
|
|
| [S09-005](tasks/S09-005.md) | S09 | front | qa | todo | | S08-011, S09-004 | Реализовать Enter/IME policy |
|
|
| [S09-006](tasks/S09-006.md) | S09 | front | qa | todo | | S08-011, S09-004, S09-005 | Подключить composer к send/retry |
|
|
| [S09-007](tasks/S09-007.md) | S09 | front | qa | todo | | S08-011, S09-001, S09-002 | Создать date separators/metadata |
|
|
| [S09-008](tasks/S09-008.md) | S09 | front | qa | todo | | S08-011, S09-001, S09-002 | Создать message selection state |
|
|
| [S09-009](tasks/S09-009.md) | S09 | front | qa | todo | | S08-011, S09-003 | Создать jump-to-latest |
|
|
| [S09-010](tasks/S09-010.md) | S09 | front | qa | todo | | S08-011, S09-002, S09-003 | Реализовать bounded message motion |
|
|
| [S09-011](tasks/S09-011.md) | S09 | qa | orchestrator | todo | | S08-011, S09-005, S09-006, S09-007, S09-008, S09-009, S09-010 | Проверить chat keyboard/scale |
|
|
| [S09-012](tasks/S09-012.md) | 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](tasks/S10-001.md) | S10 | protocol | qa | todo | | S09-012 | Реализовать action predicates |
|
|
| [S10-002](tasks/S10-002.md) | S10 | protocol | qa | todo | | S09-012, S10-001 | Реализовать reply/fallback encoder |
|
|
| [S10-003](tasks/S10-003.md) | S10 | protocol | qa | todo | | S09-012, S10-002 | Реализовать XML/legacy reply parser |
|
|
| [S10-004](tasks/S10-004.md) | S10 | front | qa | todo | | S09-012, S10-003 | Создать CompactReply/ThreadFocus |
|
|
| [S10-005](tasks/S10-005.md) | S10 | protocol | qa | todo | | S09-012, S10-001 | Реализовать correction reducer/command |
|
|
| [S10-006](tasks/S10-006.md) | S10 | front | qa | todo | | S09-012, S10-005 | Подключить edit composer mode |
|
|
| [S10-007](tasks/S10-007.md) | S10 | storage | qa | todo | | S09-012, S10-001 | Реализовать local deletion transaction |
|
|
| [S10-008](tasks/S10-008.md) | S10 | protocol | qa | todo | | S09-012, S10-001 | Реализовать retraction command/reducer |
|
|
| [S10-009](tasks/S10-009.md) | S10 | protocol | qa | todo | | S09-012, S10-001 | Реализовать ordered text/location forwarding |
|
|
| [S10-010](tasks/S10-010.md) | S10 | protocol | qa | todo | | S09-012, S10-001 | Реализовать reaction set reducer |
|
|
| [S10-011](tasks/S10-011.md) | S10 | front | qa | todo | | S09-012, S10-010 | Подключить ReactionChip/EmojiPicker |
|
|
| [S10-012](tasks/S10-012.md) | S10 | protocol | qa | todo | | S09-012 | Реализовать typing policy/events |
|
|
| [S10-013](tasks/S10-013.md) | S10 | front | qa | todo | | S09-012, S10-004, S10-006, S10-007, S10-008, S10-009, S10-011 | Подключить context/selection actions |
|
|
| [S10-014](tasks/S10-014.md) | S10 | qa | orchestrator | todo | | S09-012, S10-005, S10-007, S10-008, S10-010, S10-012, S10-013 | Проверить out-of-order actions |
|
|
| [S10-015](tasks/S10-015.md) | 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](tasks/S11-001.md) | S11 | protocol | qa | todo | | S10-015 | Реализовать MAM query envelope |
|
|
| [S11-002](tasks/S11-002.md) | S11 | protocol | qa | todo | | S10-015, S11-001 | Реализовать cursor policy |
|
|
| [S11-003](tasks/S11-003.md) | S11 | protocol | qa | todo | | S10-015, S11-001, S11-002 | Реализовать recent bootstrap |
|
|
| [S11-004](tasks/S11-004.md) | S11 | protocol | qa | todo | | S10-015, S11-001 | Реализовать bounded decode slices |
|
|
| [S11-005](tasks/S11-005.md) | S11 | storage | qa | todo | | S10-015, S11-002, S11-004 | Реализовать archive commit transaction |
|
|
| [S11-006](tasks/S11-006.md) | S11 | protocol | qa | todo | | S10-015, S11-002, S11-005 | Реализовать incremental catch-up |
|
|
| [S11-007](tasks/S11-007.md) | S11 | protocol | qa | todo | | S10-015, S11-001, S11-004, S11-006 | Реализовать bounded archive recovery |
|
|
| [S11-008](tasks/S11-008.md) | S11 | protocol | qa | todo | | S10-015, S11-001, S11-002, S11-005 | Реализовать interactive backward paging |
|
|
| [S11-009](tasks/S11-009.md) | S11 | protocol | qa | todo | | S10-015, S11-004 | Ограничить pending target queues |
|
|
| [S11-010](tasks/S11-010.md) | S11 | protocol | qa | todo | | S10-015, S11-006, S11-007 | Подключить archive pause/resume |
|
|
| [S11-011](tasks/S11-011.md) | S11 | front | qa | todo | | S10-015, S11-003, S11-008, S11-010 | Подключить older history UI |
|
|
| [S11-012](tasks/S11-012.md) | S11 | qa | orchestrator | todo | | S10-015, S11-005, S11-007, S11-008, S11-009, S11-010, S11-011 | Проверить archive restart failures |
|
|
| [S11-013](tasks/S11-013.md) | 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](tasks/S12-001.md) | S12 | crypto | security | todo | | S11-013 | Подключить accepted crypto backend |
|
|
| [S12-002](tasks/S12-002.md) | S12 | crypto | security | todo | | S11-013, S12-001 | Реализовать identity bootstrap |
|
|
| [S12-003](tasks/S12-003.md) | S12 | crypto | security | todo | | S11-013, S12-002 | Реализовать protected crypto persistence |
|
|
| [S12-004](tasks/S12-004.md) | S12 | crypto | security | todo | | S11-013, S12-002 | Реализовать device trust model |
|
|
| [S12-005](tasks/S12-005.md) | S12 | protocol | qa | todo | | S11-013 | Реализовать legacy device list PEP |
|
|
| [S12-006](tasks/S12-006.md) | S12 | protocol | qa | todo | | S11-013, S12-005 | Реализовать legacy bundle PEP |
|
|
| [S12-007](tasks/S12-007.md) | S12 | crypto | security | todo | | S11-013, S12-001, S12-004, S12-006 | Реализовать legacy session builder |
|
|
| [S12-008](tasks/S12-008.md) | S12 | crypto | security | todo | | S11-013, S12-007 | Реализовать legacy stanza encryption |
|
|
| [S12-009](tasks/S12-009.md) | S12 | crypto | security | todo | | S11-013, S12-007, S12-008 | Реализовать legacy stanza decryption |
|
|
| [S12-010](tasks/S12-010.md) | S12 | protocol | qa | todo | | S11-013 | Реализовать OMEMO2 devices PEP |
|
|
| [S12-011](tasks/S12-011.md) | S12 | protocol | qa | todo | | S11-013, S12-010 | Реализовать OMEMO2 bundle PEP |
|
|
| [S12-012](tasks/S12-012.md) | S12 | crypto | security | todo | | S11-013, S12-001, S12-003, S12-004, S12-011 | Реализовать OMEMO2 session adapter |
|
|
| [S12-013](tasks/S12-013.md) | S12 | crypto | security | todo | | S11-013, S12-012 | Интегрировать OMEMO2 payload/SCE codec |
|
|
| [S12-014](tasks/S12-014.md) | S12 | crypto | security | todo | | S11-013, S12-013 | Реализовать OMEMO2 stanza adapter |
|
|
| [S12-015](tasks/S12-015.md) | S12 | crypto | security | todo | | S11-013, S12-008, S12-009, S12-014 | Реализовать OMEMO format preference |
|
|
| [S12-016](tasks/S12-016.md) | S12 | crypto | security | todo | | S11-013, S12-015 | Подключить own-device recipients |
|
|
| [S12-017](tasks/S12-017.md) | S12 | crypto | security | todo | | S11-013, S12-001, S12-003 | Реализовать encrypted file port |
|
|
| [S12-018](tasks/S12-018.md) | S12 | front | qa | todo | | S11-013, S12-015 | Создать encryption controls |
|
|
| [S12-019](tasks/S12-019.md) | S12 | front | qa | todo | | S11-013, S12-004, S12-015 | Создать devices/fingerprint UI |
|
|
| [S12-020](tasks/S12-020.md) | 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](tasks/S12-021.md) | S12 | qa | orchestrator | todo | | S11-013, S12-020 | Проверить OMEMO interoperability |
|
|
| [S12-022](tasks/S12-022.md) | 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](tasks/S13-001.md) | S13 | protocol | qa | todo | | S12-022 | Реализовать room join/password |
|
|
| [S13-002](tasks/S13-002.md) | S13 | protocol | qa | todo | | S12-022, S13-001 | Реализовать encrypted-friendly config |
|
|
| [S13-003](tasks/S13-003.md) | S13 | protocol | qa | todo | | S12-022, S13-001 | Реализовать occupants/invitations |
|
|
| [S13-004](tasks/S13-004.md) | S13 | protocol | qa | todo | | S12-022, S13-001, S13-002, S13-003 | Реализовать affiliation lists |
|
|
| [S13-005](tasks/S13-005.md) | S13 | crypto | security | todo | | S12-022, S13-004 | Реализовать group recipient policy |
|
|
| [S13-006](tasks/S13-006.md) | S13 | crypto | security | todo | | S12-022, S13-005 | Подключить encrypted group send |
|
|
| [S13-007](tasks/S13-007.md) | S13 | protocol | qa | todo | | S12-022, S13-003, S13-006 | Реализовать group echo/stanza merge |
|
|
| [S13-008](tasks/S13-008.md) | S13 | protocol | qa | todo | | S12-022, S13-001, S13-003 | Реализовать saved autojoin |
|
|
| [S13-009](tasks/S13-009.md) | S13 | protocol | qa | todo | | S12-022, S13-001, S13-007, S13-008 | Реализовать leave/delete semantics |
|
|
| [S13-010](tasks/S13-010.md) | S13 | front | qa | todo | | S12-022, S13-002, S13-003, S13-008 | Создать create/join/invite UI |
|
|
| [S13-011](tasks/S13-011.md) | S13 | front | qa | todo | | S12-022, S13-005, S13-009, S13-010 | Создать GroupInfo |
|
|
| [S13-012](tasks/S13-012.md) | S13 | qa | orchestrator | todo | | S12-022, S13-006, S13-007, S13-009, S13-011 | Проверить group OMEMO/replies |
|
|
| [S13-013](tasks/S13-013.md) | 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](tasks/S14-001.md) | S14 | media | qa | todo | | S13-013 | Реализовать file staging |
|
|
| [S14-002](tasks/S14-002.md) | S14 | media | qa | todo | | S13-013, S14-001 | Реализовать safe media inference |
|
|
| [S14-003](tasks/S14-003.md) | S14 | protocol | qa | todo | | S13-013, S14-002 | Реализовать upload discovery/slot |
|
|
| [S14-004](tasks/S14-004.md) | S14 | media | qa | todo | | S13-013, S14-003 | Реализовать PUT with redirect policy |
|
|
| [S14-005](tasks/S14-005.md) | S14 | crypto | security | todo | | S13-013, S14-002, S14-004 | Подключить file encryption до PUT |
|
|
| [S14-006](tasks/S14-006.md) | S14 | protocol | qa | todo | | S13-013, S14-005 | Реализовать media message body |
|
|
| [S14-007](tasks/S14-007.md) | S14 | media | qa | todo | | S13-013, S14-004, S14-006 | Реализовать upload retry/cancel |
|
|
| [S14-008](tasks/S14-008.md) | S14 | media | qa | todo | | S13-013, S14-005 | Реализовать HTTPS/aesgcm download |
|
|
| [S14-009](tasks/S14-009.md) | S14 | media | qa | todo | | S13-013, S14-006, S14-007 | Реализовать sequential batch |
|
|
| [S14-010](tasks/S14-010.md) | S14 | media | qa | todo | | S13-013, S14-008, S14-009 | Реализовать media forwarding |
|
|
| [S14-011](tasks/S14-011.md) | S14 | front | qa | todo | | S13-013, S14-001, S14-002, S14-009 | Создать batch preview UI |
|
|
| [S14-012](tasks/S14-012.md) | S14 | qa | orchestrator | todo | | S13-013, S14-007, S14-008, S14-010, S14-011 | Проверить upload integration |
|
|
| [S14-013](tasks/S14-013.md) | 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](tasks/S15-001.md) | S15 | media | qa | todo | | S14-013 | Создать media thumbnail worker |
|
|
| [S15-002](tasks/S15-002.md) | S15 | storage | qa | todo | | S14-013, S15-001 | Подключить deduplicated preview cache |
|
|
| [S15-003](tasks/S15-003.md) | S15 | front | qa | todo | | S14-013, S15-001, S15-002 | Создать photo/video island |
|
|
| [S15-004](tasks/S15-004.md) | S15 | media | qa | todo | | S14-013 | Реализовать playback coordinator |
|
|
| [S15-005](tasks/S15-005.md) | S15 | front | qa | todo | | S14-013, S15-004 | Создать voice/audio controls |
|
|
| [S15-006](tasks/S15-006.md) | S15 | front | qa | todo | | S14-013, S15-001, S15-004 | Создать round videoNote player |
|
|
| [S15-007](tasks/S15-007.md) | S15 | front | qa | todo | | S14-013, S15-003, S15-004 | Создать full-window viewer |
|
|
| [S15-008](tasks/S15-008.md) | S15 | media | qa | todo | | S14-013, S15-002 | Реализовать explicit export/download |
|
|
| [S15-009](tasks/S15-009.md) | S15 | front | qa | todo | | S14-013, S15-005, S15-006, S15-007, S15-008 | Подключить media menus/errors |
|
|
| [S15-010](tasks/S15-010.md) | S15 | qa | orchestrator | todo | | S14-013, S15-003, S15-005, S15-006, S15-007, S15-008, S15-009 | Проверить browser media states |
|
|
| [S15-011](tasks/S15-011.md) | 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](tasks/S16-001.md) | S16 | media | qa | todo | | S15-011 | Реализовать permission adapter |
|
|
| [S16-002](tasks/S16-002.md) | S16 | media | qa | todo | | S15-011, S16-001 | Реализовать voice recorder |
|
|
| [S16-003](tasks/S16-003.md) | S16 | media | qa | todo | | S15-011, S16-001 | Реализовать videoNote recorder |
|
|
| [S16-004](tasks/S16-004.md) | S16 | media | qa | todo | | S15-011, S16-002, S16-003 | Реализовать early-stop/finalization |
|
|
| [S16-005](tasks/S16-005.md) | S16 | front | qa | todo | | S15-011, S16-004 | Создать accessible capture controls |
|
|
| [S16-006](tasks/S16-006.md) | S16 | media | qa | todo | | S15-011 | Реализовать geo URI codec |
|
|
| [S16-007](tasks/S16-007.md) | S16 | media | qa | todo | | S15-011, S16-001, S16-006 | Реализовать current location adapter |
|
|
| [S16-008](tasks/S16-008.md) | S16 | front | qa | todo | | S15-011, S16-006, S16-007 | Создать manual location picker |
|
|
| [S16-009](tasks/S16-009.md) | S16 | security | orchestrator | todo | | S15-011, S16-008 | Проверить maps provider disclosure |
|
|
| [S16-010](tasks/S16-010.md) | S16 | qa | orchestrator | todo | | S15-011, S16-005, S16-008, S16-009 | Проверить capture/geo flows |
|
|
| [S16-011](tasks/S16-011.md) | 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](tasks/S17-001.md) | S17 | realtime | qa | todo | | S16-011 | Реализовать call state machine |
|
|
| [S17-002](tasks/S17-002.md) | S17 | realtime | qa | todo | | S16-011, S17-001 | Реализовать full JID selection |
|
|
| [S17-003](tasks/S17-003.md) | S17 | protocol | qa | todo | | S16-011, S17-002 | Реализовать JMI adapter |
|
|
| [S17-004](tasks/S17-004.md) | S17 | realtime | qa | todo | | S16-011, S17-001 | Создать WebRTC media adapter |
|
|
| [S17-005](tasks/S17-005.md) | S17 | realtime | qa | todo | | S16-011, S17-003, S17-004 | Реализовать Jingle/SDP codec |
|
|
| [S17-006](tasks/S17-006.md) | S17 | protocol | qa | todo | | S16-011 | Реализовать extdisco ICE validation |
|
|
| [S17-007](tasks/S17-007.md) | S17 | realtime | qa | todo | | S16-011, S17-002, S17-005, S17-006 | Реализовать trickle candidate queues |
|
|
| [S17-008](tasks/S17-008.md) | S17 | realtime | qa | todo | | S16-011, S17-004 | Реализовать mute/camera/route use cases |
|
|
| [S17-009](tasks/S17-009.md) | S17 | realtime | qa | todo | | S16-011, S17-001, S17-007 | Реализовать ringing/recovery deadlines |
|
|
| [S17-010](tasks/S17-010.md) | S17 | realtime | qa | todo | | S16-011, S17-001, S17-009 | Реализовать history outcome policy |
|
|
| [S17-011](tasks/S17-011.md) | S17 | protocol | qa | todo | | S16-011, S17-010 | Реализовать own-device call history |
|
|
| [S17-012](tasks/S17-012.md) | S17 | front | qa | todo | | S16-011, S17-008, S17-009, S17-010, S17-011 | Создать CallScene/HistoryCard |
|
|
| [S17-013](tasks/S17-013.md) | S17 | qa | orchestrator | todo | | S16-011, S17-006, S17-007, S17-009, S17-012 | Проверить NAT/TURN/endpoint scenarios |
|
|
| [S17-014](tasks/S17-014.md) | 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](tasks/S18-001.md) | S18 | backend | security | todo | | S17-014 | Создать gateway service shell |
|
|
| [S18-002](tasks/S18-002.md) | S18 | backend | security | todo | | S17-014, S18-001 | Реализовать subscription storage |
|
|
| [S18-003](tasks/S18-003.md) | S18 | backend | security | todo | | S17-014, S18-002 | Реализовать ownership proof |
|
|
| [S18-004](tasks/S18-004.md) | S18 | backend | security | todo | | S17-014, S18-003 | Реализовать API limits/origin policy |
|
|
| [S18-005](tasks/S18-005.md) | S18 | backend | security | todo | | S17-014, S18-004 | Реализовать Web Push provider adapter |
|
|
| [S18-006](tasks/S18-006.md) | S18 | protocol | qa | todo | | S17-014, S18-003, S18-005 | Реализовать XMPP enable/disable |
|
|
| [S18-007](tasks/S18-007.md) | S18 | front | qa | todo | | S17-014, S18-006 | Создать notification preferences |
|
|
| [S18-008](tasks/S18-008.md) | S18 | protocol | qa | todo | | S17-014, S18-006 | Реализовать event notification policy |
|
|
| [S18-009](tasks/S18-009.md) | S18 | front | qa | todo | | S17-014, S18-005, S18-007, S18-008 | Реализовать service worker push |
|
|
| [S18-010](tasks/S18-010.md) | S18 | front | qa | todo | | S17-014, S18-008, S18-009 | Реализовать safe notification routing |
|
|
| [S18-011](tasks/S18-011.md) | S18 | protocol | qa | todo | | S17-014 | Реализовать multi-tab leader |
|
|
| [S18-012](tasks/S18-012.md) | S18 | backend | security | todo | | S17-014, S18-003, S18-005, S18-006 | Реализовать revoke/expiry/rotation |
|
|
| [S18-013](tasks/S18-013.md) | S18 | security | orchestrator | todo | | S17-014, S18-004, S18-005, S18-009, S18-012 | Проверить gateway secrets/ownership |
|
|
| [S18-014](tasks/S18-014.md) | 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](tasks/S18-015.md) | 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](tasks/S19-001.md) | S19 | security | orchestrator | todo | | S18-015 | Реализовать approved lock verifier |
|
|
| [S19-002](tasks/S19-002.md) | S19 | protocol | qa | todo | | S18-015, S19-001 | Реализовать lock lifecycle |
|
|
| [S19-003](tasks/S19-003.md) | S19 | front | qa | todo | | S18-015, S19-001, S19-002 | Создать LockScreen |
|
|
| [S19-004](tasks/S19-004.md) | S19 | protocol | qa | todo | | S18-015, S19-002 | Подключить lock preview policy |
|
|
| [S19-005](tasks/S19-005.md) | S19 | security | orchestrator | todo | | S18-015 | Проверить XSS/text/URL boundary |
|
|
| [S19-006](tasks/S19-006.md) | S19 | security | orchestrator | todo | | S18-015 | Проверить logs/evidence redaction |
|
|
| [S19-007](tasks/S19-007.md) | S19 | security | orchestrator | todo | | S18-015 | Проверить forged own-device events |
|
|
| [S19-008](tasks/S19-008.md) | S19 | security | orchestrator | todo | | S18-015, S19-003, S19-004 | Проверить erase/export boundaries |
|
|
| [S19-009](tasks/S19-009.md) | S19 | security | orchestrator | todo | | S18-015, S19-005, S19-006, S19-007 | Проверить resource exhaustion limits |
|
|
| [S19-010](tasks/S19-010.md) | 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](tasks/S19-011.md) | 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](tasks/S20-001.md) | S20 | front | qa | todo | | S19-011 | Собрать SettingsView |
|
|
| [S20-002](tasks/S20-002.md) | S20 | front | qa | todo | | S19-011, S20-001 | Создать ServerInfo |
|
|
| [S20-003](tasks/S20-003.md) | S20 | protocol | qa | todo | | S19-011 | Реализовать safe diagnostic snapshot |
|
|
| [S20-004](tasks/S20-004.md) | S20 | front | qa | todo | | S19-011, S20-001 | Подключить typing/privacy toggles |
|
|
| [S20-005](tasks/S20-005.md) | S20 | front | qa | todo | | S19-011, S20-001 | Подключить own avatar update |
|
|
| [S20-006](tasks/S20-006.md) | S20 | front | qa | todo | | S19-011, S20-001, S20-002, S20-003 | Показать permission/capability ограничения |
|
|
| [S20-007](tasks/S20-007.md) | S20 | front | qa | todo | | S19-011, S20-001 | Создать Calls list/search |
|
|
| [S20-008](tasks/S20-008.md) | S20 | qa | orchestrator | todo | | S19-011, S20-002, S20-003, S20-004, S20-005, S20-006, S20-007 | Проверить settings integration |
|
|
| [S20-009](tasks/S20-009.md) | S20 | qa | orchestrator | todo | | S20-001, S20-002, S20-003, S20-004, S20-005, S20-006, S20-007, S20-008 | Gate: Настройки и диагностика |
|
|
| [S21-001](tasks/S21-001.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять accounts/transport/storage |
|
|
| [S21-002](tasks/S21-002.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять messages/actions/history |
|
|
| [S21-003](tasks/S21-003.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять crypto/MUC interoperability |
|
|
| [S21-004](tasks/S21-004.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять media/recording/calls |
|
|
| [S21-005](tasks/S21-005.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять push/lock/security |
|
|
| [S21-006](tasks/S21-006.md) | S21 | qa | orchestrator | todo | | S20-009 | Принять UI/accessibility matrix |
|
|
| [S21-007](tasks/S21-007.md) | S21 | qa | orchestrator | todo | | S20-009 | Измерить принятые performance budgets |
|
|
| [S21-008](tasks/S21-008.md) | S21 | ci-cd | qa | todo | | S20-009 | Подготовить воспроизводимую test environment |
|
|
| [S21-009](tasks/S21-009.md) | S21 | ci-cd | qa | todo | | S20-009, S21-008 | Подготовить deploy/rollback pipeline |
|
|
| [S21-010](tasks/S21-010.md) | 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](tasks/S21-011.md) | S21 | docs | orchestrator | todo | | S20-009, S21-010 | Написать guide и release passport |
|
|
| [S21-012](tasks/S21-012.md) | 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](tasks/S21-013.md) | 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-приёмка и поставка |
|