починены находки второго ревью: цикл закрытия задачи и три отсутствовавших слота
- task-pipeline и task-batch запрещали шаг, который сами же добавили: раздел границ и финальный доклад переписаны под снятую границу приёмки - «триаж сводит строки в одну» противоречило «не сливает» — деградация снова поразрядная во всех трёх местах - канон не требовал в CLAUDE.md имени основной ветки, testdata и запретов, а скелета CLAUDE.md не было вовсе — заведён - обратимость жила в двух домах, читатели ходили в пустой; единственный дом теперь CLAUDE.md - заведены слоты «Единые точки проекта» и «Триггеры профиля», куда charter'ы слали, а канон их не создавал - блок «Вопросы к проходам» стал частью задания прохода: за ним ходили двое из девяти - чек-лист синка и правило «замер + настройка» сведены к одному дому; plugin.json больше не про бриф
This commit is contained in:
@@ -77,11 +77,18 @@ kebab-case.
|
||||
### `architecture.md` — **обзор, не поведение**
|
||||
|
||||
Принципы; компоненты **со ссылками на capability**, а не с пересказом их
|
||||
требований; внешние границы и форматы чужих систем; окружение — где работает,
|
||||
что рядом, кто перезапускает; **внешние зависимости поимённо** и чем каждая
|
||||
требований; **единые точки проекта** — где генерируются идентификаторы и время,
|
||||
где единственный парсер входного формата, где маппинг доменной ошибки в код
|
||||
ответа, где общий путь приёма (это материал для вопроса «не появился ли второй
|
||||
способ»); внешние границы и форматы чужих систем; окружение — где работает, что
|
||||
рядом, кто перезапускает; **внешние зависимости поимённо** и чем каждая
|
||||
отказывает (не только «падает», но и «отвечает медленно», «молчит», «отдаёт
|
||||
мусор»); кто заметит отказ и когда; характер потока — непрерывный, по запросу,
|
||||
по расписанию; что обратимо, а что нет; деплой; открытые вопросы.
|
||||
по расписанию; деплой; открытые вопросы.
|
||||
|
||||
**Обратимости здесь нет** — её единственный дом `CLAUDE.md`: туда ходят пять
|
||||
проходов, и раздвоение адреса означало бы, что проект написал ответ, а ревью его
|
||||
не прочитало.
|
||||
|
||||
**Поведение системы сюда не пишется.** Его нормативный дом — `openspec/specs/`,
|
||||
куда `opsx:archive` вливает дельты; второй дом синхронизировать руками
|
||||
@@ -159,12 +166,21 @@ kebab-case.
|
||||
|
||||
Два раздела с разными сроками жизни.
|
||||
|
||||
**Настройка конвейера под проект:** типовые узлы (рода узлов и 3–5 проверяемых
|
||||
свойств к каждому); типовые ложноположительные — находки, которые здесь выглядят
|
||||
убедительно и всегда неверны; вопросы к проходам поимённо с провенансом;
|
||||
недоступно проверке — два подраздела, «не проверит ни один проход»
|
||||
(принципиальная граница, по факту промаха не пересматривается) и «перестали
|
||||
проверять сознательно» (пересматривается первым).
|
||||
**Настройка конвейера под проект**, пять подразделов с точными именами — по ним
|
||||
проходы находят свой кусок:
|
||||
|
||||
- **Типовые узлы** — рода узлов проекта и 3–5 проверяемых свойств к каждому;
|
||||
- **Типовые ложноположительные** — находки, которые здесь выглядят убедительно и
|
||||
всегда неверны, каждая со строкой «почему здесь это не дефект»;
|
||||
- **Вопросы к проходам** — поимённо, в форме `<имя прохода>: <вопрос>
|
||||
(<провенанс>)`;
|
||||
- **Триггеры профиля** — проектная конкретизация правила выбора профиля ревью:
|
||||
какие пути и контракты означают `deep`, что считается «поведением, видимым
|
||||
снаружи», при каком изменении запускается независимая реализация. Уточняет
|
||||
умолчания конвейера, а не отменяет их;
|
||||
- **Недоступно проверке** — два подраздела: «не проверит ни один проход»
|
||||
(принципиальная граница, по факту промаха не пересматривается) и «перестали
|
||||
проверять сознательно» (пересматривается первым).
|
||||
|
||||
**Журнал дефектов:** запись на каждый воспроизведённый дефект с пометкой
|
||||
**проскочил / пойман ревью**. Проскочившие — эвал-сет для калибровки конвейера,
|
||||
@@ -173,13 +189,24 @@ kebab-case.
|
||||
|
||||
### `CLAUDE.md`
|
||||
|
||||
Что это и стек; **инварианты с severity рядом с формулировкой** — по ним
|
||||
проходы присваивают `critical`, поэтому severity стоит здесь, а не выводится
|
||||
каждым проходом заново; команды; **семантика гейта** — чем краснеет безусловно и
|
||||
почему, где логи, что означает исход, чего в гейте намеренно нет, **кто и когда
|
||||
обязан гонять дорогое вне гейта**; что запускать запрещено, с путями; что
|
||||
считается необратимым; общий станок, врывающийся в замороженный спринт; ориентир
|
||||
по размеру спринта.
|
||||
Что это и стек; **инварианты с severity рядом с формулировкой** — по ним проходы
|
||||
присваивают `critical`, поэтому severity стоит здесь, а не выводится каждым
|
||||
проходом заново; команды; **семантика гейта** — чем краснеет безусловно и почему,
|
||||
где логи, что означает исход, чего в гейте намеренно нет, **кто и когда обязан
|
||||
гонять дорогое вне гейта**.
|
||||
|
||||
Плюс то, что нужно git-операциям и проходам и не выводится ниоткуда:
|
||||
|
||||
- **имя основной ветки** — от неё считается база диффа
|
||||
(`git merge-base HEAD <ветка>`), в неё вливает батч, от неё ветвятся задачи.
|
||||
Угадывание между `master` и `main` ломает интеграцию целиком;
|
||||
- **что запускать запрещено, с путями** — рабочая БД, боевой каталог данных,
|
||||
внешние сервисы. Запретом с путями, а не «будь осторожен»;
|
||||
- **где `testdata`** и что в них лежит; **куда писать временное**;
|
||||
- **что считается необратимым** — единственный дом: от обратимости зависит вся
|
||||
шкала ранжирования триажа и право проходов на `critical`;
|
||||
- **общий станок**, врывающийся в замороженный спринт; **ориентир по размеру
|
||||
спринта**.
|
||||
|
||||
### `openspec/config.yaml`
|
||||
|
||||
@@ -202,6 +229,9 @@ kebab-case.
|
||||
| измеренное число | `research/` |
|
||||
| настройка с числовым значением | `database.md` |
|
||||
| периметр и модель угроз | `security.md` |
|
||||
| что необратимо | `CLAUDE.md` — **не** `architecture.md` |
|
||||
| единые точки проекта | `architecture.md` |
|
||||
| имя основной ветки, `testdata`, временный каталог | `CLAUDE.md` |
|
||||
| что уже механизировано правилом | `conventions/README.md` |
|
||||
|
||||
## Пустое называется пустым
|
||||
|
||||
Reference in New Issue
Block a user