- Зачем:
- uv tool install сохранял Python 3.11 старого окружения и отклонял пакет с требованием Python 3.13.
- Что:
- в команды установки и обновления добавлен явный выбор Python 3.13.
- актуализировано описание выбора Python в спецификации.
- Проверка:
- git diff --check.
- Зачем:
- результат локальной разведки нужен для решения о целесообразности Ryzen-прогона.
- Что:
- опубликованы безопасные агрегаты скорости, памяти и качества.
- зафиксированы отклонения от приемочной спецификации и открытый статус #46.
- добавлены хеши закрытых результатов, моделей, runtime и runner-скрипта.
- Проверка:
- privacy_scan для публичного Markdown прошел.
- git diff --cached --check прошел.
- Зачем:
- старые результаты решено сохранить до завершения и приемки задачи #46.
- Что:
- архивы задач #41/#42 закреплены как временные и доступные только для чтения;
- стенду #46 запрещено читать архивы или использовать их как основу A/B;
- удаление перенесено на момент после приемки нового отчета.
- Проверка:
- выполнены git diff --check и проверка формулировки в задаче #46.
- Зачем:
- локальные оптимизации каскада не достигли 30%-го порога ускорения;
- старые закрытые хранилища и капсулы не должны стать будущей зависимостью.
- Что:
- собран единый реестр результатов задач #41 и #42;
- опубликовано разложение Ryzen baseline и выбрана архитектурная гипотеза;
- подготовлены самодостаточная спецификация и ready-for-agent задача #46.
- Проверка:
- пройдены self-review и две независимые линии ревью;
- проверены 44 строки реестра, 42 арифметических инварианта и ссылки;
- выполнены ai-text-lint, privacy scan и post-lint guard.
Refs: #45
Зачем:
- Сохранить полный ход проверки гипотез и исключить ненужный повтор старой матрицы.
Что:
- Добавлен ledger этапов W/M/Q/E/C с рецептами, числами и причинами отсева.
- Зафиксированы правила переиспользования результатов и границы повторных прогонов.
- Связана следующая end-to-end карта в задаче #45.
Проверка:
- uv run --no-sync pytest -q (389 passed, 2 skipped).
- Codex taste-review и ai-text-lint: APPROVED.
Зачем:
- Проверить переносимость Intel-handoff на Ryzen и закрыть выбор CPU-профиля.
Что:
- Усилена проверка связи Ryzen-manifest с капсулой и переносимости рецептов.
- Добавлены регрессионные тесты и публичный отчет с исходом new map.
Проверка:
- uv run --no-sync pytest -q (389 passed, 2 skipped).
- uv run --no-sync ruff check src/local_transcriber/benchmark_experiment.py tests/test_benchmark_experiment.py.
- Зачем:
- нужно оценить локальные ASR-кандидаты для русских встреч с английскими IT-терминами.
- Что:
- собраны первичные данные по GigaAM, Nemotron, Qwen3-ASR, Canary и Cohere.
- разделены известные факты, рабочие гипотезы, рекомендация и неизвестные.
- сопоставлены языки, таймкоды, режимы работы, поставка и лицензии.
- Проверка:
- выполнено горячее ревью документа и git diff --cached --check.
- Зачем:
- один агент не может последовательно работать на двух ноутбуках.
- Что:
- этапы 0-4 закреплены за Intel, этапы 5-6 - за зависимой Ryzen-задачей.
- добавлен проверяемый handoff через отчет, commit и приватную ZIP-капсулу.
- устранен штатный возврат с Ryzen на Intel и ограничен финальный бюджет.
- Проверка:
- `.venv/bin/pytest -q tests/test_diarization_calibration.py tests/test_speaker_diarizer.py tests/test_diarization.py` (61 passed).
- Зачем:
- нужен ограниченный эксперимент для отсева явных проигрышей без полного перебора и лишней точности.
- Что:
- зафиксирована поэтапная матрица проверок на Intel и Ryzen.
- определены пороги скорости, условия качества, контроль памяти и приватности.
- описаны воспроизводимость стенда, QDQ-происхождение данных и правила решения.
- Проверка:
- `.venv/bin/pytest -q tests/test_diarization_calibration.py tests/test_speaker_diarizer.py tests/test_diarization.py` (61 passed).
- Зачем:
- вывод об обычном обновлении должен опираться на проверяемые API и wheel для поддерживаемых сред.
- Что:
- исправлены ссылки на tagged source и уточнены границы manylinux и будущего CPython 3.15.
- зафиксирован smoke test CPython 3.13 и практическая польза обновления.
- вычищены двусмысленные формулировки без изменения фактов и чисел.
- Проверка:
- uv run pytest -q: 334 passed, 2 skipped.
- 23 внешние ссылки отвечают HTTP 200; git diff --check.
- Зачем:
- требовалось определить первый wheel с публичным API для шага окна.
- Что:
- зафиксирована граница 1.13.5/1.13.6 и матрица Python/платформ.
- выбрано обычное обновление и задана точная граница прототипа.
- Проверка:
- git diff --cached --check.
- Зачем:
- исследовательское решение должно однозначно задавать повторное использование эмбеддингов и проверку счетчиков.
- Что:
- выбран внутренний интерфейс подготовки и финализации sherpa-onnx.
- закреплены входы, вариант NME и критерии качества.
- измерения CPU и памяти отделены от будущих гейтов карты.
- Проверка:
- `uv run pytest -q` (334 passed, 2 skipped).
- `git diff --check`.
- 31 внешняя ссылка отвечает HTTP 200.
- Зачем:
- README и backlog должны одинаково и однозначно описывать границы CPU-замеров перед merge.
- Что:
- Замер Ryzen ограничен одной зафиксированной тестовой машиной.
- Из backlog убраны повтор и искусственные противопоставления вокруг целевого SKU.
- Проверка:
- `git diff --check`.
- Зачем:
- Исследование числа говорящих не проходило отдельный Wayfinder-тикет и не должно публиковаться как принятое решение.
- Что:
- Записка об оценке числа говорящих удалена из publication-ветки.
- Проверка:
- `git diff --check`.
- Зачем:
- вопрос тикета требует проверить формы официальных release-графов, а исходная записка опиралась только на экспортные контракты.
- Что:
- зафиксированы реальные формы и CPU smoke-test batch size 2 для WeSpeaker, CAMPPlus и TitaNet.
- уточнены поддержка equal-length batch у CAMPPlus и fallback между S8S8, U8U8 и U8S8.
- Проверка:
- git diff --check.
- Зачем:
- нужно выбрать реалистичный способ ускорения эмбеддингов на разных x86 CPU.
- Что:
- зафиксированы ограничения batch, stream/session и static INT8 для трех моделей.
- рекомендованы два прототипа и минимальная матрица CPU/ISA.
- Проверка:
- git diff --cached --check.
- Зачем:
- требовалось сравнить облегченные модели диаризации на старом CPU без изменения рабочей конфигурации.
- Что:
- добавлен воспроизводимый и возобновляемый прогон матрицы Pyannote FP32/INT8 с WeSpeaker и TitaNet.
- зафиксированы измерения 108 ячеек, ограничения эксперимента и решение сохранить модель по умолчанию.
- локальные записи в каталоге tmp исключены из индекса Git.
- Проверка:
- .venv/bin/python -m pytest.
- /tmp/local-transcriber-ruff-bin/ruff check scripts/benchmarks/diarization_calibration.py tests/test_diarization_calibration.py.
- Зачем:
- транскрипты ONNX и faster-whisper на CPU имели одинаковую подпись.
- Что:
- для ONNX добавлено обозначение ONNX (CPU) в метаданных транскрипта.
- различие движков и пользовательская шапка покрыты тестами.
- примеры шапки в README и PRD приведены к текущему ONNX-профилю.
- Проверка:
- env -u FORCE_COLOR -u COLUMNS -u LINES uv run pytest.
- Зачем:
- решения по неопределённым словам и CPU-стоимости должны быть проверяемыми до публикации реализации.
- Что:
- задокументировано отклонение post-hoc сглаживания Speaker ? по соседним кластерам.
- добавлено исследование стоимости каскада и облегчённых embedding-моделей.
- Проверка:
- `git diff --cached --check` — без ошибок.
Зачем:
- локальным транскриптам нужна структура реплик для конспектов и протоколов.
Что:
- добавлены пословные таймкоды для всех ASR-бэкендов и сведение с Sherpa-ONNX.
- реализованы CLI-флаги, деградация без потери ASR и speaker Markdown.
- добавлены проверяемый кеш моделей, тесты и документация.
Проверка:
- `pytest` — 283 passed, 1 skipped.
- `pyright` — 0 errors.
- Ruff и `git diff --check` — без ошибок.
- выполнены три контрольных прогона на реальных записях.
- Зачем:
- спецификация не должна оставлять неоднозначности перед реализацией диаризации.
- Что:
- уточнены сведение слов, таймкоды и предупреждение о малом кластере.
- очищены терминология и граница между ADR и спецификацией.
- сохранён результат сравнения WeSpeaker и CAMPPlus.
- Проверка:
- git diff --cached --check и проверка относительных ссылок.
- Зачем:
- решения карты должны стать устойчивой основой для реализации диаризации.
- Что:
- добавлены ADR-007 и спецификация пословной диаризации.
- дополнен доменный словарь и удалены закрытые направления из backlog.
- Проверка:
- git diff --cached --check.
- Зачем:
- результат benchmark нужно интерпретировать с учётом ограничения питания ноутбука.
- Что:
- зафиксировано урезанное питание во время прогонов.
- визуальная оценка потери производительности около 30% явно отделена от измеренных результатов.
- Проверка:
- git diff --check.
- Зачем:
- требовалось проверить долю смешанных ASR-сегментов на трёх записях, включая разговоры на двоих.
- Что:
- добавлен отчёт с долями сегментов и времени для трёх рабочих созвонов.
- обвязка замеров переведена на откалиброванный порог 0,89.
- исследовательский скрипт приведён к формату ruff.
- Проверка:
- выполнены три полных прогона bench_conflict.py с WeSpeaker и порогом 0,89.
- uv run ruff check и ruff format --check прошли успешно.
- Зачем:
- выводы о жизненном цикле и возможностях моделей должны читаться как единое исследование.
- Что:
- материал перестроен вокруг слоёв, платформ и уровней доказательства.
- объединены выводы по Intel, AMD, Apple и браузерным путям.
- подтверждённые возможности отделены от выводов и необходимых экспериментов.
- Проверка:
- относительные ссылки и структура Markdown проверены.
- git diff --cached --check выполнен успешно.
- Зачем:
- нужна фактическая опора для решений карты о диаризации на Intel-пути.
- Что:
- исследованы жизненные циклы ORT, OpenVINO, DirectML и Windows ML.
- сравнены пути AMD, Apple Silicon и браузерные EP для текущих моделей.
- зафиксированы wheel-матрицы, fallback и необходимые model-specific тесты.
- Проверка:
- git diff --cached --check.
- Зачем:
- навык wayfinder ожидает раздел про операции карты в документе трекера, а
в Gitea 1.27 нет подзадач, поэтому конвенции надо было зафиксировать явно.
- Что:
- описана принадлежность тикета карте через метку и ссылку в теле, поскольку
родительских связей в API нет.
- блокировки заведены на нативные зависимости Gitea, добавлены запросы фронтира.
- зафиксированы три особенности tea api: путь без ведущего слэша, обязательные
owner и repo в теле зависимости, нулевой код возврата при HTTP 404.
- Проверка:
- tea issues list --remote origin --labels wayfinder:map
- tea api --remote origin repos/ddmitry/local-transcriber/issues/14/dependencies
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- схема из бэклога приписывала спикера целому ASR-сегменту, и до замера
было неизвестно, насколько сильно это огрубляет результат.
- Что:
- добавлен разведочный замер sherpa-onnx на одной записи: 11,1x RTFx против
16,4x у ASR, свип порога кластеризации и доля загрязнённых сегментов.
- пункт бэклога переписан: движок описан как практически закрытый вопрос,
главной развилкой названа единица привязки спикера к тексту.
- зафиксировано, что 27% сегментов содержат не менее секунды чужой речи и на
них приходится больше половины времени транскрипта.
- Проверка:
- методика и условия замера воспроизводятся по разделам «Оборудование и
условия» и «Контрольная запись» в docs/benchmarks/2026-08-12-diarization-feasibility.md.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- документация обещала large-v3-turbo на NVIDIA, где он недоступен, и умалчивала, что модель по умолчанию без CUDA понимает только русскую речь.
- Что:
- large-v3-turbo перенесён из таблицы faster-whisper в раздел OpenVINO с измеренными размерами моделей.
- языковое ограничение авто-профиля и предупреждение CLI описаны в README, gpu.md и ADR-006.
- в backlog добавлен пункт про turbo для faster-whisper, в gpu.md снято расхождение по скорости openvino-cpu.
- Проверка:
- вычитка diff, проверка якорной ссылки на docs/gpu.md.
- Зачем:
- пользователям без NVIDIA нужен самый быстрый и читаемый CPU-профиль без дополнительных параметров.
- Что:
- auto-политика изменена на CUDA при наличии nvidia-smi, иначе ONNX GigaAM RNN-T int8.
- сохранён приоритет явных значений CLI и конфигурации для OpenVINO и FasterWhisper CPU.
- обновлены тесты, README, PRD, ADR, GPU-документация и вывод benchmark.
- Проверка:
- uv run pytest -q: 232 passed, 1 skipped.
- uv lock --check и git diff --cached --check.
- Зачем:
- требуется подтвердить сравнение OpenVINO и ONNX на втором CPU и повторно проверить дубли medium.
- Что:
- добавлены метрики четырёх профилей на Ryzen 7 8845H.
- зафиксированы четыре одинаковых прогона RSQM без повторов и результаты двух слепых ревью.
- описаны аргументы для будущего выбора backend по умолчанию.
- Проверка:
- git diff --cached --check.
- Зачем:
- нужна практическая оценка нового CPU-профиля на русских встречах.
- Что:
- зафиксированы скорость, WER, пунктуация, нагрузка и отзывчивость.
- добавлены две независимые оценки качества и рекомендации пользователям.
- Проверка:
- uv run pytest.
- реальные прогоны четырёх профилей на трёх записях.
Зачем:
- зафиксировать сравнение моделей на одном и том же массиве записей
- сохранить воспроизводимый набор файлов для будущих прогонов
Что:
- добавлены метрики и качественный вывод по Parakeet v3
- записаны точные имена, размеры и SHA-256 видео и эталонов
- обновлена рекомендация в README
Проверка:
- git diff --check
- Зачем:
- выбор CPU-модели должен опираться на несколько реальных записей, а не на единичный прогон.
- Что:
- добавлены скорость, WER и качественное сравнение пяти моделей на трёх встречах.
- обновлены рекомендации README и открытый вопрос ADR-006 для E2E RNN-T.
- Проверка:
- git diff --cached --check.
- Зачем:
- добавлена локальная транскрипция смешанной речи и русского текста с пунктуацией.
- Что:
- onnx-asr обновлён до 0.12 и зарегистрированы три модели GigaAM.
- выбор compute_type учитывает опубликованные квантизации и явность настройки.
- обновлены тесты, README и требования PRD.
- Проверка:
- uv run pytest -q: 223 passed, 1 skipped.
- выполнены smoke- и полные прогоны четырёх GigaAM-моделей.
- Зачем:
- смешанная русско-английская речь и отсутствие пунктуации у gigaam-v3-ctc
закрываются моделями из onnx-asr 0.12, но обновление заблокировано пином.
- Что:
- добавлена спека: три модели в каталог, Python 3.13 и ORT 1.28, верхние
границы мажорных версий, ловушки и границы ручной приёмки.
- в backlog добавлены ссылка на спеку из пункта про CPU-дефолт и новое
направление «профили намерения вместо выбора модели».
- Проверка:
- задача трекера #1 с порядком работ и критериями приёмки.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Зачем:
- инженерным навыкам нужна единая конфигурация трекера задач и доменных документов.
- Что:
- задокументированы Gitea workflow через tea и стандартные triage-метки.
- добавлены доменный словарь и правила работы с ADR, research и specs.
- Проверка:
- git diff --cached --check.
- tea --version: 0.15.1.
- Зачем:
- нужен проверяемый путь от обновления ASR-стека к выбору безопасного CPU-дефолта.
- Что:
- добавлено исследование актуальных движков и моделей с корректным именем файла.
- зафиксированы дефект OpenVINO, кандидаты GigaAM и матрица бенчмарка на Intel Core i5.
- Проверка:
- выполнена проверка git diff --cached --check.
- Зачем:
- внешнее сравнение с облачным Hypescribe показало: главный разрыв локальной транскрипции — не качество распознавания, а структура (спикеры 2/10 против 8/10); без диаризации MoM не собрать.
- Что:
- новый раздел «Структура транскрипта»: диаризация как опциональный пост-процессинг (sherpa-onnx vs pyannote, нужен ADR), ручка нарезки абзацев в formatter, словарь замен терминов как запасной план после бенчмарка RNN-T.
- зафиксировано вне ядра CLI: LLM-чистка и сопоставление имён спикеров.
- Проверка:
- docs-only, тесты не затронуты.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Зачем:
- в дереве с апреля лежал некоммиченный app.py (референсный Parakeet-сервер, не часть CLI) и служебный каталог .qwen/ — мусор в git status.
- Что:
- удалён app.py; его единственная ценная идея (чанкование длинных файлов по паузам через ffmpeg silencedetect) описана в docs/backlog.md с рабочими константами.
- .qwen/ добавлен в .gitignore (по аналогии с .codex).
- Проверка:
- git status — дерево чистое, untracked-файлов нет.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>