журнал решений: тема 67 дополнена по итогам ревью

- снята выдуманная ссылка: фраза «цель и приоритет — независимые оси»
  приписывалась теме 19, а стояла в правиле 4 самого скилла;
- перечень отменяемого доведён до полного: тема 19 целиком кроме Р81,
  половина Р83, плюс Р69, Р84, С85, Р101, Р103, Р105, Р106, Р107, Р110,
  Р128 из тем 17, 20, 25, 26, 27, 31;
- Р242 приведён к тому, что команда делает на самом деле; заведены Р244
  (объявление стадии и её смена — разные операции) и С234–С236.
This commit is contained in:
av
2026-08-13 15:08:43 +03:00
parent ed83ec7dc0
commit 6251157d8d
2 changed files with 77 additions and 13 deletions
+75 -11
View File
@@ -14,9 +14,10 @@
Разбор подтвердил, что это не вкус, а свойство: **цель — зонтик над Разбор подтвердил, что это не вкус, а свойство: **цель — зонтик над
параллельными направлениями**, она нужна там, где список работ нельзя выстроить параллельными направлениями**, она нужна там, где список работ нельзя выстроить
в один порядок и очередь идёт поперёк направлений (это и записано в теме 19: «цель в один порядок и очередь идёт поперёк направлений. Так это и было записано
и приоритет — независимые оси»). У проекта на одного человека параллельных правилом 4 скилла `task-track`: «Цель и приоритет — независимые оси: очередь
направлений не бывает, и зонтик не стоял ни над чем. может идти поперёк целей, и это законно». У проекта на одного человека
параллельных направлений не бывает, и зонтик не стоял ни над чем.
Заодно нашлось, что роадмап отвечал на свой вопрос наполовину: «чего ещё не Заодно нашлось, что роадмап отвечал на свой вопрос наполовину: «чего ещё не
умеет» — это «что осталось в беклоге», то есть пересказ второго индекса. умеет» — это «что осталось в беклоге», то есть пересказ второго индекса.
@@ -31,8 +32,38 @@
помельче, и они встают в списке подряд — соседство и есть тот ответ, ради помельче, и они встают в списке подряд — соседство и есть тот ответ, ради
которого заводили зонтик. которого заводили зонтик.
Р78 («цель — возможность приложения, задача — шаг к ней») и Р80 («цель **Отменённое названо поимённо, потому что журнал задним числом не
обязательна не у всякой задачи») этим отменены, Р81 подтверждён. переписывается**, и решение, оставшееся без ссылки, читается через год как
действующее. Отменены:
- **тема 19 целиком, кроме Р81.** Р77 (достигнутая цель не исчезает) — см. Р238;
Р78 (цель — возможность, задача — шаг к ней); Р79 (тест готовности спрашивает,
какую строку «Завершения» задача двигает) — вопрос снят вместе с разделом, у
`ready` его нет; Р80 (цель обязательна не у всякой задачи); Р82 (имена секций
роадмапа); С78 и С79 (ключ секции достигнутого, `reopen` снимает её строку);
С81 (правил пять, нулевое про цель — их шесть, и нулевое про стадию).
**Р81 подтверждён**: зонтика между планом и задачей по-прежнему нет.
- **Р83 — наполовину.** «Секции роадмапа канонические» отменено вместе с
роадмапом; «секции беклога — нет» **пересмотрено**: Р240 завёл машинную
проверку их состава. Имена по-прежнему называет проект — проверяется только
количество, и только на стройке.
- **Р69** (`PLAN.md``ROADMAP.md` вместе с ключом конфига): файл и ключ
упразднены.
- **Р84** (заголовок отвечает на вопрос своего типа, и форм три) — форм две.
**С85** (мелкая цель даёт две задачи) — предмета нет.
- **Р101 и Р103** в части «секция `Сопровождение` в роадмапе»: место работ по
сопровождению — задачи `chore`, и дом словаря это уже говорит.
- **Р105 и Р106** (порядок секций роадмапа канонический, позиции считаются из
кортежа) — предмета нет.
- **Р107** в части «ось из пяти значений» — их четыре. **Р110** (поле места
названо по типу) отменён **его собственным доводом**: имена развели потому,
что «какое поле обязательно, решает тип», а типов, у которых оно называлось бы
«Секцией», не осталось. Это ровно тот случай, который С101 назвал образцовым.
- **Р128** (порядок отмены цели: сперва задачи, потом цель) — процедура мертва
целиком.
Тема 39 (цель у спринта) сюда не входит: её предмет умер раньше, вместе со
спринтами (тема 57).
**Р238. Секция `Готово` удалена, а не перенесена.** Р77 заводил её потому, что **Р238. Секция `Готово` удалена, а не перенесена.** Р77 заводил её потому, что
роадмап иначе показывал только «что осталось». Довод верен ровно для роадмапа: у роадмап иначе показывал только «что осталось». Довод верен ровно для роадмапа: у
@@ -41,6 +72,11 @@
`git log` индекса, где закрытие лежит отдельным коммитом учёта. Третий дом `git log` индекса, где закрытие лежит отдельным коммитом учёта. Третий дом
списком строк был бы дублем, который никто не сверяет. списком строк был бы дублем, который никто не сверяет.
**Оговорка, без которой довод неполон: OpenSpec обязателен не всем.** Канон
допускает проект без него, и там из двух домов остаётся один — история git.
Связного перечня достигнутого у такого проекта не будет, и запись журнала
версий говорит об этом прямо: нужен — сохрани сам, до удаления файла.
**Р239. Стадия проекта — новая ось: `build` и `support`.** Решает она **что **Р239. Стадия проекта — новая ось: `build` и `support`.** Решает она **что
значит порядок строк беклога**: на стройке зависимость («раньше нельзя»), на значит порядок строк беклога**: на стройке зависимость («раньше нельзя»), на
доработке важность («раньше лучше»). Из этого выведено остальное — сколько у доработке важность («раньше лучше»). Из этого выведено остальное — сколько у
@@ -68,12 +104,12 @@
прочитать индекс** — переставить строку значит на стройке сломать план, а на прочитать индекс** — переставить строку значит на стройке сломать план, а на
доработке принять решение о важности. доработке принять решение о важности.
**Р242. Переход стадии — команда, а не правка конфига.** `tasks.py stage **Р242. Переход стадии — команда, а не правка конфига.** `tasks.py stage`
support` переносит остаток беклога в первую новую секцию, правит «Категорию» в переписывает ключ конфига и **шапку беклога**, где и объявлен смысл порядка
файлах и говорит, что порядок с этого момента значит другое. Датой перехода строк. Датой перехода служит коммит: отдельного журнала ради одной строки не
служит коммит: отдельного журнала ради одной строки не заводится. **Запретить заводится. **Запретить переход раньше времени скрипт не берётся** — «приложение
переход раньше времени скрипт не берётся** — «приложение построено» решает построено» решает человек, а не счётчик строк; `check` лишь напоминает о пустом
человек, а не счётчик строк; `check` лишь напоминает о пустом беклоге стройки. беклоге стройки.
**Р243. Русское имя стадии — «доработка», а не «поддержка».** Слово «поддержка» **Р243. Русское имя стадии — «доработка», а не «поддержка».** Слово «поддержка»
уже запрещено домом [shared/operations.md](../av-dev/shared/operations.md) как уже запрещено домом [shared/operations.md](../av-dev/shared/operations.md) как
@@ -81,6 +117,15 @@ support` переносит остаток беклога в первую нов
значение сделало бы его окончательно нечитаемым. Английское имя осталось значение сделало бы его окончательно нечитаемым. Английское имя осталось
`support` — оно в идентификаторе, а идентификатор и есть дом. `support` — оно в идентификаторе, а идентификатор и есть дом.
**Р244. Объявление стадии и её смена — разные операции, и различает их факт, а
не флаг.** Была стадия названа раньше или нет, скрипт знает сам. Объявление
**беклога не трогает вовсе**: оно называет то, что уже верно, и переразметить
при этом чужие полки значило бы подменить ответ вопросом о нём. Смена трогает
шапку и конфиг, а состав секций — только если об этом попросили явно
(`--sections`). Первая редакция команды сливала полки в умолчание при любом
вызове, и запись журнала версий, велевшая объявить стадию, тем самым молча
теряла у проекта лишние полки.
## Что из этого следует ## Что из этого следует
**С228. Груминг стал операцией одной стадии.** На стройке оба его вопроса **С228. Груминг стал операцией одной стадии.** На стройке оба его вопроса
@@ -114,3 +159,22 @@ support` переносит остаток беклога в первую нов
нельзя. Заодно нумерованные шаги источника перестали быть кандидатами в цели и нельзя. Заодно нумерованные шаги источника перестали быть кандидатами в цели и
стали **порядком записей**: номер источника — единственное место, где чужая стали **порядком записей**: номер источника — единственное место, где чужая
раскладка называет зависимость. раскладка называет зависимость.
**С234. Абзац, который читают вместо документации, обязан быть проверяемым.**
Шапка беклога объявляет стадию и смысл порядка строк, и первая редакция команды
её не трогала: файл продолжал утверждать прежнее, пока конфиг говорил новое.
Отсюда разметка `<!-- стадия -->` — не украшение, а то, что делает расхождение
шапки с конфигом обычным дрейфом: `check` его называет, `check --fix` правит.
**С235. Упразднение адреса регистрируется у владельца перечня.** `tasks/ROADMAP.md`
не попал в карту упразднённого, и гейтовый шаг, заведённый ровно затем, чтобы
ловить протухшие адреса, молчал про тот адрес, который упразднили в том же
коммите. Перечень упразднённого теперь есть у обоих владельцев раскладки, а не
только у канона.
**С236. Отказ по недостающей строке индекса запирал запись навсегда.** `edit`,
`close` и `reopen` требовали строку, которой у пережившей упразднение индекса
записи нет и взяться неоткуда: восстановить её нельзя, пока не сменишь тип, а
тип не сменить, пока нет строки. Все три теперь заводят или пропускают строку
сами и говорят об этом. Правило осталось прежним: позицию назначает человек, и
машинная встаёт в конец.
+2 -2
View File
@@ -6,8 +6,8 @@
Три сквозные нумерации, и они не пересекаются: Три сквозные нумерации, и они не пересекаются:
- **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже. - **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже.
- **Р** — решение: что согласовано и почему. Р1–Р243 по темам в порядке журнала. - **Р** — решение: что согласовано и почему. Р1–Р244 по темам в порядке журнала.
- **С** — следствие: что из решения вытекает. С1–С233, тоже сквозным счётом. - **С** — следствие: что из решения вытекает. С1–С236, тоже сквозным счётом.
Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним
числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения