Перейти к содержанию

План правок по итогам U-02 · развилки к решению#

  • Статус: составлен и внесён целиком 2026-09-22. Десять развилок, тринадцать итераций, ни одного открытого вопроса
  • Откуда: 21 находка прогона; восемь ADR, четырнадцать замечаний
  • Форма: развилка = одна итерация. У каждой варианты и рекомендация; выбирает John
  • Правил по ходу прогона не вносилось — сознательно: документ, поправленный в середине применения, перестаёт быть тем, что применяли

Сводка#

# О чём Что трогает Класс Рекомендация
Р1 Предмет обещания определяет третья сторона и ещё не определил D-11 MAJOR ✅ A внесено — D-11 v2.0
Р2 Дисквалификаторы D-05 не называют, что именно отвергают D-05 MAJOR ✅ B внесено — D-05 v4.0
Р3 На гринфилде вопрос «сколько их уже есть» становится решением мастер-шаблон MINOR ✅ A внесено — мастер v6.3
Р4 Пометки для факта, измеренного в чужой системе, нет мастер-шаблон и D-06 MINOR + MAJOR ✅ B внесено — мастер v6.3 и D-06 v3.0
Р5 Обязательства D-04 привязаны не к тому условию D-04 MINOR ✅ A внесено — D-04 v3.1
Р6 «Добавляет работу» — свойство рода, а не позиции в списке D-06 MINOR ✅ A внесено — D-06 v3.1
Р7 Следствие исчерпания бюджета описано только для систем с выкатами D-10 MINOR ✅ A внесено — D-10 v1.2
Р8 Три мелкие правки одним списком разное правка ✅ A внесено — D-09 v3.1, 02-versioning v1.4, пара D-01 ↔ D-10
Р9 Стадия как свойство: общее и специфичное внутри шага рабочий процесс, шапки, три документа MINOR ✅ внесена целиком — мастер v6.4 и v6.5, одиннадцать шапок, строки шага, блоки по стадиям, пометки [стадия: …], одиннадцатая проверка. Р9.4: проверка проведена, диаграммы не будет
Р10 Артефакты, уезжающие наружу, никто не считает мастер-шаблон MINOR ✅ B внесено — мастер v6.3

Р1 · D-11: предмет обещания определяет третья сторона#

Находка 1. Спецификация публикуется 1 октября, методика расчёта сбора выходит в декабре. Обещать приходится раньше, чем определён смысл обещаемого. Ближайший дисквалификатор — «ломается смысл, а не схема» — про изменение смысла, а не про его отсутствие в момент обещания. В охват ADR-0001 пришлось внести оговорку, которой документ не предусматривает.

Вариант Что делаем Класс
A Шестой дисквалификатор: предмет обещания определяется не нами и ещё не определён — обещать можно форму, но не содержание, и это записывается словами в охвате MAJOR
B Оговорка в раздел об охвате, без дисквалификатора MINOR
C Ничего: случай редкий —

Рекомендую A. B оставляет правило необязательным, а случай из редких только на вид: любая система, работающая по регламенту, который дописывают параллельно с ней, попадает в него целиком. Добавление дисквалификатора — MAJOR по определению правил версионирования; старых ADR у D-11, кроме ADR-0001 этого прогона, нет.

Внесено 2026-09-22 — D-11 v2.0#

Шестой дисквалификатор поставлен первым: по правилу мастер-шаблона организационные идут впереди, а этот именно такой — он о том, существует ли предмет обещания, а не о том, чего обещание стоит.

Формулировка называет отвергаемое, как и остальные пять: отвергается не обещание, а его охват — из него исключается всё, чей смысл задаёт третья сторона. Добавлена оговорка, которой в разборе не было: исключённое из охвата не защищено ничем, и потребитель обязан узнать об этом из записи, а не из спора.

У охвата появилось требование в разделе 5: исключение, сделанное из-за третьей стороны, называется прямо — что не обещано и кто это определит. Умолчание здесь читается потребителем как обещание.

В условия пересмотра добавлен единственный случай, когда охват растёт: третья сторона определила то, что было исключено.

Старым ADR перепроверять нечего, и по любопытной причине. Единственный ADR по D-11 — ADR-0001 этого же прогона — правило уже применил вручную, исключив из охвата смысл величин. Именно применение вручную и показало, что правила в документе нет.

Р2 · D-05: дисквалификаторы не называют отвергаемое#

Находка 2. Седьмой дисквалификатор — «части с разными целями по доступности в одном кванте» — называет плохое состояние и не говорит, что из него отвергается. Выходов два и они противоположны.

Вариант Что делаем Класс
A Переписать седьмой: при неснимаемом дисквалификаторе отзывается требование, а не проводится линия MAJOR
B Переписать все семь по одному образцу: каждый называет отвергаемое, как в D-11 MAJOR
C Ничего —

Рекомендую B. Рецензия D-11 сделала ровно это для всех пяти его дисквалификаторов, и правило оказалось не стилистическим: без него автор выбирает выход из обстановки, а не из документа. Чинить один из семи значит оставить шесть на честном слове.

Внесено 2026-09-22 — D-05 v4.0#

Переписаны все семь. Отвергаемое оказалось шести разных родов, и это само по себе результат: разрез целиком, число частей, отдельная часть, линия, основание линии, требование.

