журнал решений: разложен по теме на файл, метки решений стали номерами

- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель;
- буквенные метки решений заменены сквозными Р1–Р234, следствия получили
  префикс С при прежних номерах: схема букв выродилась до пятибуквенных и
  сломалась — `АЕАКЛ` была занята и темой 53, и темой 65;
- 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер
  означал тему, а слово стояло «решение», формулировка исправлена.
This commit is contained in:
av
2026-08-13 12:40:56 +03:00
parent b411d4edb8
commit bf6a173115
72 changed files with 4253 additions and 4053 deletions
+121
View File
@@ -0,0 +1,121 @@
# Решения по устройству процесса
Журнал согласований: что решено, почему и что из этого следует. Пишется по ходу
разбора тем, **одна тема — один файл**; этот файл — только указатель.
Три сквозные нумерации, и они не пересекаются:
- **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже.
- **Р** — решение: что согласовано и почему. Р1–Р234 по темам в порядке журнала.
- **С** — следствие: что из решения вытекает. С1–С225, тоже сквозным счётом.
Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним
числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения
под заголовком «Решено», поздние ведут их прозой.
Незакрытые остатки прошлого захода — [REMAINING.md](../REMAINING.md).
## Требования, зафиксированные по ходу
Не решения — вход, который обязан быть удовлетворён и разбирается в названной
теме.
**Т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 |