Files
LumaWeb/planning/task_matrix.csv
T
wt 493fbaebe7 S00-017: Validate SCRAM server-final before authenticated SASL completion
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
2026-10-15 02:17:46 +07:00

284 lines
30 KiB
CSV

id,stage,operator,reviewer,status,owner,depends_on,title
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,blocked,auto-protocol-826aa6bc12ef,"S00-001, S00-002, S00-017",Проверить 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,review,auto-protocol-599343cd9e3f,"S00-001, S00-002",Establish fail-closed SCRAM server-final validation
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-приёмка и поставка