оси: перечень получил дом, две бездомные оси переехали в shared
Слияние ничего из идей не тронуло, но сделало дешёвым дом для правила, натянутого между скиллами. Заведён shared/axes.md — дом перечня, а не значений: девять осей, их адреса и чего каждая не решает. Механика остаётся у владельца. Целиком сюда переехали две оси, у которых владельца не было. Коды выхода объявлялись общим словарём в одиннадцати местах, и каждое объявление называло свой набор соседей; машина их не сверяла, потому что copies.py смотрит markdown, а перечни лежали в docstring'ах. Теперь дом один, скрипты держат указатель, а три SKILL.md — помеченную копию, потому что на кодах они ветвятся. Режим прогона (с меткой, без метки) был размазан по четырём файлам и осью назван не был, хотя в уставе review-basics задаёт саму возможность запуска. Разведены два значения слова «стадия»: ступени 1-5 внутри прогона кода, стадии дизайна и кода снаружи. Карта нашла ошибку в себе: клетка «категория документа × метка» пустой не была — review-basics приёмник проектных тем при любой метке. Пустой оказалась соседняя: на прогоне без метки план фиксирован, и своих тем проекта в нём нет вовсе. Обе оставшиеся пустоты названы вслух, а не заполнены наугад.
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Оси процесса
|
||||
|
||||
**Это дом перечня, а не значений.** Что означает каждое значение и как оно
|
||||
работает, знает владелец оси — здесь только сама ось, её дом и **чего она не
|
||||
решает**. Второй пересказ механики разошёлся бы с первым; перечень же нужен
|
||||
целиком и в одном месте, потому что вопрос «а не задаёт ли это метку» задают из
|
||||
скилла, который метку не ведёт.
|
||||
|
||||
**Ось — это закрытый перечень значений, по которому что-то ветвится.** Признак
|
||||
проверяемый, и он отсекает похожее: темы ревью и документы проекта — списки
|
||||
**открытые**, их пополняет проект, и перечень в плагине протух бы на первом же
|
||||
своём документе. Модель прохода — не ось, а цена прогона; её дом — «Модель по
|
||||
проходу» в `code-review`, механизация — `frontmatter.py`.
|
||||
|
||||
## Перечень
|
||||
|
||||
| Ось | Значения | Дом |
|
||||
| --- | --- | --- |
|
||||
| тип записи | `goal` `feature` `fix` `chore` `research` | `task-track/SKILL.md`, «Тип записи» |
|
||||
| сценарий | решение · обслуживание · разведка | `code-resolve/SKILL.md`, «Развилка» |
|
||||
| метка | `small` `medium` `large` | `code-review/SKILL.md`, «Метки» |
|
||||
| режим прогона | с меткой · без метки | здесь, ниже |
|
||||
| стадия ревью | дизайн · код | `code-review/SKILL.md`, «Ревью дизайна» |
|
||||
| категория документа | тема · источник темы · процессный | `doc-canon/references/canon.md` |
|
||||
| severity находки | `critical` `major` `minor` `nit` | `code-review/references/finding-contract.md` |
|
||||
| коды выхода | 0 1 2 3 4 | здесь, ниже |
|
||||
|
||||
Две оси стоят домом **здесь**, и обе по одной причине: владельца у них нет.
|
||||
Коды выхода делят семь скриптов и три скилла, режим прогона — конвейер, сценарий
|
||||
обслуживания и два устава.
|
||||
|
||||
## Что на что влияет
|
||||
|
||||
Клетка называет **место**, где связка описана; сама связка живёт там.
|
||||
|
||||
| Влияет | На что | Где описано |
|
||||
| --- | --- | --- |
|
||||
| тип записи | сценарий — **предлагает**, подтверждает предмет работы | `task-track/SKILL.md`, «Тип записи» |
|
||||
| тип записи | метку и глубину — **не влияет, и это записано явно** | там же |
|
||||
| сценарий | режим прогона: обслуживание идёт без метки | `code-resolve/references/maintain.md` |
|
||||
| метка | состав проходов обеих стадий | `code-review/SKILL.md`, «Метки» |
|
||||
| метка | глубину темы: против чего смотрят и как | там же |
|
||||
| режим прогона | состав проходов и саму возможность запуска прохода | `code-review/SKILL.md`, «Прогон без change» |
|
||||
| категория документа | заводит ли документ направление проверки | `canon.md`, «Три категории» |
|
||||
| severity | что с находкой делают дальше | `code-review/SKILL.md`, «Что происходит с находками» |
|
||||
|
||||
**Две клетки пусты, и это сказано намеренно, а не забыто.**
|
||||
|
||||
**Категория документа × режим прогона.** На прогоне **с меткой** своя тема
|
||||
проекта закрыта при любом значении: `review-basics` — приёмник проектных тем и
|
||||
при `small`, и при `large`, и при `medium`. На прогоне **без метки** план
|
||||
фиксирован сценарием — `autotests`, `operations`, `conventions`, — и своих тем
|
||||
проекта в нём нет. Значит, документ, заведённый проектом как тема, на
|
||||
обслуживании не смотрит никто, и строкой это нигде не называется.
|
||||
|
||||
**Режим прогона × severity.** Триаж обязателен всегда, в том числе без метки. Но
|
||||
часть оснований `critical` — построенный путь к отказу, замер — добывается
|
||||
проходами, которые без метки не запускаются. Значит ли это, что `critical` на
|
||||
прогоне обслуживания не бывает, или что его основания там другие, не сказано.
|
||||
|
||||
## Режим прогона
|
||||
|
||||
<!-- дом: режим-прогона -->
|
||||
|
||||
**Прогон ревью идёт в одном из двух режимов, и режим — не глубина.**
|
||||
|
||||
- **С меткой** — обычный прогон по change: разметку сделал `review-scope`, состав
|
||||
обеих стадий выведен из метки.
|
||||
- **Без метки** — прогон сценария обслуживания: change нет, размечать нечего,
|
||||
план фиксирован и назван сценарием. Разметчик не запускается вовсе.
|
||||
|
||||
**Без метки — не то же самое, что `small`.** `small` — это суждение о размере и
|
||||
сложности, снятое с изменения; отсутствие метки — утверждение, что снимать её
|
||||
не с чего. Проход, подставивший себе `small` там, где метки нет, вывел бы
|
||||
глубину из ничего.
|
||||
|
||||
**Режим правит не только состав, но и саму возможность запуска.** Проход, у
|
||||
которого запуск задан меткой, без метки не имеет ответа на вопрос «запускаться
|
||||
ли» — и ответ ему даёт план сценария, а не умолчание.
|
||||
|
||||
<!-- /дом: режим-прогона -->
|
||||
|
||||
## Коды выхода
|
||||
|
||||
<!-- дом: коды-выхода -->
|
||||
|
||||
**Коды выхода — общий словарь всех скриптов `av-dev`. Ветвись на коде, а не на
|
||||
тексте вывода.**
|
||||
|
||||
| Код | Что случилось |
|
||||
| --- | --- |
|
||||
| 0 | сошлось |
|
||||
| 1 | дрейф: рабочая ситуация, чинится |
|
||||
| 2 | ошибка употребления: аргументы или нарушенное правило |
|
||||
| 3 | окружение: не тот каталог, битый конфиг, нет инструмента |
|
||||
| 4 | внутренний сбой — дефект скрипта, доложить |
|
||||
|
||||
**Различать 1 и 3 обязательно.** «Дрейф» — рабочая ситуация, и чинится она
|
||||
правкой предмета; «окружение» — нерабочая, и повтор той же командой не поможет.
|
||||
Одинаковая реакция на них неверна в обоих случаях.
|
||||
|
||||
<!-- /дом: коды-выхода -->
|
||||
|
||||
Словарь был объявлен «общим» в одиннадцати местах, и каждое объявление
|
||||
перечисляло **свой** набор соседей: «тот же, что у `tasks.py`», «тот же, что у
|
||||
`tasks.py`, `docs.py` и `copies.py`», «общий словарь скриптов av-dev». Ни одно из
|
||||
них не было домом, все — списки по памяти. Отсюда дом здесь: у словаря семь
|
||||
скриптов-потребителей и ни одного владельца.
|
||||
Reference in New Issue
Block a user