# Что отвергает
1 · нет наблюдаемости Разрез целиком — и единственный, который можно не отвергнуть, а купить; цена покупки называется в ADR, иначе отвержение состоялось
2 · сервисов больше, чем команд Число частей, а не разрез
3 · у части нет владельца Эту часть, а не разрез: присоединяется к соседней
4 · разрывает атомарную операцию Линию, а не требование атомарности
5 · идёт по техническим слоям Основание линии. Единственный без законного исхода «оставить как есть»: слой границей не бывает никогда
6 · рассекает класс защищаемых данных Положение линии: её двигают, а не оплачивают
7 · разные цели в одном кванте Либо квант, либо различие — правило выбора записано явно

У седьмого правило выбора теперь есть. Разрез возможен — разрезается квант; разрез невозможен — отзывается различие, и у частей одна цель по доступности. Главное добавление: отзыв различия объявлен решением, а не умолчанием и обязан попасть в ADR строкой «у части N нет собственной цели, она живёт по цели M». Молчаливый отзыв — это и есть «разные цифры в требованиях, недостижимые с первого дня», от которых дисквалификатор защищает.

Старым ADR перепроверять нечего: в ADR-0004 седьмой сработал, выход выбран верно — разрез был невозможен, отозвано различие — и записан строкой, как теперь и требуется.

Р3 · Гринфилд превращает опрос в проектное решение#

Находки 3, 4, 5, 6. D-07 велит письменно ответить, сколько копий уже существует; D-11 объясняет, чего стоит купить знание о потребителях. На гринфилде оба вопроса читаются иначе: копий нет — значит решается, сколько их завести; знание не покупается — оно закладывается бесплатно. Два документа подряд — это свойство набора, а не документа.

Вариант Что делаем Класс
A Правило в мастер-шаблон: вопрос вида «сколько их уже есть» на гринфилде читается как «сколько мы заведём», и ответ становится решением, а не фактом; пустая ячейка означает «ещё не решили», а не «не нашли» MINOR мастера
B Точечные оговорки в D-07 и D-11 MINOR каждому
C Строку в D-05: что меняется у соседних документов на его стадии MINOR D-05

Рекомендую A. Находка прямо названа свойством набора: два документа сегодня, третий завтра. Одно правило в мастер-шаблоне дешевле трёх оговорок и переживёт появление двенадцатого документа.

Внесено 2026-09-22 — мастер-шаблон v6.3, правило в «Правила заполнения»#

Правило стоит сразу после блока о [нет данных], потому что оно о том же — что означает пустая и что означает заполненная ячейка, — и именно там автор гринфилда ошибается: ищет ответ вместо того, чтобы его назначить.

Формулировка называет, что меняется, а не только что происходит: цена ошибки переезжает во времени. На работающей системе неверный ответ обнаруживается замером позже; на гринфилде он создаётся сейчас и станет фактом ровно потому, что так записали. Из этого выведены три следствия — пометка ([прогноз], [требования], [орг], но никогда [замер]), смысл пустой ячейки («ещё не решили», закрывается выбором) и попадание в ADR наравне с остальными решениями.

Оба примера из находок названы прямо — D-07 и D-11, — и сказано, что это свойство набора: третий такой документ найдётся, и оговорка в каждом дороже одного правила в мастере.

Р4 · Пометка для факта, измеренного в чужой системе#

Находки 8, 9. Релизный цикл вендора, доступность удостоверяющего центра, расписание коллегии — это замеры, но не наши. Ни [расчёт], ни [допущение], ни [продукт] их не описывают. В третьем случае пробел помешал дисквалификатору сработать: D-06 требует знать замером, регулярен ли режим, а замер есть только у чужой стороны.

Вариант Что делаем Класс
A Пометка [замер сторонний] в словарь мастер-шаблона: измерено и опубликовано владельцем чужой системы; достоверность выше допущения, ниже своего замера MINOR мастера
B A плюс правка шестого дисквалификатора D-06: он срабатывает и по стороннему замеру, а не только по своему MINOR мастера + MAJOR D-06
C Ничего: помечать [допущение] и оговаривать словами —

Рекомендую B. A чинит словарь и оставляет дисквалификатор неработающим на гринфилде — то есть ровно там, где он нужнее всего: на работающей системе свой замер есть и без него.

Внесено 2026-09-22 — мастер-шаблон v6.3, словарная половина B#

Пометка [замер сторонний] добавлена в таблицу достоверности между [док]/[сторонний] и [расчёт].

Разбор дал больше, чем «ещё одна строка в словаре»: пришлось объяснить, чем она отличается от [сторонний], иначе две пометки сливаются. [док] и [сторонний] описывают кандидата, которого мы выбираем, и проверяются вопросом о сопоставимости условий измерения: при желании мы измерили бы то же сами. [замер сторонний] описывает чужую систему, которую мы не выбираем и не можем измерить никогда. Отсюда другое условие годности — дата публикации и кто её объявил, а не сопоставимость, — и другой способ обновления: не наш замер, а наблюдение за чужой публикацией.

Исправлена задетая правкой строка: «без третьей степени такой документ нельзя заполнить честно» относилась к [расчёт], а степеней стало четыре — теперь она называет [расчёт] прямо. И добавлено то, ради чего всё затевалось: [замер сторонний] на гринфилде бывает, потому что чужая система существует и тогда, когда нашей ещё нет.

Почему мастер остался MINOR. Записано, что принимает ли сторонний замер конкретный дисквалификатор — решает он сам и говорит словами, а молчание читается как «не принимает». Это сохраняет прежнее поведение всех написанных документов: ни один прежний исход не мог бы выйти другим. Общее правило «дисквалификаторы обязаны принимать сторонний замер» было бы MAJOR мастера — и вариант B такого не требовал.

