- область правила — от его заголовка до следующего заголовка любого уровня;
метка открывает блок, хвост после ПОЧЕМУ — продолжение обоснования, а
таблица после модальной метки — часть нормы
- проверка «заглавных модальных слов вне правил нет» стала реализуемой:
прозой считается то, что лежит вне областей правил
- нормы, сидевшие в хвостах, подняты в блок нормы: заведены SLOG-25.4 и
GERR-26.3, у GTIM-12 «базовый слой» заменён на TIME-12
- META-6 переписан: ступень требует не машинной проверки, а того, чтобы
двое проверяющих по тексту правила выносили один вердикт; проверяющий по
умолчанию — читатель, человек или агент
- заведён META-27: машинная проверка желательна везде, где пишется, но
ступени не задаёт — иначе канон стоит в СЛЕДУЕТ до появления скриптов;
обоснование META-25 пересобрано на новом условии
- LANGUAGE.md и CLAUDE.md приведены к той же формулировке, вопрос 1 из
TODO закрыт, остальные перенумерованы
- метка обоснования пишется заглавными и вошла в словарь набора: скелет
правила теперь целиком из ключевых слов, а не смесь `**ДОЛЖЕН.**` и
`**Почему.**`; в переводе на другой язык метка меняется как остальные слова
(ПОЧЕМУ / WHY), 235 вхождений заменены
- метки правила выделены из шкалы в отдельный перечень: ПОЧЕМУ и
МЕХАНИЗИРОВАНО обязательности не задают, а размечают части, и стандартом не
даются ни в одном языке — раньше МЕХАНИЗИРОВАНО висело строкой в таблице
модальности
- версия языка поднята до 2, потому что изменение формы меняет чтение уже
написанного текста; строка о версии в двенадцати конвенциях перечисляет
теперь и метки, а служебные слова сценария в неё по-прежнему не входят
- запрет слов обязательства в «Почему» был лишним по построению: правило о
заглавных уже делает строчное «обязан» ненормативным, так что второй копии
нормы не возникает, а цена — автор воюет со списком слов вместо объяснения
- в LANGUAGE записано прямо: рамки у обоснования только смысловые, длина,
рассуждение, примеры и ссылки на внешние практики и чужие проекты допустимы
- заведён раздел «Освободившиеся номера»: META-16 и META-26 с причинами. Без
такого списка упоминание номера в прозе не отличить от ссылки на исчезнувшее
правило — это же нужно будущей проверке ссылок
- «Почему» не пересказывает норму словами обязательства: у оригинала есть
идентификатор, у копии нет, и расходятся они при первой правке оригинала, а
отступление от копии адресовать нечем
- модальность рекомендательная по META-6: греп находит слово, а не нарушение
— «за попыткой следует повтор» и «становится обязанностью вызывающего»
описывают ход событий; утверждения о невозможности («нельзя») правилом не
затрагиваются, это ISO-евская возможность в прозе
- SLOG-12 починен: факт о том, что `slog` не разделяет CRITICAL и FATAL, уехал
из нормы в «Почему», а норма теперь говорит то же, что заголовок
- ДОЛЖЕН выбирается, только когда в «Почему» сказано, что ломается при
нарушении: до сих пор обязывало лишь второе условие (META-6, машинная
проверка), и любую проверяемую мелочь можно было пометить ДОЛЖЕН
- модальность самого правила — СЛЕДУЕТ, и это не слабость: «вред назван»
устанавливается чтением, значит по META-6 иначе и быть не может
- kebab-case в именах файлов пересобран как пример META-25: проверяется
регуляркой тривиально, но вреда нет — потому правилом и не записан
- `КОГДА`, `ТОГДА`, `И`, `ИЛИ` (по-английски WHEN/THEN/AND/OR) подчиняются тем
же требованиям, что модальные слова: одна форма на роль, заглавными, набор
один на канон и выбирается под естественный язык
- модальностью они не являются — обязательности не задают, только структуру,
поэтому в строку о версии языка не попадают и под проверку «модальные слова
вне правил» не подпадают
- единственный сценарный блок канона (SLOG, «Два цикла повтора») переписан с
WHEN/AND на русские связки; отказ от `GIVEN/WHEN/THEN` уточнён — он касается
общей формы записи, а на стыке правил эта форма взята сознательно
- языковой и стековый слои называют идентификатор правила арх-слоя своей темы
прямо в норме: подписываются темой, а не слоем, поэтому базовый слой в
собранной копии присутствует всегда и ссылка не ведёт в пустоту
- разрешение узкое по построению — на слои других языков и стеков не
распространяется, их состав в копии зависит от манифеста
- из META-21 убрано предписание ссылаться на свой слой словами «базовый
слой»: слова не проверяются и не ведут к утверждению, а идентификатор ведёт
- 31 регион `<!-- local:имя -->` в двенадцати файлах удалён, а не перенесён:
локальное принадлежит копии и живёт ниже маркера `<!-- conv:local -->`
(META-22), так что наполнять регионы в каноне нечем
- вместе с ними ушли два опустевших раздела «Связано» — в arch и ansible
слоях app-directories канонических ссылок нет, а пустой заголовок ничего
не адресует; CLAUDE.md уточнён: раздел заводят, когда ссылки есть
- форма проверена скриптом: у всех правил модальность и «Почему», префиксы
сходятся с реестром, дыр в нумерации нет
- шкала обязательности объявлена инвариантом, а набор ключевых слов —
параметром естественного языка набора: для английского готовый словарь
даёт BCP 14, для прочих берут перевод стандарта или делают свой; отклонены
синонимы ступеней и `SHALL`, занятый OpenSpec
- применены шесть дельт: нормативно только заглавное написание (RFC 8174),
ДОЛЖЕН требует названного вреда и машинной проверки сразу, ДОПУСКАЕТСЯ
адресовано рецензенту, МЕХАНИЗИРОВАНО выведено из шкалы в отметку рядом с
модальностью (ISO/IEC/IEEE 29148), у таблиц объявлены политика совпадения
и полнота (DMN)
- «Форма записи — LANGUAGE.md» в двенадцати конвенциях заменена строкой о
версии языка по образцу boilerplate BCP 14: пути канона в копии не
существует, а словарь и правило заглавных строка несёт сама
- именованные регионы `<!-- local:имя -->` заменены на единственный
`<!-- conv:local -->`: всё ниже него принадлежит репозиторию, всё выше
пересобирается, поэтому имени-которое-можно-осиротить больше нет
- лок-файла и `origin_hash` в шапке нет — «что было в прошлый раз» знает git,
копии закоммичены, автоматического обновления не существует; транспорт
назад (`push`) убран вместе с ними
- заведены META-22 (репозиторное пишется ниже маркера) и META-23 (форк не
носит `origin:`), META-17 переписан под маркер; буква `X` в префиксе
зарезервирована за локальными правилами потребителей
- одиннадцать открытых вопросов по сборке, тулингу и разделению языка и
набора конвенций: в переписке они теряются, а часть уже противоречит
README, и это противоречие видно только рядом с текстом
- снята строка «Не коммитится» и поправлено то же утверждение в CLAUDE.md
- одна строка на правило с идентификатором, как требует META-19: форма
правила, схема префиксов, META-20/META-21, выбор оси, оформление файла
- зафиксирован стиль коммитов и то, что README описывает текущее
устройство, а TODO.md — площадка для обсуждения, а не решения