diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index aa43060..b467bf3 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -242,3 +242,48 @@ NB: эта таска сама уйдёт в следующий cleanup batch (2 --- + +## 🔵 [using-yt-tools-listen-test-trigger] — Behavioral smoke-test для расширения `using-yt-tools` под `yt-listen`. Без TDD per-se (это смок поверх готового), но включает explicit before-after evidence — что без скила агент не вызывает `yt-listen` на новых триггерах, а с обновлённым скилом — вызывает корректно. + +**Дизайн-контекст:** см. `concepts/yt-tools-audio` (target=`OpeItcLoc03/common`) — какие триггеры обязательны, какой output ожидаем. + +**TDD-mode (per `claude-skills` `follow tdd-criteria`):** для behavioral skill-теста applicable интерпретация — **write expectations first, then verify**. Тест-сценарии сформулировать ДО запуска агента, не подгонять под наблюдаемое поведение. + +**Acceptance (test scenarios):** + +1. **Trigger activation positive (минимум 4 фразы):** + - «послушай момент 2:30 в этом ролике » → агент вызывает `yt-listen URL --timestamps 2:30`. + - «какой BPM в » → `yt-listen URL` (без timestamp = bulk-mode hint или quick-default). + - «listen to fragment at 1:15 » → `yt-listen URL --timestamps 1:15`. + - «спектрограмма видео » → `yt-listen --timestamps` с хотя бы одним таймкодом (агент должен выбрать sensible default или спросить). + +2. **Trigger activation negative (3 близкие, но не свои):** + - «расшифруй видео » → `yt-transcript`, НЕ `yt-listen`. + - «покажи кадр на 1:23 » → `yt-frames`, НЕ `yt-listen`. + - «о чём этот ролик » → `yt-transcript` + summary, НЕ `yt-listen` (нет музыкального контекста). + +3. **What-NOT-to-do compliance:** + - User: «дай lyrics из <музыкальный URL>» → агент НЕ должен вызывать Whisper / `yt-transcribe-music`; должен объяснить что это отдельный pipeline (Demucs + Whisper), out of scope `yt-listen`. + +4. **E2E против реального URL** (короткий музыкальный клип, e.g. 1-минутный royalty-free track): + - `yt-listen URL --timestamps 0:30 --duration 10s` создаёт 3 артефакта в `./yt-cache//audio/`. + - `features_0030.md` содержит BPM, key, хотя бы одну строку chord progression, RMS, spectral centroid. + - `spectrum_0030.png` валиден (открывается, ~1024×384, mel-scale читаема). + +**Закрытие:** все 4 группы зелёные, findings — отдельные follow-up tasks через `tasks_create` если есть. + +**Status:** blocked +**Where I stopped:** (not started) +**Next action:** 1. Дождаться 🟢 у blocker-тасок (skill-update + listen-impl + pyproject-pin — без них тестировать нечего). +2. Прочитать spec из global wiki (`concepts/yt-tools-audio`). +3. **Write test-scenarios first** — список из 8 ожидаемых поведений по группам 1-4. Не модифицировать после запуска. +4. Чистая CC-сессия с обновлённым `using-yt-tools` скилом. +5. Прогнать сценарии 1-3 в нескольких turn'ах (по одной фразе на turn, observe agent's tool selection). +6. E2E (сценарий 4) — реальный musical URL, проверить артефакты глазами. +7. Findings → `mcp__projects-meta__tasks_create` в `claude-skills` slug-prefix `using-yt-tools-listen--fix`. +8. Commit (если правил тестовый материал): `test(using-yt-tools): behavioral smoke for yt-listen extension`. +**Blocker:** using-yt-tools-listen-skill-update, yt-listen-impl, yt-listen-pyproject-pin +**Branch:** n/a + + +---