Вторая половина B не внесена: D-06 → v3.0, чтобы его шестой дисквалификатор срабатывал по стороннему замеру. Идёт отдельной итерацией.

Внесено 2026-09-22 — D-06 v3.0, вторая половина B#

Шестой дисквалификатор теперь читается «известно замером — нашим или владельца зависимости», и за ним стоит абзац о том, почему выбор замера не наш: регулярность режима принадлежит тому, чей отказ мы обходим. Когда зависимость чужая, точка измерения не у нас, своего замера не будет никогда — а у владельца он есть и часто опубликован: обязательства, разборы инцидентов, регламент работ.

Разбор дал то, чего в плане не было: состояний оказалось три, а не два. Сведены таблицей — свой замер, замер владельца (срабатывает так же), замера нет ни у кого. Третье состояние — главное: дисквалификатор не срабатывает, но проверка не пройдена, и это записывается строкой в ADR. Находка 9 сказала ровно это — пробел блокирует проверку, а не только оставляет ячейку пустой, — и без третьей строки правка сводилась бы к смене одного слова.

Названа ошибка, породившая правку, — в тексте документа, а не только в истории: «нашей системы ещё нет» не означает «замера нет». Чужая система существует и тогда, когда нашей ещё нет.

Строка совместимости обновлена — единственная во всём наборе. План говорит «строка совместимости никому не обновляется: MINOR мастера её не трогает», и для десяти документов это верно. D-06 — исключение по существу: он теперь опирается на словарь, которого в v6.0 не было, и объявлять совместимость с v6.0 значило бы сказать неправду. Правило, которое отсюда следует — «MINOR мастера не трогает строку совместимости, кроме документа, который начал пользоваться добавленным», — в 02-versioning не внесено: это правило вне принятых развилок, и оно идёт кандидатом в следующий план ревизии.

Старым ADR: перепроверить один. В ADR-0006 этого же прогона шестой дисквалификатор помечен «не смог сработать: замера нет, системы нет». При v3.0 такая ячейка незаконна: на её месте обязан стоять либо сработавший дисквалификатор, либо строка о том, что владелец зависимости не публикует ничего. ADR не переписывается — исхода прогона правка не отменяет, центр вымышлен и публикаций у него нет; изменилось то, что проверка из непройденной стала возможной. E-03 · ADR-0004 не затронут: замер там был наш.

Р5 · D-04: обязательства привязаны не к тому условию#

Находка 14. Три обязательства — явное состояние «неизвестно», сверка как часть системы, заранее спроектированный разбор расхождений — привязаны к третьему значению оси согласованности. На этом прогоне координата вторая, а все три понадобились.

Вариант Что делаем
A Перепривязать: обязательства следуют из того, что завершение зависит от организации вне нашего управления, при любом значении оси
B Добавить их и ко второму значению отдельным абзацем
C Ничего

Рекомендую A. B описывает то же дважды и оставит вопрос при первом же случае с третьим значением у своей стороны. Класс — MINOR: координата не меняется, меняется список того, что обязано попасть в запись.

Внесено 2026-09-22 — D-04 v3.1#

Обязательства отделены от третьего значения оси и переставлены на своё условие: завершение процесса зависит от организации, которой мы не распоряжаемся. Сказано, что условие выполняется при любом значении оси, и что третье значение — лишь один способ туда попасть, причём более редкий: чаще атомарность не нужна вовсе, а шаг всё равно выполняет чужая сторона и вправе выполнить его позже.

Добавлена проверка одним вопросом: есть ли шаг, который выполняет не наша организация, и ждём ли мы его, чтобы считать процесс завершённым? Ответ «да» включает все три обязательства.

Прежнее утверждение снято явно, блокквотом в теле документа, а не только строкой истории. Стояло: «Отличать это от "атомарность не нужна" обязательно: там обязательств нет вовсе». Это ровно то, что прогон опроверг, и читатель, успевший выучить прежнюю редакцию, должен увидеть отмену там, где читал правило.

Третьему значению оставлено то, что принадлежит ему одному: по координате это «итоговая», но инвариант не закрыт ничем, и запись обязана сказать не «выбрали итоговую согласованность», а «атомарность требуется, недостижима, и вот чем мы её замещаем». Без обязательств значение не опустело.

В раздел 5 дописана строка «Последствия»: при чужой организации в процессе три обязательства — обязательная часть записи.

Старым ADR: перепроверить один вопросом «был ли в процессе шаг чужой организации, которого мы ждём». В ADR-0005 этого прогона обязательства выполнены по существу, но выведены вручную, а не документом; исход не меняется. Два остальных ADR по D-04 — E-01 · ADR-0003 и E-02 · ADR-0003 — проверяются тем же вопросом.

Р6 · D-06: род дисквалификатора, а не позиция#

Находка 15. Документ обещает поведение «добавляет работу, а не отвергает» двум последним дисквалификаторам; здесь так повели себя четыре из шести, включая первый.

Вариант Что делаем
A Переписать абзац: те, что описывают дефект исполнения, лечатся работой; те, что описывают несовместимость предмета, отвергают. Первый попадает в обе группы в зависимости от того, чем нарушен инвариант
B Просто расширить список «добавляющих работу» с двух до четырёх
C Ничего

Рекомендую A. B — подгонка под один прогон: список снова разъедется на следующем кейсе, а правило о роде переживёт.

Внесено 2026-09-22 — D-06 v3.1#

