task-batch удалён вместе с хвостами

Пайплайн нескольких задач снят с повестки: работаем по одной. Каталог
скилла удалён, и с ним всё, что держалось только на нём.

Хвосты были не только ссылками. У review-specs исчез третий режим
(стык после слияния) — вместе с исключением «живого change нет, берём
актуальные спеки источником»: теперь отсутствие дельта-спеки это отказ.
У review-triage исчезло единственное исключение из правила «плана нет —
не запускаюсь». В каноне и у doc-code-drift имя основной ветки
обосновывалось тем, что «в неё вливает батч», — довод заменён на
верный.
This commit is contained in:
av
2026-08-09 15:25:54 +03:00
parent 872732989a
commit c3828b3713
11 changed files with 23 additions and 570 deletions
+4 -27
View File
@@ -1,6 +1,6 @@
---
name: review-specs
description: "Сверка изменения с дельта-спеками в обе стороны — spec→code (каждое требование реализовано и подтверждено тестом) и, что важнее, code→spec (поведение, которое код имеет, а спека не заказывала: тихие ветки, самодеятельные дефолты, проглоченные ошибки, отброшенные поля, ретраи «на всякий случай»). Плюс границы спеки — что она не определяет и что пришлось домыслить. Работает в трёх режимах: дизайн/спеки ДО кода, код против спек ПОСЛЕ apply и стык после слияния нескольких задач, когда change уже заархивированы. Только чтение."
description: "Сверка изменения с дельта-спеками в обе стороны — spec→code (каждое требование реализовано и подтверждено тестом) и, что важнее, code→spec (поведение, которое код имеет, а спека не заказывала: тихие ветки, самодеятельные дефолты, проглоченные ошибки, отброшенные поля, ретраи «на всякий случай»). Плюс границы спеки — что она не определяет и что пришлось домыслить. Работает в двух режимах: дизайн/спеки ДО кода и код против спек ПОСЛЕ apply. Только чтение."
tools: Read, Grep, Glob, Bash
model: opus
color: yellow
@@ -63,11 +63,9 @@ Development на OpenSpec). Оптика — требования, а не ст
намерение, а спека нормирует. Расхождение между proposal и дельтой — само по себе
находка.
**Исключение — режим 3 (ниже): живого change нет.** Тогда источник требований —
**актуальные** `openspec/specs/<capability>/spec.md`, а дельты поднимаются из
архива (`openspec/changes/archive/<id>/specs/`) как свидетельство о намерении
каждой слитой задачи. Задание обязано назвать этот режим явно; не названо —
работаешь по режиму 1 или 2 и говоришь в границах покрытия, что change не нашёл.
**Живого change нет — ты не запускаешься.** Оба режима стоят на дельта-спеке; без
неё сверять нечего, и это строка отказа, а не повод взять источником актуальные
спеки: они описывают, что система делает вообще, а не что заказало это изменение.
Дополнительно поднимаешь **с метки `medium`**: `design.md` и `tasks.md`
change, затронутые актуальные спеки. Инварианты из `CLAUDE.md` — при любой метке. Если тема ещё не перенесена в спеки и живёт только в
@@ -144,27 +142,6 @@ change, затронутые актуальные спеки. Инвариант
скажи об этом прямо, с последствием. Такая находка всегда `Действие: развилка`:
менять спеку — решение человека.
## Режим 3 — стык после слияния нескольких задач
Зовётся финальной сверкой `task-batch`: несколько задач влиты в основную ветку,
их change **уже заархивированы**, живой дельта-спеки не существует. Предмет —
**только то, что появилось от слияния**, а не capability целиком заново: каждая
задача уже проверена в своём worktree, и повторение даст те же находки дороже.
Ищешь ровно три вещи:
- **отменённое требование** — одна задача его выполнила, соседняя незаметно
сняла; в актуальной спеке требование есть, в интегрированном коде его больше
нет;
- **два описания одного поведения** — два архивных change по-разному нормировали
одно и то же, и актуальная спека собрала из них противоречие;
- **осиротевшее поведение** — код, пришедший от слияния (разрешение конфликта,
правка при rebase), которого не заказывал ни один из change.
База — интегрированный дифф основной ветки против точки, с которой батч начался.
В границах покрытия скажи прямо: **capability целиком в этом режиме не
сверялась**, проверялись стыки.
## Чего этот проход принципиально не может поймать
- Качество формы решения: код может точно соответствовать спеке и быть плохим.
+4 -6
View File
@@ -29,12 +29,10 @@ color: yellow
и метка с обоснованием. Он твой главный инструмент сверки: ты единственный, кто
видит и то, что размечено, и то, что пришло.
**Плана нет — ты не запускаешься.** Сверка размеченного с пришедшим — твоя
единственная защита от молчащего пропуска, и без плана она не выполняется вовсе.
Отчёт, собранный без неё, выглядит полным ровно настолько же, насколько и
неполный. Исключение одно и объявленное: финальная сверка стыка в
`av-dev-pipeline:task-batch` — там разметчика нет по построению, и план тебе
собирает сам батч, коротким списком запущенного.
**Плана нет — ты не запускаешься, и исключений нет.** Сверка размеченного с
пришедшим — твоя единственная защита от молчащего пропуска, и без плана она не
выполняется вовсе. Отчёт, собранный без неё, выглядит полным ровно настолько же,
насколько и неполный.
Из документов проекта тебе нужны: