разбор находок doc-consistency: остатки модели типов и копии в ссылки
Первый прогон агента — по репозиторию, который его же и содержит. Два прохода, 17 находок, все подтверждены по файлам. Пять находок — остатки прежней модели типов в файлах, до которых я не дошёл двумя коммитами раньше. adopt.md держал имена секций роадмапа канона 2 («порядка», «темы») и «пустой goal законен только у идеи»; from-review.md и TODO.md — упразднённый [idea]; task-batch в другом плагине — «задачи-идеи». Правку модели я вёл от документов, которые менял, а не от тех, что на них ссылаются: grep по упразднённому слову дал бы все пять за минуту. Самая дорогая находка оказалась моей и свежей. Таблица типов в canon.md объявляла цель у fix запрещённой, а tasks/SKILL.md и task-fix.md — необязательной; код на стороне вторых. Копия разошлась с домом за один день, обе половины писал один проход. Поправлено не значение, а причина: canon.md дважды объявлял, что фиксирует только словарь типов, — значит колонкам «разделы» и «цель» в нём не место. Осталась таблица из двух колонок и ссылка на дом схемы. Перечень «чем держат проект» пересказывался втроём и разъехался: «метрики и логи» против «мониторинга», «проверки» есть в двух из трёх. При этом tasks/SKILL.md ссылался на дом рядом с собственным пересказом — ссылка не мешает копии разойтись, если копия всё равно стоит. Перечень остался в canon.md, два места ссылаются. README пересказывал раскладку канона блоком кода, и копия была уже неполна — не хватало путей, чьё отсутствие docs.py считает нарушением. Заменено ссылкой. Там же измеренное число из DECISIONS III заменено ссылкой на решение. REMAINING дублировал два отмеченных сделанными пункта TODO и держал счётчики, которые обязан двигать человек: «двенадцати тем и 16 коммитов» (стало 28 и 52), «три неизмеренных изменения» (стало больше). Счётчики отменены как класс, причина записана в шапку. Открытый вопрос про парный статус ADR переформулирован: судья появился, открыт остался охват. Три противоречия вне av-dev-pm: --roadmap-sections перечислен среди флагов init прозой того же файла, объявляющей, что его нет; review-ops берёт журнал docs/review.md и тут же объявляет историю инцидентов принципиально недоступной; «честный предел» конвейера отменял целиком документ docs/research/. Плюс битый якорь ссылки на раздел вычитки. Находка про Co-Authored-By снята как неверная: агент прочитал av-dev-git/skills/commit/SKILL.md как описание практики этого репозитория, а это продукт, уезжающий в чужие проекты. Устав агента не различает «документ про нас» и «документ про то, что мы производим» — остаток записан в REMAINING, в устав пока не дописан. DECISIONS тема 29 (ЧЧШШ–ЮЮЯЯ, следствия 109–113). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1978,3 +1978,66 @@ ADR, запискам разведки и сообщениям коммитов
|
||||
показывал закрывающие маркеры как `<!-- /дом -->`, а требовал
|
||||
`<!-- /дом: <id> -->`; нашлось это первой же попыткой ими воспользоваться.
|
||||
Пример в докстроке — тот же образец, что плейсхолдер в схеме.
|
||||
|
||||
## 29. Обкатка `doc-consistency` на самом dev-skills (2026-08-05)
|
||||
|
||||
Первый прогон агента — по репозиторию, который его же и содержит. Два прохода
|
||||
(av-dev-pm; пайплайн плюс верхний уровень), 17 находок, все подтверждены по
|
||||
файлам.
|
||||
|
||||
**ЧЧШШ. Агент нашёл ровно тот класс, ради которого заводился, и в свежей
|
||||
работе.** Пять находок — остатки прежней модели типов в файлах, которые я не
|
||||
дошёл поправить двумя коммитами раньше: `adopt.md` держал имена секций **канона
|
||||
2**, `from-review.md` и `TODO.md` — упразднённый `[idea]`, `task-batch` в другом
|
||||
плагине — «задачи-идеи». Правку модели я вёл от документов, которые менял, а не
|
||||
от документов, которые на них ссылаются, — и обратный обход не сделал ни разу.
|
||||
|
||||
**ЩЩЪЪ. Самая дорогая находка была моей и свежей.** Таблица типов в `canon.md`
|
||||
объявляла цель у `fix` запрещённой, а `tasks/SKILL.md` и `task-fix.md` —
|
||||
необязательной; код на стороне вторых. Копия разошлась с домом **за один
|
||||
день** — я написал обе половины в одном коммите. Это и есть цена второго дома в
|
||||
чистом виде: не «когда-нибудь разойдётся», а «разошлось прежде, чем высохли
|
||||
чернила».
|
||||
|
||||
Исход не «поправить значение», а **убрать причину**: `canon.md` дважды объявлял,
|
||||
что фиксирует только словарь типов, — значит колонкам «разделы» и «цель» в нём
|
||||
не место. Осталась таблица из двух колонок и ссылка на дом схемы.
|
||||
|
||||
**ЫЫЬЬ. Копии перечня «чем держат проект» разъехались втроём.** `canon.md`,
|
||||
`tasks/SKILL.md` и `task-goal.md` пересказывали его своими словами: «метрики и
|
||||
логи» против «мониторинга», «проверки» есть в двух из трёх. При этом
|
||||
`tasks/SKILL.md` **ссылался на дом рядом с собственным пересказом** — ссылка не
|
||||
мешает копии разойтись, если копия всё равно стоит.
|
||||
|
||||
**ЭЭЮЮ. Находка про коммиты снята как неверная, и это дефект самого агента.**
|
||||
Он прочитал `av-dev-git/skills/commit/SKILL.md` («без `Co-Authored-By`») как
|
||||
описание практики этого репозитория и предъявил 38 коммитов с трейлером. Но
|
||||
dev-skills — **маркетплейс плагинов**: скилл коммита здесь продукт, уезжающий в
|
||||
чужие проекты, а не правило, которому подчиняется сам репозиторий. Устав агента
|
||||
не различает «документ описывает этот репозиторий» и «документ описывает то, что
|
||||
репозиторий производит».
|
||||
|
||||
**ЮЮЯЯ. Счётчики в документах отменены как класс.** `REMAINING.md` держал «после
|
||||
разбора двенадцати тем и 16 коммитов» (стало 28 и 52) и «три неизмеренных
|
||||
изменения подряд» (стало больше). Оба числа обязан двигать человек, и оба
|
||||
отстали молча. Заменены на формулировки, которые не надо поддерживать, и в шапку
|
||||
записана причина.
|
||||
|
||||
### Что из этого следует
|
||||
|
||||
109. **Правка модели идёт по обратным ссылкам, а не по изменённым файлам.**
|
||||
Меняешь дом — обойди тех, кто на него ссылается: `grep` по упразднённому
|
||||
слову дал бы все пять остатков за минуту. Это дешевле любого агента и
|
||||
должно идти до него.
|
||||
110. **Ссылка на дом не отменяет копию, стоящую рядом.** Проверять надо не
|
||||
«есть ли ссылка», а «есть ли пересказ»; `tasks/SKILL.md` имел и то и другое.
|
||||
111. **Копия расходится с домом в пределах одного коммита.** Прежняя оценка
|
||||
(«разойдётся на первой правке») занижена: расхождение возникает при
|
||||
написании, если оба места пишет один проход.
|
||||
112. **Агент, читающий репозиторий-продукт, обязан различать «про нас» и «про
|
||||
то, что мы производим».** Иначе он предъявляет продукту практику его
|
||||
потребителя. Устав `doc-consistency` этого различения не содержит — остаток
|
||||
записан в REMAINING.
|
||||
113. **Число в документе — обязанность, которую никто не берёт.** Счётчик тем,
|
||||
коммитов, правок протухает молча; формулировка без числа дешевле его
|
||||
сопровождения.
|
||||
|
||||
@@ -72,29 +72,17 @@ flowchart TB
|
||||
## Канон документов проекта
|
||||
|
||||
Все проекты приводятся к одной раскладке — так проще ориентироваться, когда
|
||||
проектов много, и рядом OpenSpec тоже держит строгую структуру. Определение —
|
||||
[av-dev-pm/skills/canon/references/canon.md](av-dev-pm/skills/canon/references/canon.md).
|
||||
проектов много, и рядом OpenSpec тоже держит строгую структуру. `CLAUDE.md` плюс
|
||||
`docs/` (паспорт, архитектура, база, безопасность, конвенции, разведка, ADR,
|
||||
ревью, задачи) и `openspec/` — **раскладка целиком, роли документов и правило
|
||||
единственного дома живут одним домом**:
|
||||
[canon.md](av-dev-pm/skills/canon/references/canon.md). Здесь она не
|
||||
пересказывается: копия перечня путей уже расходилась с домом, и как раз в
|
||||
обязательных — в ней не хватало путей, чьё отсутствие `docs.py check` считает
|
||||
нарушением.
|
||||
|
||||
```
|
||||
CLAUDE.md инварианты с severity, команды, семантика гейта
|
||||
docs/
|
||||
.pm.json версия канона и пути для проверок
|
||||
passport.md зачем и для кого; чем НЕ является
|
||||
architecture.md как сложено — обзор; окружение и эксплуатация
|
||||
database.md схема хранилища; настройки с числовым значением
|
||||
security.md периметр; недоверенный вход; что вне модели
|
||||
conventions/ как пишем код + что уже механизировано
|
||||
research/ что показала реальность; числа с провенансом
|
||||
adr/ почему — промоут поверх архивных design.md
|
||||
review.md настройка конвейера + журнал дефектов
|
||||
tasks/ роадмап (что умеет), беклог, спринт, отклонённое
|
||||
openspec/
|
||||
specs/<capability>/spec.md что система делает — нормативно
|
||||
changes/archive/ архив изменений с design.md
|
||||
```
|
||||
|
||||
**Отдельного файла-брифа для ревью нет.** Проходы читают эти документы напрямую;
|
||||
карта «что нужно проходу → где лежит» —
|
||||
**Отдельного файла-брифа для ревью нет.** Проходы читают документы канона
|
||||
напрямую; карта «что нужно проходу → где лежит» —
|
||||
[project-facts.md](av-dev-pipeline/skills/review-pipeline/references/project-facts.md).
|
||||
|
||||
Прийти в старый проект и перевести его на канон — `/av-dev-pm:canon`. Канон
|
||||
@@ -277,7 +265,8 @@ uv run python scripts/frontmatter.py # 0 в порядке, 1 расхожд
|
||||
- **двоеточие с пробелом в описании без кавычек.** Для YAML `: ` внутри
|
||||
простого скаляра начинает вложенное отображение, так что «конвейер ревью: гейт,
|
||||
сверка…» — это не текст с двоеточием, а синтаксическая ошибка. Так было
|
||||
написано три описания из четырнадцати, и читались они правильно;
|
||||
написано часть описаний плагинов, и читались они правильно — замер и разбор
|
||||
в [DECISIONS.md](DECISIONS.md), решение III;
|
||||
- **`name`, разошедшееся с именем каталога скилла или файла charter'а.** Вызов
|
||||
разрешается по каталогу, а сообщение о промахе говорит «нет такого скилла»,
|
||||
а не «имя не то»;
|
||||
|
||||
+26
-19
@@ -1,7 +1,8 @@
|
||||
# Остатки, открытые вопросы и принятые пределы
|
||||
|
||||
Состояние на 2026-08-03, после разбора двенадцати тем и 16 коммитов реализации
|
||||
(`ad1779b` … `885981c`).
|
||||
Состояние пересобирается по ходу работы; счётчика тем и коммитов здесь нет
|
||||
намеренно — он протухает молча, а двигать его некому. Что и когда решено —
|
||||
[DECISIONS.md](DECISIONS.md), записи датированы.
|
||||
|
||||
План работ — [TODO.md](TODO.md). Решения с причинами — [DECISIONS.md](DECISIONS.md).
|
||||
Здесь то, что **не** является работой из плана: незакрытые риски, честно принятые
|
||||
@@ -9,16 +10,16 @@
|
||||
|
||||
## Главный незакрытый риск
|
||||
|
||||
**Калибровка не сделана, а charter'ы переписаны трижды.**
|
||||
**Калибровка не сделана, а уставы проходов с тех пор переписывались не раз.**
|
||||
|
||||
Первый раз девять charter'ов правили при выносе в плагин: предмет проверки
|
||||
заменили ссылкой на раздел брифа. `references/calibration.md` требует при такой
|
||||
правке замерить, помогла ли она, — **замера не было**. Второй раз их переписали
|
||||
коммитом `9cef452`: ссылка на раздел брифа заменена путём документа канона.
|
||||
Третий — коммитами `0eab075` и следующим, по находкам ревью: `adversary`, `ops`,
|
||||
`reimpl`, `rubric` и `triage` правились ещё раз.
|
||||
Правки шли волнами: вынос в плагин (предмет проверки заменён ссылкой на раздел
|
||||
брифа), переход на пути документов канона, две правки по находкам ревью, граф
|
||||
порядка, ступень `wide`, пересмотр триггеров ступени.
|
||||
`references/calibration.md` требует при каждой такой правке замерить, помогла ли
|
||||
она, — **ни одного замера не было**. Числа правок здесь нет намеренно: счётчик
|
||||
пришлось бы двигать вручную, и он уже однажды отстал.
|
||||
|
||||
**Три неизмеренных изменения подряд** в том самом месте, где присваивается
|
||||
**Неизмеренные изменения копятся** в том самом месте, где присваивается
|
||||
severity. Пробы готовы и синтетических не нужно — четыре реальные находки
|
||||
прошедшей сессии healthlog:
|
||||
|
||||
@@ -35,17 +36,15 @@ severity. Пробы готовы и синтетических не нужно
|
||||
но работает ли обязанность, не проверено. Оркестратор реагирует на severity,
|
||||
поэтому цена — не «не найдём», а **«найдём и не починим»**.
|
||||
|
||||
Замер стоит перед переездом jellybit и блокирует его (решение 39).
|
||||
Сама работа — [TODO.md](TODO.md), раздел 3; здесь только цена: замер стоит
|
||||
перед переездом jellybit и блокирует его (решение 39), а ожидаемый исход уже
|
||||
назван выше.
|
||||
|
||||
## Что ещё не сделано
|
||||
|
||||
Список работ — в [TODO.md](TODO.md). Здесь только то, что стоит держать в голове
|
||||
отдельно:
|
||||
|
||||
- **Плагины отправлены, но ни к одному проекту не подключены.** 17 коммитов
|
||||
ушли на origin, клон маркетплейса обновлён до `88c5d97` и видит `av-dev-pm`
|
||||
и `av-dev-pipeline` — то есть подключать теперь есть что. Первым делом это
|
||||
делает healthlog, по разделу 2 плана.
|
||||
- **Ни один скилл не прогонялся на живом проекте.** `docs.py` прогнан на
|
||||
healthlog и jellybit в режиме `check` и находит осмысленный дрейф; `init`,
|
||||
`canon adopt`, `canon upgrade` и скилл `docs` не исполнялись ни разу.
|
||||
@@ -57,14 +56,22 @@ severity. Пробы готовы и синтетических не нужно
|
||||
|
||||
## Открытые вопросы
|
||||
|
||||
**`doc-consistency` не различает «про нас» и «про то, что мы производим».**
|
||||
Первый прогон на самом dev-skills предъявил репозиторию правило из
|
||||
`av-dev-git/skills/commit/SKILL.md` — а это продукт, уезжающий в чужие проекты,
|
||||
а не правило, которому подчиняется маркетплейс. На проекте под каноном такой
|
||||
путаницы нет (там документы описывают сам проект), поэтому в устав это пока не
|
||||
дописано: сперва посмотреть, встретится ли класс ещё раз.
|
||||
|
||||
**Как проверять, что канон не разошёлся с проектами после `upgrade`.** `canon
|
||||
check` сверяет версию, но не то, что миграционные записи journal'а применены
|
||||
верно. Проект может нести `"canon": 2` и не иметь того, что версия 2 требовала.
|
||||
|
||||
**Форма ADR при пересмотре решения.** Правило «старая запись получает статус
|
||||
`заменено на`» требует, чтобы кто-то заметил, что новое решение отменяет старое.
|
||||
Механической проверки нет, а принуждённое отрицание на шаге синка спрашивает про
|
||||
`adr/` вообще, а не «не отменяет ли это что-то из существующего».
|
||||
**Форма ADR при пересмотре решения.** Парный статус («старая запись получает
|
||||
`заменено на`») судит агент `doc-consistency` — правило 6 его устава. Открытым
|
||||
остаётся не это, а охват: агент зовётся на синке по документам, которых синк
|
||||
касался, и пересмотр, отменяющий решение из документа, к которому не
|
||||
притрагивались, он не увидит. Механической проверки по-прежнему нет.
|
||||
|
||||
**Что делать с `av-dev-backlog` после перевода jellybit.** Помечен устаревшим и
|
||||
переписан так, чтобы не ловить триггер. Удалять его из маркетплейса или оставить
|
||||
|
||||
@@ -151,8 +151,8 @@
|
||||
- [ ] `docs/specs/architecture.md` → `docs/architecture.md`, `database.md` →
|
||||
`docs/database.md`, `jellyfin-layout.md` → `docs/research/`
|
||||
- [ ] `docs/review/journal.md` → `docs/review.md`
|
||||
- [ ] `drafts/` растворить: roadmap → `ROADMAP.md`, conventions-backlog → задачи
|
||||
`[idea]`, logical-title-model → ADR (H)
|
||||
- [ ] `drafts/` растворить: roadmap → `ROADMAP.md`, conventions-backlog → записи
|
||||
`research` (сырьё: тип есть, «Вопрос» пуст), logical-title-model → ADR (H)
|
||||
- [ ] `docs/backlog/` → `docs/tasks/`
|
||||
- [ ] удалить проектные копии скиллов и агентов (4 из REMAINING)
|
||||
- [ ] `av-dev-backlog` удалить из маркетплейса
|
||||
|
||||
@@ -145,7 +145,8 @@ color: green
|
||||
## Чего этот проход принципиально не может поймать
|
||||
|
||||
- Реальный профиль нагрузки и реальные размеры данных на проде.
|
||||
- Историю инцидентов: что уже ломалось и по какой причине.
|
||||
- Историю инцидентов **сверх записанного в `docs/review.md`**: инцидент, не
|
||||
попавший в журнал, для тебя не существует.
|
||||
- Поведение внешних систем в их конкретных версиях и настройках.
|
||||
- Дефекты, проявляющиеся только на настоящих данных владельца.
|
||||
|
||||
|
||||
@@ -699,7 +699,8 @@ flowchart TD
|
||||
Независимо от проекта недоступно:
|
||||
|
||||
- поведение внешних систем в их будущих версиях;
|
||||
- реальный профиль нагрузки и то, что на самом деле лежит в данных;
|
||||
- реальный профиль нагрузки; и то, что на самом деле лежит в данных, — **сверх
|
||||
того, что снято с провенансом в `docs/research/`**;
|
||||
- завязка внешних потребителей на текущую форму ответа;
|
||||
- суждение «этой функциональности не должно существовать».
|
||||
|
||||
|
||||
@@ -88,8 +88,9 @@ description: Проводит несколько задач разом — пл
|
||||
### 1. Прочитать набор
|
||||
|
||||
Набор задан списком (слаги, файлы, описания) — прочитай файл каждой задачи и
|
||||
связанные спеки и черновики. Задачи-идеи включаются, но помни: сабагент проведёт
|
||||
их сперва через `opsx:explore`, это тяжелее и чаще упирается в вопрос.
|
||||
связанные спеки и черновики. Сырьё (в терминах `av-dev-pm` — запись типа
|
||||
`research` с пустым разделом «Вопрос») включается, но помни: сабагент проведёт
|
||||
его сперва через `opsx:explore`, это тяжелее и чаще упирается в вопрос.
|
||||
|
||||
### 2. Спланировать порядок и пересечения (автономно)
|
||||
|
||||
|
||||
@@ -265,13 +265,21 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
поле меты `Тип` первой строкой; эмодзи в заголовке от него производна. Словарь
|
||||
закрыт:
|
||||
|
||||
| Тип | Что это | Обязательные разделы | Цель |
|
||||
| --- | --- | --- | --- |
|
||||
| 🎯 `goal` | возможность приложения | `Завершение` | — |
|
||||
| ✨ `feature` | снаружи появляется то, чего не было | `Затрагивает`, `Критерии приёмки` | обязательна |
|
||||
| 🐞 `fix` | поведение расходится с заявленным | `Воспроизведение`, `Затрагивает`, `Критерии приёмки` | нет |
|
||||
| 🧹 `chore` | обслуживание, поведение не меняется | `Затрагивает`, `Критерии приёмки` | нет |
|
||||
| 🔬 `research` | исход — знание, а не изменение | `Вопрос`, `Куда ляжет ответ` | нет |
|
||||
| Тип | Что это |
|
||||
| --- | --- |
|
||||
| 🎯 `goal` | возможность приложения |
|
||||
| ✨ `feature` | снаружи появляется то, чего не было |
|
||||
| 🐞 `fix` | поведение расходится с заявленным |
|
||||
| 🧹 `chore` | обслуживание, поведение не меняется |
|
||||
| 🔬 `research` | исход — знание, а не изменение |
|
||||
|
||||
**Схемы записи здесь нет намеренно.** Какие разделы тип требует, нужна ли ему
|
||||
цель и берётся ли он в спринт — скилл `tasks`: сводка в его
|
||||
[SKILL.md](../../tasks/SKILL.md), раздел «Тип записи», подробно — по файлу на
|
||||
тип в `tasks/references/task-<тип>.md`. Канон фиксирует **словарь**, потому что
|
||||
от него зависит, читается ли проект как продукт; схема — механика ведения задач,
|
||||
и второй её экземпляр разошёлся бы с первым (он и разошёлся: канон успел
|
||||
объявить цель у `fix` запрещённой, хотя она там необязательна).
|
||||
|
||||
Схема требуется **к взятию в спринт**, а не к заведению: беклог пополняется чаще,
|
||||
чем разбирается, и требование на входе выгоняло бы в заметки то, что должно
|
||||
@@ -282,9 +290,7 @@ kebab-case.** Причина не эстетическая: имя файла с
|
||||
род работы, и называется оно **`research` без раздела «Вопрос»**. Такая запись в
|
||||
спринт не берётся и лежит в конце своей категории.
|
||||
|
||||
Раскладку, форму записи и алгоритм работы над каждым типом держит скилл `tasks`
|
||||
(`references/task-<тип>.md`); канон фиксирует только словарь типов и то, от чего
|
||||
зависит, читается ли проект как продукт.
|
||||
Раскладку, форму записи и алгоритм работы над каждым типом держит скилл `tasks`.
|
||||
|
||||
### `CLAUDE.md`
|
||||
|
||||
|
||||
@@ -193,9 +193,9 @@ stateDiagram-v2
|
||||
только, чтобы формулировка отвечала на «что приложение делает», а не на «какую
|
||||
часть кода мы трогаем».
|
||||
|
||||
**Что целью не является — работа, которой держат проект.** Сборка, проверки,
|
||||
сам этот скилл, а также выкладка, мониторинг и дежурство: на вопрос «что
|
||||
приложение будет уметь» они не отвечают. Им отведена отдельная секция роадмапа,
|
||||
**Что целью не является — работа, которой держат проект.** Состав перечислен
|
||||
[в каноне](../canon/references/canon.md), раздел «Сопровождение и эксплуатация»;
|
||||
на вопрос «что приложение будет уметь» ничто из него не отвечает. Им отведена отдельная секция роадмапа,
|
||||
чтобы они были видны в том же экране и при этом не читались как возможности
|
||||
продукта.
|
||||
|
||||
@@ -205,12 +205,12 @@ stateDiagram-v2
|
||||
наблюдаем мы. Одна и та же наблюдаемость попадает в разные секции, и это верно —
|
||||
секции отвечают на разные вопросы.
|
||||
|
||||
**Сопровождение и эксплуатация — целое и часть**, а не синонимы: сопровождение
|
||||
это всё, чем держат проект (инструмент, процесс, выкладка, метрики и логи,
|
||||
инфраструктура, дежурство), эксплуатация — работа системы на проде. Та же тема
|
||||
живёт ещё в двух местах канона — разделе «Эксплуатация» в `architecture.md` и
|
||||
эксплуатационном проходе ревью, — и словарь у всех трёх общий:
|
||||
**Сопровождение и эксплуатация — целое и часть**, а не синонимы, и та же тема
|
||||
живёт ещё в двух местах канона: разделе «Эксплуатация» в `architecture.md` и
|
||||
эксплуатационном проходе ревью. Словарь у всех трёх общий и живёт одним домом —
|
||||
[canon.md](../canon/references/canon.md), раздел «Сопровождение и эксплуатация».
|
||||
Пересказывать его здесь нельзя: три перечня «чем держат проект» уже разъезжались
|
||||
на «метриках и логах» против «мониторинга».
|
||||
|
||||
Секция выбирается так: очередь значима и обоснована прозой — `Запланировано`;
|
||||
тянется долго и очереди не имеет — `Направления`; не про приложение, а про то,
|
||||
@@ -315,7 +315,7 @@ stateDiagram-v2
|
||||
здоровья, не замечанием на файл: проверка эвристическая (первое слово на
|
||||
`-ть`/`-ти`/`-чь`), а беклог, заведённый до правила, не переоформляют «заодно».
|
||||
Годность формулировки — не машине: её смотрит
|
||||
[агент вычитки](#вычитка-формулировок).
|
||||
[агент вычитки](#вычитка-два-прохода-а-не-один).
|
||||
|
||||
**Функции и границы, а не намерения.** Задача называет, что система начнёт
|
||||
делать, и какие границы это трогает: эндпоинт или команду, таблицу и миграцию,
|
||||
@@ -370,7 +370,7 @@ python3 $tk close S --dir D --reason R # в REJECTED.md + удалить (
|
||||
python3 $tk close S --dir D --implemented # просто удалить (реализована и закоммичена)
|
||||
python3 $tk reopen S --dir D --reason R # вернуть закрытую: приёмка не сошлась
|
||||
python3 $tk sprint start --goal S --dir D | take S… | drop S… --reason R | close [--dissolve --reason R]
|
||||
python3 $tk init --dir D [--sections …] [--roadmap-sections …] [--items …] [--backlog …] …
|
||||
python3 $tk init --dir D [--sections …] [--items …] [--backlog …] …
|
||||
python3 $tk adopt scan --from … | apply --plan … # разовая адаптация, references/adopt.md
|
||||
```
|
||||
|
||||
|
||||
@@ -53,8 +53,9 @@ python3 $tk adopt apply --plan tasks-adopt-plan.json \
|
||||
- **английские слаги.** Перевести `taj-brejk-pri-ravnoj-polnote` в
|
||||
`tie-break-equal-completeness` может только тот, кто понимает смысл. `scan`
|
||||
честно говорит: проверить надо **все** слаги, признаки транслита — эвристика;
|
||||
- **цели.** Шаги роадмапа — готовые цели из **«порядка»** (очередь и обоснование у
|
||||
них уже есть); тематические скопления задач — **«темы»** («прочность слияния»,
|
||||
- **цели.** Шаги роадмапа — готовые цели в **`Запланировано`** (очередь и
|
||||
обоснование у них уже есть); тематические скопления задач — цели в
|
||||
**`Направления`** («прочность слияния»,
|
||||
«журнал и пересборка»). Предлагаешь ты, назначает человек;
|
||||
- **что вообще не задача.** Обоснование порядка шагов, абзац прозой, заголовок
|
||||
раздела — это не пункты беклога, и они уходят в «не разложилось» с причиной.
|
||||
@@ -70,7 +71,8 @@ python3 $tk adopt apply --plan tasks-adopt-plan.json \
|
||||
прохода дадут два несогласованных состояния.
|
||||
3. **Заполни карту**: `slug` (английский), `section`, `goal` у каждой записи;
|
||||
список `goals` — из шагов роадмапа и из тем. Закрытый шаг целью не
|
||||
заводится. Пустой `goal` — законный исход только у идеи.
|
||||
заводится. Пустой `goal` законен у `fix`, `chore` и `research` — они служат
|
||||
работоспособности, а не направлению; у `feature` цель обязательна.
|
||||
4. **Покажи человеку карту** через `AskUserQuestion`, ≤3 вопроса за итерацию,
|
||||
рекомендация первым вариантом. Показывается: сколько записей, предлагаемые
|
||||
цели (порядок и темы) с обоснованием, спорные отнесения, список «не
|
||||
|
||||
@@ -86,7 +86,8 @@
|
||||
- **находка, ломающая уже идущий спринт**, — не интейк вовсе: см. правило
|
||||
вторжения в скилле `session`. В беклог она падает, только если врываться не
|
||||
положено;
|
||||
- **низкая уверенность или нет свидетельства** → идея;
|
||||
- **низкая уверенность или нет свидетельства** → сырьё (`research` с пустым
|
||||
разделом «Вопрос»);
|
||||
- **мелочь** → строка в пакетный файл;
|
||||
- **уже починено / развилка решена сейчас** → ничего.
|
||||
|
||||
@@ -108,7 +109,7 @@
|
||||
|
||||
- Источник (какое ревью/аудит, сколько находок на входе).
|
||||
- Свёрнуто в задачи: N кластеров из M находок, со слагами, целями и тегом партии.
|
||||
- Что не заведено и почему: починено инлайн, уже заведено, ушло в идеи, в
|
||||
- Что не заведено и почему: починено инлайн, уже заведено, стало сырьём, ушло в
|
||||
`REJECTED.md`.
|
||||
- Поимённая сверка: находок на входе N, исход есть у N.
|
||||
- `tasks.py check`.
|
||||
|
||||
@@ -36,10 +36,12 @@
|
||||
|
||||
## Алгоритм
|
||||
|
||||
1. **Проверить, что это возможность, а не работа.** Сборка, проверки, выкладка,
|
||||
мониторинг, дежурство на вопрос «что приложение будет уметь» не отвечают. Им
|
||||
отведена секция `Сопровождение` — там они видны в том же экране и не читаются
|
||||
как обещание продукта. Граница проходит по тому, **кто наблюдает**:
|
||||
1. **Проверить, что это возможность, а не работа.** Работа, которой держат
|
||||
проект, на вопрос «что приложение будет уметь» не отвечает; состав перечислен
|
||||
[в каноне](../../canon/references/canon.md), раздел «Сопровождение и
|
||||
эксплуатация». Ей отведена секция `Сопровождение` — там она видна в том же
|
||||
экране и не читается как обещание продукта. Граница проходит по тому,
|
||||
**кто наблюдает**:
|
||||
«приложение сообщает о своём состоянии» — возможность, «дежурный видит
|
||||
состояние на одном экране» — сопровождение.
|
||||
2. **Выбрать секцию.** Очередь значима и обоснована прозой — `Запланировано`;
|
||||
|
||||
Reference in New Issue
Block a user