diff --git a/decisions/67-goal-removed-project-stages.md b/decisions/67-goal-removed-project-stages.md index 274e200..d9ab48a 100644 --- a/decisions/67-goal-removed-project-stages.md +++ b/decisions/67-goal-removed-project-stages.md @@ -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 заводил её потому, что роадмап иначе показывал только «что осталось». Довод верен ровно для роадмапа: у @@ -41,6 +72,11 @@ `git log` индекса, где закрытие лежит отдельным коммитом учёта. Третий дом списком строк был бы дублем, который никто не сверяет. +**Оговорка, без которой довод неполон: OpenSpec обязателен не всем.** Канон +допускает проект без него, и там из двух домов остаётся один — история git. +Связного перечня достигнутого у такого проекта не будет, и запись журнала +версий говорит об этом прямо: нужен — сохрани сам, до удаления файла. + **Р239. Стадия проекта — новая ось: `build` и `support`.** Решает она **что значит порядок строк беклога**: на стройке зависимость («раньше нельзя»), на доработке важность («раньше лучше»). Из этого выведено остальное — сколько у @@ -68,12 +104,12 @@ прочитать индекс** — переставить строку значит на стройке сломать план, а на доработке принять решение о важности. -**Р242. Переход стадии — команда, а не правка конфига.** `tasks.py stage -support` переносит остаток беклога в первую новую секцию, правит «Категорию» в -файлах и говорит, что порядок с этого момента значит другое. Датой перехода -служит коммит: отдельного журнала ради одной строки не заводится. **Запретить -переход раньше времени скрипт не берётся** — «приложение построено» решает -человек, а не счётчик строк; `check` лишь напоминает о пустом беклоге стройки. +**Р242. Переход стадии — команда, а не правка конфига.** `tasks.py stage` +переписывает ключ конфига и **шапку беклога**, где и объявлен смысл порядка +строк. Датой перехода служит коммит: отдельного журнала ради одной строки не +заводится. **Запретить переход раньше времени скрипт не берётся** — «приложение +построено» решает человек, а не счётчик строк; `check` лишь напоминает о пустом +беклоге стройки. **Р243. Русское имя стадии — «доработка», а не «поддержка».** Слово «поддержка» уже запрещено домом [shared/operations.md](../av-dev/shared/operations.md) как @@ -81,6 +117,15 @@ support` переносит остаток беклога в первую нов значение сделало бы его окончательно нечитаемым. Английское имя осталось `support` — оно в идентификаторе, а идентификатор и есть дом. +**Р244. Объявление стадии и её смена — разные операции, и различает их факт, а +не флаг.** Была стадия названа раньше или нет, скрипт знает сам. Объявление +**беклога не трогает вовсе**: оно называет то, что уже верно, и переразметить +при этом чужие полки значило бы подменить ответ вопросом о нём. Смена трогает +шапку и конфиг, а состав секций — только если об этом попросили явно +(`--sections`). Первая редакция команды сливала полки в умолчание при любом +вызове, и запись журнала версий, велевшая объявить стадию, тем самым молча +теряла у проекта лишние полки. + ## Что из этого следует **С228. Груминг стал операцией одной стадии.** На стройке оба его вопроса @@ -114,3 +159,22 @@ support` переносит остаток беклога в первую нов нельзя. Заодно нумерованные шаги источника перестали быть кандидатами в цели и стали **порядком записей**: номер источника — единственное место, где чужая раскладка называет зависимость. + +**С234. Абзац, который читают вместо документации, обязан быть проверяемым.** +Шапка беклога объявляет стадию и смысл порядка строк, и первая редакция команды +её не трогала: файл продолжал утверждать прежнее, пока конфиг говорил новое. +Отсюда разметка `` — не украшение, а то, что делает расхождение +шапки с конфигом обычным дрейфом: `check` его называет, `check --fix` правит. + +**С235. Упразднение адреса регистрируется у владельца перечня.** `tasks/ROADMAP.md` +не попал в карту упразднённого, и гейтовый шаг, заведённый ровно затем, чтобы +ловить протухшие адреса, молчал про тот адрес, который упразднили в том же +коммите. Перечень упразднённого теперь есть у обоих владельцев раскладки, а не +только у канона. + +**С236. Отказ по недостающей строке индекса запирал запись навсегда.** `edit`, +`close` и `reopen` требовали строку, которой у пережившей упразднение индекса +записи нет и взяться неоткуда: восстановить её нельзя, пока не сменишь тип, а +тип не сменить, пока нет строки. Все три теперь заводят или пропускают строку +сами и говорят об этом. Правило осталось прежним: позицию назначает человек, и +машинная встаёт в конец. diff --git a/decisions/README.md b/decisions/README.md index 00c8aae..16f9bce 100644 --- a/decisions/README.md +++ b/decisions/README.md @@ -6,8 +6,8 @@ Три сквозные нумерации, и они не пересекаются: - **Т** — требование: вход, который обязан быть удовлетворён. Живут здесь, ниже. -- **Р** — решение: что согласовано и почему. Р1–Р243 по темам в порядке журнала. -- **С** — следствие: что из решения вытекает. С1–С233, тоже сквозным счётом. +- **Р** — решение: что согласовано и почему. Р1–Р244 по темам в порядке журнала. +- **С** — следствие: что из решения вытекает. С1–С236, тоже сквозным счётом. Номер закреплён за записью навсегда: журнал описывает прошлые состояния и задним числом не переписывается. Отсюда и разнобой формы — ранние темы держат решения