Роды названы таблицей: несовместимость предмета отвергает вариант; дефект исполнения оставляет его с «работой до»; неприменимость документа даёт отвод. Третий род в плане не значился — он обнаружился при письме: шестой дисквалификатор не делает ни того, ни другого, и без третьей строки таблица врала бы о нём.

Сказано главное следствие: один дисквалификатор попадает в разные роды на разных кейсах. Первый отвергает, когда инвариант нарушен существом ответа (устаревший остаток в момент списания работой не лечится), и добавляет работу, когда нарушена формулировка (квитанция говорит «принято» до проверки подписи — меняется текст, а не режим).

Класс держится на одном слове, и это записано прямо. Прежняя редакция говорила «два последних обычно не отвергают» — наблюдение о частом режиме, а не запрет остальным вести себя так же. Поэтому ни один прежний исход не был предписан иначе, и правка MINOR. Будь там «только два последних», она была бы MAJOR. Если это чтение кажется натянутым — класс меняется на MAJOR одной строкой истории, исходы от этого не двигаются.

В запись добавлено требование: у сработавшего дисквалификатора указывается отказ или работа до. Без этого ячейка «сработал» не говорит, остался вариант в игре или выбыл. ADR-0006 завёл пометку «Работа до:» сам, не имея её в документе — верный признак, что правила не хватало.

Старым ADR: исходы не меняются, записи неполны. В E-03 · ADR-0004 и ADR-0006 род сработавших дисквалификаторов не назван. ADR не переписываются.

D-06 получил две версии подряд — v3.0 по Р4·B и v3.1 по Р6, — потому что развилки вносятся по одной. Сливать их в одну версию я не стал: каждая находка получает свою строку истории и остаётся прослеживаемой.

Р7 · D-10: следствие исчерпания бюджета#

Находка 16. Все примеры описывают изменение темпа разработки. В системе, где выкаты запрещены извне, обычное следствие уже в силе и потому не следствие.

Вариант Что делаем
A Добавить второй род следствия: режим эксплуатации и внешняя эскалация — с примером «переход в деградацию целиком» и «запрос на продление срока у того, кто его назначил»
B Ничего: дисквалификатор верен и сработал

Рекомендую A. Дисквалификатор верен и сработал, но ответа не подсказал; искать его пришлось в другом слое без помощи документа.

Внесено 2026-09-22 — D-10 v1.2#

Второй род следствия назван рядом с первым, таблицей: темп изменений — приоритеты, заморозка выката, доля работы на надёжность; режим эксплуатации и внешняя эскалация — переход в деградацию целиком, ручной режим, запрос на продление срока у того, кто его назначил. У каждого сказано, когда он единственный доступный.

Дан признак, которого в плане не было и который дороже самого перечня: обычное следствие уже в силе до всякого исчерпания. Если выкаты внутри окна и так запрещены, «остановить выкаты» — не следствие, а описание текущего положения. Названа и ловушка: дисквалификатор при этом срабатывает верно — он спрашивает «что изменится» и не получает ответа, — но не подсказывает, где искать другой.

Добавлено требование, вытекающее из природы второго рода: он обращён к тому, кем мы не распоряжаемся, и потому называет адресата и его обязательство. «Запросим продление» — не следствие, если никто не обязался рассматривать. Иначе третий дисквалификатор срабатывает снова, уже на втором роде.

Записано одно наблюдение с прогона, не возведённое в правило: следствие второго рода вышло ступенчатым — своё действие на половине бюджета, своё на исчерпании. Вероятная причина — режим эксплуатации двигается постепенно, а «остановить выкаты» двоично. Случай один, и это сказано.

Старым ADR: перепроверять нечего, и оба проверены при внесении. ADR-0008 второй род уже применил вручную — это и показало, что в документе его нет. E-03 · ADR-0005 выбрал следствие первого рода, разбор расхождений в приоритет над плановыми задачами; второй род его не задевает.

Р8 · Три мелкие правки одним списком#

  1. D-09, строка в матрице о лишней оси неверна. Записано «первый кандидат на вычёркивание — окно сосуществования»; на прогоне вычеркнулась наблюдаемость отличия версий, а окно как раз различает формы. Строку исправить (находка 13).
  2. Указатель D-01 ↔ D-10. Пятый дисквалификатор D-10 столкнулся с выбором одного контура хранения из D-01; ни одна шапка о другой не знает. По правилу 02-versioning v1.3 указатель версии не даёт (находка 18).
  3. Ограничение проверки взаимности записать рядом с правилом. Машина сверяет взаимность существующих ссылок и об отсутствующей паре сказать ничего не может; это надо назвать прямо, чтобы зелёная проверка не читалась как «граф полон» (находка 18).

Рекомендую A: внести все три.

Внесено 2026-09-22 — D-09 v3.1, 02-versioning v1.4, пара указателей#

1. D-09: кандидат на вычёркивание снят вовсе, а не исправлен. План говорил «строку исправить». Заменять одну догадку другой значило бы повторить ошибку с другим именем: разбор показал, что вредна сама подсказка. Названный заранее кандидат подтачивает правило, рядом с которым стоит: автор склонен вычеркнуть ту ось, про которую ему сказали, что она лишняя. Прежний текст приведён целиком и разобран — вычеркнулась наблюдаемость отличия версий, а окно сосуществования как раз различало формы: у одной задано сроком между шагами, у другой не возникает вовсе.

2. Пара D-01 ↔ D-10 заведена. В D-01 — «можно ли измерителю обещания делить хранилище с измеряемым»; в D-10 — «во что обходится отдельный контур хранения, которого требует пятый дисквалификатор». Версии ни одному не дано: по правилу указатель на соседа — не пересмотр.

