Files
dev-skills/decisions/README.md
T
av e78a4311a7 журнал решений: тема 69 — счёт корпуса в прозе не пишется
Р253–Р257 и С241–С243: почему число, называющее размер корпуса, расходится
молча; какие два способа сослаться не стареют; почему число-заголовок к
перечню и замер с провенансом правилом не задеты; почему дом правила —
язык проектных текстов, а не канон.

Указатель журнала перестал перечислять занятые номера: диапазон устаревал
на каждой теме и требовал правки в файле, которого тема не касается.
2026-08-13 19:30:13 +03:00

124 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Решения по устройству процесса
Журнал согласований: что решено, почему и что из этого следует. Пишется по ходу
разбора тем, **одна тема — один файл**; этот файл — только указатель.
Три сквозные нумерации, и они не пересекаются:
- **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже.
- **Р** — решение: что согласовано и почему. По темам в порядке журнала.
- **С** — следствие: что из решения вытекает.
Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним
числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения
под заголовком «Решено», поздние ведут их прозой.
## Требования, зафиксированные по ходу
Не решения — вход, который обязан быть удовлетворён и разбирается в названной
теме.
**Т1. Адаптация и проверка проекта под канон — обязательный скилл.** Нужно уметь
прийти в **любой** старый проект и перевести его на текущие рельсы. Канон при
этом сам будет меняться, поэтому уже приведённые проекты тоже должны повышаться
до новых версий. *Разбирается в [теме 5](05-project-start-lifecycle.md) (старт и
жизненный цикл проекта).*
Следствия, которые из этого уже видны:
- **У канона обязана быть версия, а у проекта — отметка, под какую он
приведён.** Иначе «соответствует канону» не имеет определённого ответа:
сравнение идёт с тем, что модель помнит сейчас, а это и есть дрейф.
- **Журнал изменений канона — как миграции.** Каждое повышение версии несёт
запись «что добавилось, что переехало, что удалено, что сделать проекту». Без
него адаптация переизобретается на каждом проекте.
- **Отметка версии машиночитаема.** `.docs.json` отвергнут как *указатель
путей* (решение [Р6](02-project-doc-canon.md)), но отметка версии — другое:
её читает скрипт, и разбирать прозу `CLAUDE.md` для этого не нужно.
Прецедент — `.tasks.json`.
- **Операций три:** `check` (соответствие текущему канону), `adopt` (перевод
чужой раскладки), `upgrade` (повышение с версии N до M по журналу). Первая и
третья — одно сравнение с разными исходами.
- **Механизируемое и суждение не смешивать.** Скрипт проверяет пути, лишние
файлы, битые ссылки, версию. Агент судит о смысловых дублях (`docs/specs/
recognition.md` против capability `recognition`) и об оставшемся поведении в
`architecture.md`. Скрипт, отчитавшийся «канон соблюдён» на проекте с тремя
лишними файлами, хуже отсутствующего.
- **Границы плагинов:** `docs/tasks/` — часть канона документов, но владеет им
`av-dev-tasks` со своим `tasks.py adopt`. Два плагина сходятся на одном
каталоге. *[Тема 7](07-skills-layout-scripts.md).*
## Темы
| # | Тема | Дата |
|---|------|------|
| 1 | [Статус OpenSpec](01-openspec-status.md) | 2026-08-03 |
| 2 | [Канон документов проекта](02-project-doc-canon.md) | 2026-08-03 |
| 3 | [Брифа ревью нет — бриф это и есть канон](03-review-brief-is-canon.md) | 2026-08-03 |
| 4 | [Границы плагинов](04-plugin-boundaries.md) | 2026-08-03 |
| 5 | [Старт проекта и жизненный цикл под каноном](05-project-start-lifecycle.md) | 2026-08-03 |
| 6 | [Поддержание документов по ходу разработки](06-docs-upkeep.md) | 2026-08-03 |
| 7 | [Раскладка скиллов и доставка скриптов](07-skills-layout-scripts.md) | 2026-08-03 |
| 8 | [Порядок выката](08-rollout-order.md) | 2026-08-03 |
| 9 | [Линтеры скриптов](09-script-linters.md) | 2026-08-03 |
| 10 | [Ревью готовых плагинов двумя проходами](10-two-pass-plugin-review.md) | 2026-08-03 |
| 11 | [Зависимости между плагинами](11-plugin-dependencies.md) | 2026-08-03 |
| 12 | [Механическая проверка копий](12-mechanical-copy-check.md) | 2026-08-03 |
| 13 | [Секции `PLAN.md` переименованы](13-plan-sections-renamed.md) | 2026-08-03 |
| 14 | [Умолчания режимов прогона перевёрнуты](14-run-mode-defaults-flipped.md) | 2026-08-03 |
| 15 | [Порядок проходов ревью — граф зависимостей](15-review-pass-order-graph.md) | 2026-08-03 |
| 16 | [Каталог вместо файла в `docs/` — отложено до переезда healthlog](16-directory-instead-of-file.md) | 2026-08-04 |
| 17 | [Разбор заметок: ступень ревью, род работы, роадмап](17-notes-tier-work-kind-roadmap.md) | 2026-08-04 |
| 18 | [Ступень поднимает проход, а не риск](18-tier-raises-pass-not-risk.md) | 2026-08-04 |
| 19 | [Роадмап — состояние проекта, а не очередь работ](19-roadmap-is-state-not-queue.md) | 2026-08-04 |
| 20 | [Форма записи: заголовок, секции, вычитка](20-record-form-heading-sections.md) | 2026-08-04 |
| 21 | [Язык проектных текстов — информационный стиль](21-project-text-language.md) | 2026-08-04 |
| 22 | [Обкатка агента вычитки: имя, охват и «так везде»](22-wording-agent-trial.md) | 2026-08-04 |
| 23 | [Вычитка разделена на два прохода](23-wording-split-two-passes.md) | 2026-08-04 |
| 24 | [Обкатка двух проходов: два дефекта в собственных правилах](24-two-pass-trial-defects.md) | 2026-08-04 |
| 25 | [Секция `Сопровождение` и общий словарь трёх мест](25-maintenance-section-shared-vocab.md) | 2026-08-04 |
| 26 | [Канон 4: правка задним числом отменена](26-canon-4-retroactive-edit-cancelled.md) | 2026-08-04 |
| 27 | [Тип записи стал единственной осью и задаёт схему](27-record-type-single-axis.md) | 2026-08-05 |
| 28 | [Слаг подкреплён проверкой, обещанный судья заведён](28-slug-check-and-judge.md) | 2026-08-05 |
| 29 | [Обкатка `doc-consistency` на самом dev-skills](29-doc-consistency-trial.md) | 2026-08-05 |
| 30 | [`av-dev-backlog` удалён](30-av-dev-backlog-removed.md) | 2026-08-05 |
| 31 | [Ревизия покрытия `av-dev-pm` продакт-оптикой](31-pm-coverage-product-review.md) | 2026-08-05 |
| 32 | [Сквозной проход по словарю: пять слов сняты, девять закрыты списком](32-vocabulary-sweep.md) | 2026-08-05 |
| 33 | [Стоимость ревью: снят самый дорогой проход и самая дорогая модель](33-review-cost-cut.md) | 2026-08-06 |
| 34 | [Пропускная способность против глубины: тяжёлые проходы уехали в верхнюю ступень](34-throughput-vs-depth.md) | 2026-08-06 |
| 35 | [Ревизия моделей: переведены двое из девяти, и критерий оказался не тот](35-model-revision.md) | 2026-08-06 |
| 36 | [Темы ревью: документ проекта стал направлением проверки](36-review-topics-project-docs.md) | 2026-08-06 |
| 37 | [`gate` и `autotests` сведены к одному имени](37-gate-and-autotests-one-name.md) | 2026-08-07 |
| 38 | [Шов между плагинами: канон не называет имён проходов](38-plugin-seam-no-pass-names.md) | 2026-08-07 |
| 39 | [Спринт без цели — законный случай](39-sprint-without-goal.md) | 2026-08-07 |
| 40 | [Три категории документов: не всякий документ — тема ревью](40-three-doc-categories.md) | 2026-08-07 |
| 41 | [Разметка задачи: одна величина, посчитанная один раз](41-task-sizing-once.md) | 2026-08-07 |
| 42 | [`quick` стал дешевле `standard` тремя способами](42-quick-cheaper-than-standard.md) | 2026-08-07 |
| 43 | [Ревью дизайна тоже растёт ступенями](43-design-review-tiers.md) | 2026-08-07 |
| 44 | [Метка задачи: одно значение, по которому выбираются все ревьюверы](44-task-label-single-value.md) | 2026-08-07 |
| 45 | [Корректор метки, доля `small` и корпус оценки](45-label-corrector-small-share.md) | 2026-08-07 |
| 46 | [Правило выбора метки съехало из скилла в отдельный документ](46-label-rule-own-document.md) | 2026-08-07 |
| 47 | [OpenSpec заводится скиллом, а его конфиг — часть канона](47-openspec-setup-skill.md) | 2026-08-07 |
| 48 | [Форма чужого инструмента держится опросом инструмента, а не памятью](48-foreign-tool-form-by-query.md) | 2026-08-07 |
| 49 | [Дом общего правила вышел из плагина](49-shared-rule-home-outside-plugin.md) | 2026-08-09 |
| 50 | [Вычитка раздвоилась по плагину, а не по правилу](50-wording-split-by-plugin.md) | 2026-08-09 |
| 51 | [av-dev-pm расколот: владение пошло по тому, что ставится порознь](51-av-dev-pm-split.md) | 2026-08-09 |
| 52 | [Валидатор поехал за файлом: у конвейера появился свой скрипт](52-validator-follows-file.md) | 2026-08-09 |
| 53 | [`canon` и `docs` остаются двумя скиллами](53-canon-and-docs-two-skills.md) | 2026-08-09 |
| 54 | [Стык плагинов: правило получило дом, адреса остались у владельцев](54-plugin-seam-rule-home.md) | 2026-08-09 |
| 55 | [`task-pipeline` стал `resolve`: два плановых стопа вместо полной автономии](55-task-pipeline-becomes-resolve.md) | 2026-08-09 |
| 56 | [`av-dev-pipeline` → `av-dev-code`, `review-pipeline` → `review`](56-plugin-and-skill-renames.md) | 2026-08-09 |
| 57 | [Спринты отменены: приоритет стал порядком строк, `session` стал `groom`](57-sprints-cancelled-groom.md) | 2026-08-09 |
| 58 | [Судьи документов получили свой скилл — `healthcheck`](58-doc-judges-healthcheck.md) | 2026-08-09 |
| 59 | [Аудит четырьмя сабагентами: описания отстают от механики молча](59-four-subagent-audit.md) | 2026-08-09 |
| 60 | [Служебный файл зовётся по плагину-владельцу; у задач появилась своя версия формата](60-service-file-named-by-owner.md) | 2026-08-11 |
| 61 | [Разведка и решение — два сценария одного скилла, а не два скилла](61-research-and-solve-two-scenarios.md) | 2026-08-11 |
| 62 | [Вычитку зовёт тот, кто правил, а не тот, кто синкал](62-wording-called-by-editor.md) | 2026-08-11 |
| 63 | [Обслуживание — третий сценарий: у цикла SDD там нет входа](63-maintenance-third-scenario.md) | 2026-08-13 |
| 64 | [Три плагина слились в один: раскол платили, а не пользовались](64-three-plugins-merged.md) | 2026-08-13 |
| 65 | [Перечень осей получил дом; две оси жили без владельца](65-axes-registry-home.md) | 2026-08-13 |
| 66 | [`doc-canon` → `canon`: скилл формы вышел из семейства документов](66-canon-without-prefix.md) | 2026-08-13 |
| 67 | [Цель упразднена, у проекта появилась стадия](67-goal-removed-project-stages.md) | 2026-08-13 |
| 68 | [Постановка текстом — вторая полноправная форма входа](68-task-from-plain-text.md) | 2026-08-13 |
| 69 | [Счёт корпуса в прозе не пишется](69-corpus-count-not-written.md) | 2026-08-13 |