diff --git a/doc/tasks.md b/doc/tasks.md index 91d07b82..9830819d 100644 --- a/doc/tasks.md +++ b/doc/tasks.md @@ -4,17 +4,20 @@ ## Текущие задачи -[ ] **Live: согласовать выдачу cursor с проверкой revision/KEY в media store** — 14.10.2026: - При переносе тестов старого stream_media_receiver на рабочий store/cursor выявлено расхождение: - после KEY revision=1, неполного кадра revision=1 и обычного кадра revision=2 индекс остаётся на старом PTS, - но cursor выдаёт кадр revision=2 без KEY. Desktop отбрасывает его собственной проверкой waitKey. - Воспроизведение: `make -C tests test_stream_media`, затем `tests/test_stream_media --revision-transition`. - Диагностический режим намеренно падает: indexed_video_us=1000000, result=0, revision=2, frame=3, flags=0. - Обычный запуск test_stream_media сохраняет прежние проверки; старый receiver пока не удалён. - Согласовать допуск видео в store/cursor без сброса аудио и без запрета старой revision отстающим readers; - проверить фрагменты, KEY, GAP и чтение истории. После исправления включить регрессию в обычный запуск, - перенести остальные тесты receiver на store/cursor и удалить неиспользуемый API. - Продолжение архитектурного плана: общий viewer reader, измерение запросов кандидатов, граница relay/network. +[+] **Live: согласовать выдачу cursor с проверкой revision/KEY в media store** — 14.10.2026: + Каждый cursor хранит revision последнего выданного полного видео и пропускает новую только с полным KEY. + Неполный кадр прежней revision удаляется; аудио и чтение старой истории другими readers сохраняются. + После GAP, нарушения последовательности фрагментов и вытеснения reader начинает с полного KEY; + зависимые кадры и частичный KEY не выдаются. Готовый KEY не ждёт таймера. + Регрессии включены в обычный test_stream_media; отдельный запуск: `tests/test_stream_media --revision-transition`. + Неиспользуемый stream_media_receiver удалён; сборка, FEC, конфликты формата и восстановление проверяются на store/cursor. + Desktop/Android используют общий stream_media_open с проверкой выбранной эпохи и откатом нового owner при ошибке. + Дополнительный reader-объект не нужен: владение и курсор уже находятся в STREAM_HANDLE. + +[ ] **Live: оценить оставшиеся оптимизации архитектурного плана** — 14.10.2026: + Измерить стоимость получения кандидатов и повторных проверок участников; оптимизировать подтверждённые затраты. + Кэш авторизации требует полной инвалидации при изменении участников, подписантов и ключей канала. + Отделять relay от network только при упрощении владения; не выносить общие внутренние структуры ради размера файла. [+] **Live: прямое превью Android без собственного decoder** — 14.10.2026: Камера одновременно выводит в encoder Surface и TextureView; собственное превью больше не открывает