3. Ограничение проверки записано рядом с правилом, и из него вышло само правило. Машина сверяет взаимность существующих ссылок; об отсутствующей паре она сказать не может ничего — два документа, не знающие друг о друге, для неё неотличимы от двух несвязанных. Зелёная проверка означает «нет односторонних ссылок», а не «граф полон». Отсюда добавленное следствие: пара, обнаруженная столкновением на прогоне, заводится в тот же день — машина о ней не напомнит.

О классе. План назвал Р8 «правкой», но в правилах версионирования класса ниже MINOR нет — есть только три поимённых случая «не пересмотр», и ни одна из двух содержательных правок в них не попадает. Поэтому D-09 получил v3.1, 02-versioning — v1.4, а бесплатной осталась только пара указателей, для которой такой случай как раз назван.

Старым ADR перепроверять нечего. Единственный ADR по D-09 v3.0 — ADR-0007 — вычеркнул верную ось, не послушав подсказки; U-01 · ADR-0002 написан по D-09 v1.0, когда матрицы ещё не было.

Р9 · Стадия как свойство: общее и специфичное внутри шага#

Развилка переписана 2026-09-22 после разбора. Прежняя редакция предлагала выбор между строкой в D-05 и перестановкой шагов; предложение John'а устроено иначе и лучше: шаги и их порядок остаются, внутри каждого шага сначала общее, потом специфичное по случаю со своим набором шаблонов, а там, где шаблон обслуживает несколько случаев, — пояснение, как им пользоваться в каждом.

На чём это стоит#

Довод прежней редакции — «одно наблюдение — не основание» — не выдержал пересчёта. По четырём прогонам наблюдений семь: у гринфилда не существует пометки [замер] (E-01); D-03 противоречит себе на гринфилде (E-01); D-05 появился потому, что D-02 на гринфилде неприменим; реестр копий D-07 читается наоборот; цена знания D-11 читается наоборот; порядок шагов оказался неверным (находка 7); у первого выката нечего откатывать.

Шаги при этом действительно остаются все. Ни один из четырёх прогонов не исключил ни одного шага — исключались только документы; оба списка «не планируем применять» состоят из D-NN.

Применимость оказалась не одна, а три разные#

Вид Пример из прогонов Закрывается ли предложенной структурой
1. Документ неприменим целиком D-02 на гринфилде, D-05 на работающей Да, полностью: в шаге просто нет этого шаблона для этого случая
2. Документ применим, вопрос читается наоборот Реестр копий D-07: опрос против решения. Цена знания D-11: покупка против закладки Да, и лучше маршрутизации: маршрут умеет включать и выключать документ, «тот же шаблон, другое прочтение» он выразить не может
3. Правило внутри документа на этой стадии не срабатывает — молча Шестой дисквалификатор D-06 требует замера, которого нет; «откат ни разу не исполнялся» D-09 на первом выкате; нулевой вариант D-01 «расширить имеющееся», когда расширять нечего Нет: живёт ниже уровня шага. Пояснение может предупредить, но не может починить правило

Третий вид дороже двух первых: в ADR-0006 дисквалификатор не сработал, и заметить это удалось только потому, что писались замечания.

Стадий три, но они не равноправны#

Набор уже называет третью — «система под изменением», и D-08 объявляет себя её первым документом. Но на гринфилде её не бывает: переходить не от чего. Значит, «под изменением» — не третья стадия рядом с двумя, а режим работающей системы, и документ, применимый к работающей, применим и под изменением, если не сказано иначе. Это правило наследования дешевле, чем три независимых списка, и его можно проверять машиной.


Р9.1 · Где живёт стадия и что делает машина#

Вариант Что делаем Чем плох
A Только поле «Стадия» в шапке каждого документа Читатель шага не видит списка: чтобы узнать, что брать на W4, надо открыть одиннадцать шапок
B Только перечень шаблонов по случаям внутри шага Машина ничего не проверяет; шапки продолжают объявлять стадию четырьмя разными способами, как сейчас
C И то и другое, а check.py сверяет их на равенство Пятнадцать строк проверки; два места вместо одного — но это одна правда в двух отображениях, а не второй источник правды

Рекомендую C. Правило набора запрещает вторую копию тогда, когда её ничто не синхронизирует — именно этим был плох удалённый хвост 00-workflow.md. Под машинной сверкой запрет не действует.

Р9.2 · Как устроен шаг#

Вариант Что делаем Цена
A Общая часть плюс блок на каждый случай — во всех двенадцати шагах Единообразно, но восемь шагов получат три одинаковых блока: место, где расхождение заведётся само
B Общая часть у всех; блок по случаям только там, где различие настоящее — W1, W3, W4, W9, частично W0. У остальных одна строка «на всех стадиях одинаково» Неединообразно на вид, зато каждое различие настоящее
C Общая часть плюс сноски вместо блоков Сноску не читают при работе по шагу

Рекомендую B. Пустой блок «на этой стадии ничего особенного» — приглашение заполнить его чем-нибудь; строка «одинаково» этого не приглашает.

Р9.3 · Третий вид применимости — правило внутри документа#

Вариант Что делаем Класс
A Местная пометка [стадия: …] на вопросе или дисквалификаторе, который на этой стадии не срабатывает, плюс правило в мастер-шаблоне: правило, неприменимое на стадии, помечается, а не молчит MINOR мастеру, MINOR D-01, D-06, D-09
B Те же пометки в трёх документах, без правила в мастер-шаблоне MINOR трём документам
C Не делать: предупреждать в пояснении шага —

