guide: заведён META-24 — ссылка слоя на идентификаторы своей базы

- языковой и стековый слои называют идентификатор правила арх-слоя своей темы
  прямо в норме: подписываются темой, а не слоем, поэтому базовый слой в
  собранной копии присутствует всегда и ссылка не ведёт в пустоту
- разрешение узкое по построению — на слои других языков и стеков не
  распространяется, их состав в копии зависит от манифеста
- из META-21 убрано предписание ссылаться на свой слой словами «базовый
  слой»: слова не проверяются и не ведут к утверждению, а идентификатор ведёт
This commit is contained in:
av
2026-07-26 13:56:43 +03:00
parent 7fca0e8cb8
commit f99a513058
4 changed files with 31 additions and 27 deletions
+6 -3
View File
@@ -69,9 +69,12 @@ code in this repository.
действия — но не в самой норме. Нужен концепт соседней темы — коротко
повторить его здесь, соседа назвать в «Почему».
- META-21: на соседнюю конвенцию ссылаются именем темы (конвенция
`logging`), на правило — идентификатором (`SLOG-27`), на другой слой своей
темы — словами «базовый слой». Пути файлов канона в тексте конвенции нет
(в обвязке — можно).
`logging`), на правило — идентификатором (`SLOG-27`). Пути файлов канона в
тексте конвенции нет (в обвязке — можно).
- META-24: слой `lang/` или `stack/` называет идентификатор правила арх-слоя
**своей** темы прямо в норме — базовый слой в собранной копии всегда рядом.
На слои других языков и стеков это не распространяется: их состав зависит
от манифеста.
## Что в каноне писать нельзя
+19 -4
View File
@@ -121,15 +121,30 @@ prefix: META
### META-21. Ссылка ведёт на тему или на правило, но не на путь в каноне
**ДОЛЖЕН.** На соседнюю конвенцию ссылаются именем темы (конвенция
`logging`), на конкретное правило — идентификатором (`SLOG-27`), на другой
слой своей же темы — словами «базовый слой». Путь файла канона в тексте
конвенции не употребляется.
`logging`), на конкретное правило — идентификатором (`SLOG-27`); путь файла
канона в тексте конвенции не употребляется.
**Почему.** В репозитории конвенция лежит собранной: слои одной темы — это
секции одного файла, и пути `lang/go/logging.md` там не существует. Ссылка
на путь канона умирает при сборке, причём молча — текст остаётся связным.
Имя темы и идентификатор правила переживают и сборку, и переезд файла между
осями.
осями. Слой своей темы поэтому называют идентификатором его правила, а не
словами «базовый слой»: слова не проверяются и не ведут к утверждению.
### META-24. Слой ссылается на идентификаторы своего базового слоя
**ДОПУСКАЕТСЯ.** Правило языкового или стекового слоя называет идентификатор
правила арх-слоя своей темы прямо в норме.
**Почему.** Подписываются темой, а не слоем: собранный файл начинается с
арх-слоя независимо от того, какие язык и стек выбраны, — базовое правило в
копии всегда рядом, и ссылка на него никуда не ведёт. Повтор его концепта
здесь заводил бы второй источник правды внутри одного документа: META-20
требует повторять концепт там, где соседнего файла может не быть, а базовый
слой отсутствовать не может. Остальные слои темы попадают в копию по
манифесту, и такой гарантии у них нет — отсюда узость разрешения. Записано
оно явно, потому что META-20 читают строже, чем он есть, и без этой строки
базу дублируют без нужды.
### META-5. Расхождение кода с правилом — отступление, а не повод переписать правило
+2 -2
View File
@@ -356,8 +356,8 @@ MIGR-6 не соблюдается в легаси-таблицах `show_histor
- заглавные модальные слова не встречаются вне правил — кроме строки о
версии языка, которая их перечисляет по назначению;
- префикс **чужой темы** не встречается в абзаце с модальностью (META-20);
префикс своего же базового слоя там допустим — в собранной копии это
соседняя секция того же файла;
префикс арх-слоя своей темы там допустим (META-24), префикс другого языка
или стека — нет;
- путь файла канона не встречается в тексте конвенции (META-21).
Чтением, потому что машине не даётся:
+4 -18
View File
@@ -107,21 +107,7 @@ Go-бинарь со своим релизным циклом, ставить ч
нечего обслуживать. Сначала 4, потом 5. Разделение из вопроса 1 при этом
дешевле заложить сразу, чем отпиливать потом.
## 6. META-20 и родительский слой своей темы
Из `lang/` и `stack/` ссылаться на идентификаторы своего же арх-слоя
безопасно: при сборке они оказываются секциями одного файла, и ссылка
никуда не ведёт — правило рядом. Ограничение META-20 писалось про **чужую
тему**, так что формально это уже разрешено, и формулировка проверки в
`LANGUAGE.md` под это исправлена.
Осталось решить одно: добавлять ли в META-20 явную строку **ДОПУСКАЕТСЯ**
про родительский слой. За — правило, которое читают строже, чем оно есть,
заставляет авторов дублировать текст без нужды. Против — норма META-20 уже
говорит «чужой темы», и второе правило про то же место придётся держать
согласованным с первым.
## 7. `WHEN`/`AND` в блоке стыка правил
## 6. `WHEN`/`AND` в блоке стыка правил
Блок для стыка двух правил записан английскими словами:
@@ -147,7 +133,7 @@ OpenSpec. `WHEN` и `AND` — из того же набора и по той ж
подпадают ли `WHEN`/`AND` под проверку «заглавные модальные слова не
встречаются вне правил»: сейчас формально нет, потому что в словаре их нет.
## 8. Критерий «названного вреда» никого не обязывает
## 7. Критерий «названного вреда» никого не обязывает
`LANGUAGE.md` говорит, что ДОЛЖЕН требует двух условий сразу: нарушение
причиняет названный вред (критерий BCP 14) и норма проверяема машиной
@@ -161,7 +147,7 @@ OpenSpec. `WHEN` и `AND` — из того же набора и по той ж
META-6 её защищает. Против: критерий «вред назван» проверяется чтением, а не
машиной, — то есть по META-6 сам он может быть только СЛЕДУЕТ.
## 9. Одиннадцать таблиц не прочитаны на взаимоисключительность
## 8. Одиннадцать таблиц не прочитаны на взаимоисключительность
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
@@ -176,7 +162,7 @@ META-6 её защищает. Против: критерий «вред назв
Работа читательская, машине не даётся; в список проверок она уже записана в
разделе «Чтением, потому что машине не даётся».
## 10. Возможность, записанная модальным словом
## 9. Возможность, записанная модальным словом
Четвёртая категория ISO — возможность и осуществимость — ключевого слова не
имеет: такие утверждения пишутся обычной прозой. Значит канон надо просмотреть