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

- 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
@@ -0,0 +1,68 @@
# 61. Разведка и решение — два сценария одного скилла, а не два скилла (2026-08-11)
Скилл `resolve` вёл обе работы одной цепочкой: у исследовательской задачи были
свои три шага и свой чекпоинт вариантов, после которого она **вливалась в общую
ветку** и продолжалась кодом. Разведка тем самым была не работой со своим
исходом, а прологом к коду: её ответ оседал в `design.md` будущего change, и
разведка, кончившаяся знанием, документов проекта не касалась вовсе.
Сперва я развёл их на два скилла — `resolve` и `research`, с исходом и стопом с
обеих сторон. Через час работы стало видно, чем это плохо: **классифицировать
задачу приходится человеку до вызова**, а «есть ли у неё очевидный способ
решения» видно только после чтения записи. Разделение переносило самое трудное
суждение туда, где для него меньше всего данных.
**Р213. Точка входа одна, сценария два, выбирает сценарий скилл.** Оба
сценария живут справочниками — `references/solve.md` и `references/research.md`,
а в `SKILL.md` остались вход, развилка и правила, не зависящие от сценария.
Тем же приёмом сложен скилл задач: общая часть в `SKILL.md`, алгоритм каждого
типа в `references/task-*.md`.
**Р214. Порознь и одинаково — это отдельное решение.** Сперва разведка уехала в
справочник, а решение осталось в теле скилла: так вышло само, потому что решение
там уже лежало. Асимметрия читается как старшинство — сценарий в теле выглядит
основным, а сценарий в справочнике оговоркой, — и удерживает шестисотстрочный
файл, который грузится целиком даже ради разведки.
**Р215. Что у разведки появилось своего.** Исход — знание, а не пролог: ответ
уезжает в документы канона (`av-dev-docs:docs`), задачи заводятся и уточняются
(`av-dev-tasks:tasks`), написанное коммитится, запись закрывается. Кода сценарий
не пишет вовсе. OpenSpec ему не нужен — это единственное место скилла, где тот
не предпосылка.
**Р216. Переход между сценариями — событие с названным исходом.** Решение,
упёршееся в незнание способа, останавливается; разведка, выбравшая способ,
доводится до конца и **не переходит в код тем же прогоном** — следующий
запускает человек. Причина не в церемонии: разведка только что переписала
постановку, и брать её в работу тем же заходом значит решать за человека, стоит
ли делать это сейчас, — а это приоритет.
**Р217. Канон пришлось тронуть, и это версия 14.** ADR цитировал только архивный
`design.md`. У решения, принятого разведкой, `design.md` нет по построению —
change по нему не будет никогда, — и такое решение либо не попадало в `adr/`
вовсе, либо попадало сочинённым заново. Теперь источников два, и оба называются
в записи.
## Что из этого следует
**С204. Разделять работы стоит по моменту для человека, а не по роду работы.** У
разведки и решения он разный: варианты обсуждают до первого требования,
объяснение — после ревью дизайна. Всё остальное различие (пишем код или нет) из
этого уже следует.
**С205. Точку входа не разделяют по признаку, который виден только внутри.**
Классификация, требующая прочитать запись, не может быть условием вызова:
человек либо ошибётся, либо прочитает запись сам — и тогда скилл ему не нужен.
**С206. Сценарий в справочнике дешевле скилла.** Скилл стоит описания, границ,
копии правил и своего места в графе вызовов; справочник наследует их у хозяина.
Заводить второй скилл имеет смысл, когда его зовут отдельно, а не когда он
просто длинный.
**С207. Равные сценарии лежат одинаково.** Оставить один в теле скилла, а второй
вынести — значит назначить первому старшинство, которого в замысле нет. Читатель
это старшинство считывает, даже когда о нём не сказано ни слова.
**С208. Работа без своего исхода вырождается в пролог.** Разведка, кончавшаяся
переходом к коду, не имела причины писать в документы: её ответ и так уезжал в
`design.md`. Дом для исхода — вот что делает работу работой.