Рекомендую A. Техника уже есть в наборе — [продукт], [проба], [режим] — и добавляется без нового механизма. B чинит три известных случая и оставляет четвёртый на удачу; C оставляет правило молчащим там, где оно и молчало.

Р9.4 · Диаграмма#

Вариант Что делаем
A Не делать: порядок шагов не меняется, значит маршрут у всех случаев один, и показывать нечего сверх таблицы
B Таблица применимости двенадцать на три в рабочем процессе — не диаграмма
C Сначала проверить, есть ли возврат между шагами, специфичный для случая (кандидат: на системе под изменением W9 вскрывает решение W3 — переезд данных меняет выбор хранилища). Если такой возврат есть — диаграмма его показывает и окупается; если нет — B

Рекомендую C. Диаграмма окупается ровно тогда, когда показывает то, чего таблица показать не может: не «что применимо», а куда процесс возвращается. Проверка дешёвая — один проход по находкам четырёх прогонов, — и её результат определяет, нужна диаграмма или нет.

Что всё это стоит вместе#

Что Объём
Поле «Стадия» в одиннадцати шапках не пересмотр — метод не меняется, старым ADR перепроверять нечего
Правило наследования «под изменением ← работающая» строка в мастер-шаблоне
Блоки по случаям в четырёх-пяти шагах правка рабочего процесса, версий у него нет
Пометки [стадия: …] MINOR трём документам
Проверка в check.py около пятнадцати строк

Итого две-три итерации и ни одного MAJOR.

Внесено 2026-09-22 — Р9.1·C: мастер-шаблон v6.4, одиннадцать шапок, рабочий процесс, tools/check.py#

Словарь стадий и правило наследования записаны в мастер-шаблон отдельным разделом. «Под изменением» объявлено режимом работающей системы, а не третьей стадией рядом с двумя: на гринфилде её не бывает, переходить не от чего. Отсюда наследование — документ, применимый к работающей, применим и под изменением, если не сказал иного, — и отдельная пометка «под изменением» остаётся только там, где документ вне этого режима не нужен.

Побочное следствие, которого план не предвидел: это отменяет самообъявление D-08 и D-09 «документами третьей стадии» как описание места в наборе. D-08 остаётся единственным «под изменением» — но по предмету, а не по стадии: переход и есть его предмет. D-09 же применялся на гринфилде (ADR-0007), и его стадия — обе.

Поле «Стадия» заведено во всех одиннадцати шапках. Формат: значения через ·, затем — и оговорка. Машина читает только левую часть, оговорка — для читателя.

Стадия Документы
Только работающая D-02
Только гринфилд D-05
Только под изменением D-08
Обе D-01, D-03, D-04, D-06, D-07, D-09, D-10, D-11 — восемь из одиннадцати

Стадия ограничивает документ реже, чем казалось: трое из одиннадцати. Это результат разбора, а не оценка: по четырём прогонам исключения были по отсутствию предмета («переезда данных нет», «участников поперёк границ нет», «кончится умолчанием»), и ровно дважды — по стадии: D-05 в E-03 («не гринфилд») и D-02 в U-02 («истории изменений нет»). Для Р9.2 это хорошая новость: блоков по случаям понадобится мало, что и предполагал вариант B.

Вторая копия — строка «Документы шага» в каждом из двенадцати шагов рабочего процесса, со стадиями. Там, где документов нет, стоит «нет — шаг идёт по карточкам»: пустого места, приглашающего что-нибудь вписать, не осталось.

Одиннадцатая проверка сверяет шапку со строкой шага на равенство, ловит неизвестное значение стадии, документ, не названный ни в одном шаге, и документ, названный в двух. Она отчиталась зелёным сразу — поэтому я проверил её на подлоге: временно объявил D-03 только работающей, проверка выдала «шапка: «работающая», шаг: «гринфилд · работающая»», после чего файл возвращён.

Внесено 2026-09-22 — Р9.2·B: рабочий процесс, блоки по стадиям#

Блок «по стадиям» стоит на пяти шагах из двенадцати — W0, W1, W3, W4, W9; у остальных семи одна строка «на всех стадиях одинаково». Список совпал с предложенным в плане, но выведен заново, и ценнее списка оказался критерий, по которому он выводится.

Критерий: блок ставится там, где стадия меняет то, что шаг делает, а не то, как читается правило внутри документа. Второе — дело самого документа: поля «Стадия», правила о гринфилде в мастер-шаблоне или местной пометки. Без этой границы блоки размножаются: почти в каждом шаге найдётся документ, который на гринфилде читается иначе.

Два ближайших промаха названы прямо в рабочем процессе, чтобы граница была видна, а не только соблюдена: W2 — знание о потребителях на гринфилде закладывается, а не покупается; W5 — узкое место нечем подтвердить замером. Оба меняют чтение D-11 и D-03, но не меняют работу шага, и блока не получили. При первом же расширении набора спор пойдёт ровно об этих двух — теперь есть, к чему апеллировать.

«Под изменением» своей колонки почти нигде не имеет — по правилу наследования из Р9.1. Она появилась дважды: у W3, где шаг раздваивается, и у W9, где две версии работают одновременно и наблюдаемость обязана их различать.

Два дубля свёрнуты по ходу. Блок W3 повторил абзац «если система уже работает, шаг раздваивается», а блок W4 — список «два решения по стадии проекта». Правило набора запрещает вторую копию там, где её ничто не синхронизирует, и здесь синхронизировать было нечем: обе копии — проза. Уникальное содержание перенесено в блоки, абзац и список свёрнуты.

