Files
transcriber/tasks/items/pipeline-spec-purpose-drift.md
T
av b76f2d7c7e docs: раскладка переехала в .av-dev.toml, а расхождения документов сведены
- Перевод на канон 1 доделан: адреса служебного файла и имена скиллов
  переставлены в девяти местах прозы и кода, гейт зовёт три скрипта по новым
  путям, прежние docs/.docs.json и tasks/.tasks.json удалены.
- Сверка двумя агентами нашла четырнадцать расхождений, тринадцать сведены
  строками: число прогонов ревью и преамбула журнала дефектов, счёт capability,
  маршруты README, дубли инварианта захвата и кодов прогона, протухшие указатели
  записок разведки, маркер долга на переехавшем абзаце. Срок жизни сессии
  нормирует спека access, database.md на неё ссылается.
- Purpose спеки pipeline объявляет неописанным то, что в ней же и стоит; правка
  идёт изменением openspec, поэтому заведена задача pipeline-spec-purpose-drift.
2026-08-13 12:36:36 +03:00

4.5 KiB
Raw Blame History

🧹 Свести Purpose спеки pipeline с её же требованиями

  • Тип: chore
  • Категория: Очередь — Правка одного раздела спеки, но откладывать её значит держать нормативный документ противоречащим себе.
  • Зачем: Преамбула спеки объявляет сознательно неописанными пять требований, которые в ней же и стоят с 2026-08-12: читатель узнаёт границу нормы из раздела, который ей противоречит.

Нашла сверка документов 2026-08-13. Purpose спеки pipeline перечисляет как сознательно неописанные захват задачи и срок его протухания, число попыток, состояние «мертва» и паузу перед повтором. Ниже в той же спеке эти требования стоят: их дописало изменение pocketbase-storage 2026-08-12, а преамбулу не поправило.

Не переехала в спеку одна вещь — цепочка переходов createdconvertedtranscribedone либо failed. Маркер долга в architecture.md уже уточнён под это и называет неперехавшей именно цепочку, так что после правки Purpose два документа сойдутся.

Материал для замены — формулировка из отчёта сверки:

Описаны: пустой прогон воркера, неделимость захвата и срок его протухания, число попыток и состояние «мертва», условность записи результата по признаку захвата, нарастающая пауза перед повтором. Сознательно не описаны: цепочка переходов createdconvertedtranscribedone либо failed, отмена контекста посреди шага, освобождение ресурсов внешних клиентов. Это не значит, что такого поведения нет: оно живёт в коде, а требования на него не написаны, потому что требование без проверки — предположение, а не норма. Первая задача, которая трогает любое из перечисленного, дописывает его сюда.

Затрагивает

  • раздел Purpose в openspec/specs/pipeline/spec.md — требований спеки правка не касается, они уже написаны;
  • маркер долга о поведении в docs/architecture.md — как парная сторона утверждения о том, что ещё не переехало.

Критерии приёмки

  • Purpose не называет неописанным ни одно требование, которое в спеке стоит. Оракул — построчная сверка перечня из Purpose с заголовками Requirement той же спеки: пересечения нет.
  • Спека остаётся годной для инструмента. Оракул — openspec validate --strict отрабатывает без отказа.
  • Маркер долга в docs/architecture.md и Purpose называют неперехавшим одно и то же. Оракул — чтение обоих мест подряд: перечни совпадают.

Рамки

Правится преамбула, а не требования: поведение сервиса задача не меняет и кода не трогает. Спека правится изменением openspec своим порядком, а не прямой правкой файла. Соседняя задача context-cancel-in-pipeline уберёт из перечня неописанного отмену контекста, когда доедет, — здесь эта строка остаётся на месте.