- Зачем:
- канонический Ryzen-прогон не должен повторно запрашивать уже данное решение владельца до порога 30%.
- Что:
- восстановлен короткий контракт approval и удалена лишняя схема owner-package.
- разрешена парная nullable-опора для диагностик без ослабления обязательных gates.
- NUL в путях отклоняется обезличенной ошибкой до загрузки моделей.
- Проверка:
- uv run pytest -q: 457 passed, 2 skipped.
- обязательный набор эксперимента: 110 passed; целевой Ruff пройден.
- независимые code и task/taste review закрыты.
Зачем:
- не допустить загрузку W0 и Sortformer без отдельного принятия трёх референсов владельцем
- связать manifest с точными байтами listening package и owner-authored record
Что:
- добавлены строгие схемы трёх reference rows и четырёх решений Step 3
- все внешние файлы проверяются через held fd без symlink и TOCTOU
- добавлены negative tests для подмен, неточных JSON-типов и небезопасных путей
Проверка:
- uv run pytest -q (532 passed, 2 skipped)
- uv run ruff check src/local_transcriber/streaming_sortformer_experiment.py tests/test_streaming_sortformer_experiment.py
- git diff --check
- Зачем:
- для эксперимента из задачи #46 нужен изолированный и воспроизводимый стенд.
- Что:
- добавлены строгая схема, предварительные проверки и конечный автомат;
- зафиксированы расписание A/B, пороги, измерения, C ABI и правила приватности;
- экспериментальный модуль исключён из production wheel.
- Проверка:
- целевые тесты: 105 passed;
- полный набор: 438 passed, 2 skipped;
- Ruff: All checks passed.
Refs: #46