Внесено 2026-09-22 — Р9.3·A: мастер-шаблон v6.5, D-01 v2.2, D-06 v3.2, D-09 v3.2#

Правило в мастер-шаблоне названо через то, чем плохо его отсутствие: молчащее правило выглядит как пройденная проверка — ячейка «не сработал» ничем не отличается от честного «проверено, не подходит». На прогоне это заметили только потому, что параллельно писались замечания, то есть случайно.

Разобраны три формы вместо одной: правило не срабатывает (входа нет), срабатывает всегда (перестаёт различать и превращается в работу до), читается наоборот (ответ становится решением). И названа граница, которой в плане не было: правило, от которого на стадии не остаётся ничего, помечать нельзя — оно выносится в отдельный документ, как D-05 из D-02. Пометка говорит «здесь другой результат», а не «здесь можно пропустить».

Состав трёх документов разошёлся с планом в обе стороны, и оба раза — по проверке.

Что значилось в плане Что вышло
D-06: шестой дисквалификатор требует замера, которого нет Закрыт раньше — правкой Р4·B в v3.0, где замер стал считаться чужим. Пометка не нужна. Вместо него помечен второй дисквалификатор: на гринфилде исполнять ещё нечего, он срабатывает на любой вариант
D-09: «откат ни разу не исполнялся» Помечены два: к нему добавился «критерий отката не выражен числом» — базовой линии на первом выкате тоже нет
D-01: нулевой вариант «расширить имеющееся» Как в плане. Прежде это стояло прозой в конце абзаца; добавлено, что исчезает вариант, а не вопрос

У D-09 два помеченных дисквалификатора закрываются одним действием — нагрузочной репетицией с исполненным откатом, — и это записано отдельным абзацем: до репетиции выкатывать нельзя, и это не осторожность, а прямое следствие двух правил. ADR-0007 вывел оба вручную и пришёл к репетиции сам.

Проверка стадий расширена на пометки — тот же словарь, что у поля шапки. Это продолжение одиннадцатой проверки из Р9.1, а не двенадцатая: проверяется одно и то же множество значений в двух местах. Мастер-шаблон из проверки исключён — он описывает форму пометки и содержит образцы. Проверено на подлоге: опечатка «гринфильд» в D-01 поймана, файл возвращён.

Внесено 2026-09-22 — Р9.4·C: проверка проведена, диаграммы и таблицы не будет#

Вариант C требовал сначала проверить, есть ли возврат между шагами, специфичный для стадии, и только потом решать. Проверка — сплошной проход по пяти файлам находок, пяти планам правок, всем двадцати одному ADR, трём файлам предсказаний и рабочему процессу.

Возвратов между шагами в материале шесть. Ни один не специфичен для стадии.

# Возврат Где Стадия
В1 W4 → W3 — два дисквалификатора D-05 сработали по уже принятым ADR-0002 и ADR-0003 U-02 гринфилд
В2 W4 → W0 — дисквалификатор о кванте отсекает требование, а не разрез E-03 и U-02 работающая и гринфилд
В3 W3 → W1 — 0,17 подачи в секунду обернулись 933 обращениями U-02, парный случай в E-02 обе
В4 W6 → W2 и W7 → W2 — охват обещания достраивался дважды задним числом U-02 гринфилд
В5 W0 ↔ W3 — «измеритель не падает с измеряемым» против одного контура хранения U-02 гринфилд
В6 W5 → W1 — замер снят со схемы, которой после ADR-0001 не существует E-02 работающая

Решающий довод — В2: единственный возврат, встретившийся больше одного раза, встретился на двух разных стадиях. Специфичность им опровергнута, а не оставлена непроверенной. Второй довод: рабочий процесс уже объявил В3 общим для стадий прямым текстом. Третий: пять возвратов из шести — в U-02, но E-01 той же стадии не дал ни одного; объясняет это ширина прогона, а не стадия.

Гипотеза развилки не подтвердилась, и это записано отдельно. Кандидат был «на системе под изменением W9 вскрывает решение W3 — переезд данных меняет выбор хранилища». Единственный прогон третьей стадии, U-01, шага W9 не проходил вовсе: слов «W9», «наблюдаемость», «эксплуатация» в его папке нет ни разу, а D-08 и D-09 писались одновременно одной записью. Ближайший похожий случай — В5 — совпадает только предметом: документ там D-10 со стадии W0, стадия гринфилд, причина — измеритель, а не переезд.

Оговорка, без которой вывод сильнее данных. Для гринфилда и работающей это «проверено и нет» по четырём прогонам. Для стадии «под изменением» это «не проверено»: сквозного прогона по ней нет ни одного. Вывод остаётся в силе до первого такого прогона — и там его надо перепроверить первым делом.

Почему не будет и таблицы. Вариант B предлагал таблицу применимости двенадцать на три. После Р9.2 она стала третьей копией одного знания: поле шапки, строка шага, блок по стадиям — и таблица сверх них. Первые две сверяются машиной, таблица не сверялась бы ничем, а правило набора запрещает вторую копию именно там, где её нечем синхронизировать. Развилка писалась до Р9.2, и её B этого учесть не мог.

Итог совпал с вариантом A — «не делать», — но пришёл по маршруту C и по другой причине: не «показывать нечего», а «всё уже показано дважды и сверяется».

