журнал решений: разложен по теме на файл, метки решений стали номерами
- DECISIONS.md (4040 строк, 65 тем) → decisions/, файл на тему плюс указатель; - буквенные метки решений заменены сквозными Р1–Р234, следствия получили префикс С при прежних номерах: схема букв выродилась до пятибуквенных и сломалась — `АЕАКЛ` была занята и темой 53, и темой 65; - 42 перекрёстные ссылки переписаны под новые номера и стали живыми; где номер означал тему, а слово стояло «решение», формулировка исправлена.
This commit is contained in:
@@ -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`. Дом для исхода — вот что делает работу работой.
|
||||
Reference in New Issue
Block a user