todo: заведены четыре открытые темы по языку записи

- 12: `WHEN`/`AND` в блоке стыка правил — английские служебные слова там же,
  где `SHALL` отклонён как занятый OpenSpec; либо перевод, либо явная
  оговорка, что форма спецификации в этом месте намеренна
- 13: критерий «названного вреда» для ДОЛЖЕН описан в языке, но правила под
  него нет — META-6 обязывает только понижать при отсутствии проверки
- 14 и 15: одиннадцать таблиц не прочитаны на взаимоисключительность
  (подозреваемый SLOG-11), и канон не просмотрен на факты, записанные
  модальным словом
This commit is contained in:
av
2026-07-26 13:43:45 +03:00
parent 9318087248
commit c04a54ffd5
+66
View File
@@ -240,6 +240,72 @@ Go-бинарь со своим релизным циклом, ставить ч
говорит «чужой темы», и второе правило про то же место придётся держать
согласованным с первым.
## 12. `WHEN`/`AND` в блоке стыка правил
Блок для стыка двух правил записан английскими словами:
```
WHEN зависимость недоступна и ретраи вызова исчерпаны → ext-запись ERROR
AND тик фонового цикла упал по той же причине → доменная запись WARN
```
Рядом сказано, что `SHALL` не берётся ни в один словарь, потому что занят
OpenSpec. `WHEN` и `AND` — из того же набора и по той же причине должны бы
не браться, но взяты. Это нестыковка, а не решение.
Варианты:
- **перевести** на `КОГДА` / `И`: словарь набора один, и служебные слова
внутри канона следуют ему же;
- **оставить и объяснить**: блок стыка описывает поведение системы во
времени, а не выбор автора, — то есть это единственное место, где форма
спецификации уместна, и заимствование её синтаксиса намеренно.
Второе честнее по смыслу (субъект там действительно система), но требует
явной оговорки в `LANGUAGE.md`, иначе читается как недосмотр. Заодно решить,
подпадают ли `WHEN`/`AND` под проверку «заглавные модальные слова не
встречаются вне правил»: сейчас формально нет, потому что в словаре их нет.
## 13. Критерий «названного вреда» никого не обязывает
`LANGUAGE.md` говорит, что ДОЛЖЕН требует двух условий сразу: нарушение
причиняет названный вред (критерий BCP 14) и норма проверяема машиной
(META-6). Но правила под первое условие нет: META-6 работает только в одну
сторону — «нет машинной проверки, понижай в СЛЕДУЕТ». Обратной, «проверка
есть, а вреда нет — не повышай», не существует, и автор ничем не связан.
Решить, заводить ли META-24 под первое условие или оставить его семантикой
шкалы в описании языка. За правило: механически проверяемых мелочей больше,
чем важных вещей, и без нормы шкала размывается тем же способом, от которого
META-6 её защищает. Против: критерий «вред назван» проверяется чтением, а не
машиной, — то есть по META-6 сам он может быть только СЛЕДУЕТ.
## 14. Одиннадцать таблиц не прочитаны на взаимоисключительность
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
такими: нумерованные строки есть в одиннадцати файлах канона, и ни одна
таблица под новое требование не прочитана.
Конкретный подозреваемый — SLOG-11: «по реальному действию или изменению»
против «повторяющаяся служебная, по таймеру или поллингу». Периодическая
операция, которая всё-таки меняет данные, подходит под обе строки, и уровень
из таблицы не выводится однозначно.
Работа читательская, машине не даётся; в список проверок она уже записана в
разделе «Чтением, потому что машине не даётся».
## 15. Возможность, записанная модальным словом
Четвёртая категория ISO — возможность и осуществимость — ключевого слова не
имеет: такие утверждения пишутся обычной прозой. Значит канон надо просмотреть
на обратную ошибку: где утверждение о факте («библиотеки по умолчанию отдают
именно его», «SQLite сравнивает строки побайтово») записано модальным словом
и тем самым превратилось в норму, которую никто не вводил.
Смотреть в первую очередь абзацы «Почему»: там факты и стоят, там же соблазн
усилить их модальностью выше всего.
## Из вчерашнего, не закрыто
- Вынос арх-ядра из `errors` и `logging`: закроет две хрупкие ссылки из