Побочная находка, которой в развилке не было — кандидат в следующий план ревизии. Диаграмма рабочего процесса рисует три возврата: W5→W1, W6→W3, W11→W0. Прогонами подтверждён один и пограничным образом (W5→W1, В6); W6→W3 и W11→W0 не встретились ни разу. А два самых отчётливых — W4→W3 и W4→W0, единственный повторившийся, — на диаграмме отсутствуют. Трогать диаграмму сейчас я не стал: это вне принятых развилок.

Р10 · Артефакты, уезжающие наружу, никто не считает#

Находка 21. Квитанций оказалось три рода на одну подачу, каждая юридически значима. Родились они в трёх независимых решениях — ADR-0001, ADR-0005, ADR-0006, — каждое добавило по одной. Ни один документ не спросил, сколько их всего.

Вариант Что делаем Класс
A Ничего: наблюдение записано в находках —
B Правило в мастер-шаблон: если несколько решений порождают артефакты, уезжающие наружу, их перечень сводится в одном месте и входит в охват обещания MINOR мастера
C Новый документ решения о необратимых артефактах новый документ

Рекомендую B. C заводит документ под одно наблюдение — рано. A оставляет дыру, которая уже сработала: три квитанции появились незаметно, и заметить их удалось только на ревизии.

Внесено 2026-09-22 — мастер-шаблон v6.3, раздел «Связанные решения записываются вместе»#

Правило поставлено в раздел о связанных решениях, а не в правила заполнения: это тот же провал — потерянная сумма, только собирается она не из параметров, а из артефактов. Названо отдельным случаем прямо, чтобы не выглядело повтором.

Формулировка объясняет, почему сумма теряется: артефакт рождается внутри решения, для которого он не главное — решали про совместимость, про связность процесса, про деградацию, а наружу каждый раз уехало по одному. Признак дан машинно-проверяемый на глаз: ни одно решение не знает общего числа.

Добавлена связка, которой в плане не было: перечень входит в охват обещания, и артефакт, в него не попавший, не защищён ничем — ровно как исключённое из охвата в D-11 v2.0 по Р1. Две правки одного прогона сошлись в одну мысль, и теперь это видно из текста.

Оговорка «чем это не является» отвергает вариант C словами самого правила: свести перечень — дёшево, завести документ — нет.


Что будет после#

Три MAJOR. D-11 → v2.0 (Р1), D-05 → v4.0 (Р2), D-06 → v3.0 (Р4·B) — все три внесены. Мастер-шаблон получает MINOR по Р3, Р4, Р10 и, при выборе Р9.3·A, по Р9. Правок вышло три, а не одна. v6.3 (2026-09-22) закрывает Р3, словарную половину Р4 и Р10 — три правки чисто мастерские и независимые. v6.4 (2026-09-22) закрывает Р9.1: поле «Стадия», словарь из трёх значений и правило наследования — они нужны машинной сверке сразу и не ждут остальной работы по Р9. v6.5 (2026-09-22) закрывает Р9.3 — правило о пометке [стадия: …], внесённое вместе с тремя MINOR документов, которым пометка ставится.

Строка совместимости обновлена одному — D-06. Общее правило верно: MINOR мастера её не трогает (правило). Исключение по существу: D-06 v3.0 опирается на словарь, которого в v6.0 не было, и объявлять совместимость с v6.0 значило бы сказать неправду.

Старым ADR. У D-11 и D-05 он один и тот же — этого прогона, и он не переписывается: ADR по прежним версиям намеренно остаются. Что в них перепроверить, скажут строки истории.


Что вышло#

Развилок 10, внесены все
Итераций 13 — Р9 заняла четыре
MAJOR 3: D-11 v2.0, D-05 v4.0, D-06 v3.0
MINOR документов 7: D-04, D-06 (×2), D-09 (×2), D-10, D-01, 02-versioning
Версий мастер-шаблона 3: v6.3, v6.4, v6.5
Новых документов решений 0
Проверок в check.py было 10, стало 11

План разошёлся с исполнением пять раз, и каждый раз из-за проверки, а не из-за вкуса:

Где Что говорил план Что вышло
Р4 пометка + D-06 MAJOR одной правкой Две итерации: словарь в мастер v6.3, дисквалификатор в D-06 v3.0
Р8 класс «правка» Класса ниже MINOR в правилах нет — D-09 v3.1 и 02-versioning v1.4
Р9 мастер получает MINOR «одной правкой, v6.3» Три версии: v6.3, v6.4, v6.5
Р9.3 пометить шестой дисквалификатор D-06 Он закрыт раньше, в v3.0. Помечен второй; у D-09 помечены два вместо одного
Р9.4 таблица двенадцать на три, если возврата нет Ни диаграммы, ни таблицы: после Р9.2 таблица стала третьей копией

Четыре кандидата в следующий план ревизии — правила, до которых работа дошла, но которые вне принятых развилок:

  1. Строка совместимости и MINOR мастера. Правило «MINOR мастера её не трогает» нуждается в оговорке: кроме документа, который начал пользоваться добавленным. Один случай уже есть — D-06 v3.0.
  2. Ссылка на несуществующий файл не ловится ничем. Десять проверок её пропускают; сплошной разбор 2 500 ссылок сделан вручную и был чист. Кандидат в двенадцатую проверку.
  3. Диаграмма рабочего процесса расходится с прогонами. Из трёх нарисованных возвратов подтверждён один; два самых отчётливых — W4→W3 и W4→W0 — не нарисованы. Разбор в Р9.4.
  4. D-05 не говорит, что делать при неснимаемом дисквалификаторе. «Пришлось отзывать требование» — вывод из обстановки, а не из документа; ADR-0004 называет это прямо.