docs: раскладка переехала в .av-dev.toml, а расхождения документов сведены
- Перевод на канон 1 доделан: адреса служебного файла и имена скиллов переставлены в девяти местах прозы и кода, гейт зовёт три скрипта по новым путям, прежние docs/.docs.json и tasks/.tasks.json удалены. - Сверка двумя агентами нашла четырнадцать расхождений, тринадцать сведены строками: число прогонов ревью и преамбула журнала дефектов, счёт capability, маршруты README, дубли инварианта захвата и кодов прогона, протухшие указатели записок разведки, маркер долга на переехавшем абзаце. Срок жизни сессии нормирует спека access, database.md на неё ссылается. - Purpose спеки pipeline объявляет неописанным то, что в ней же и стоит; правка идёт изменением openspec, поэтому заведена задача pipeline-spec-purpose-drift.
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# 🧹 Свести Purpose спеки pipeline с её же требованиями
|
||||
|
||||
- **Тип:** chore
|
||||
- **Категория:** Очередь — Правка одного раздела спеки, но откладывать её значит держать нормативный документ противоречащим себе.
|
||||
- **Зачем:** Преамбула спеки объявляет сознательно неописанными пять требований, которые в ней же и стоят с 2026-08-12: читатель узнаёт границу нормы из раздела, который ей противоречит.
|
||||
|
||||
Нашла сверка документов 2026-08-13. `Purpose` спеки `pipeline` перечисляет как
|
||||
сознательно неописанные захват задачи и срок его протухания, число попыток,
|
||||
состояние «мертва» и паузу перед повтором. Ниже в той же спеке эти требования
|
||||
стоят: их дописало изменение `pocketbase-storage` 2026-08-12, а преамбулу не
|
||||
поправило.
|
||||
|
||||
Не переехала в спеку одна вещь — цепочка переходов
|
||||
`created` → `converted` → `transcribe` → `done` либо `failed`. Маркер долга в
|
||||
[architecture.md](../../docs/architecture.md) уже уточнён под это и называет
|
||||
неперехавшей именно цепочку, так что после правки `Purpose` два документа
|
||||
сойдутся.
|
||||
|
||||
Материал для замены — формулировка из отчёта сверки:
|
||||
|
||||
> Описаны: пустой прогон воркера, неделимость захвата и срок его протухания,
|
||||
> число попыток и состояние «мертва», условность записи результата по признаку
|
||||
> захвата, нарастающая пауза перед повтором. Сознательно не описаны: цепочка
|
||||
> переходов `created` → `converted` → `transcribe` → `done` либо `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](context-cancel-in-pipeline.md) уберёт из перечня
|
||||
неописанного отмену контекста, когда доедет, — здесь эта строка остаётся на
|
||||
месте.
|
||||
Reference in New Issue
Block a user