язык записи опёрт на стандарты, словарь стал параметром
- шкала обязательности объявлена инвариантом, а набор ключевых слов — параметром естественного языка набора: для английского готовый словарь даёт BCP 14, для прочих берут перевод стандарта или делают свой; отклонены синонимы ступеней и `SHALL`, занятый OpenSpec - применены шесть дельт: нормативно только заглавное написание (RFC 8174), ДОЛЖЕН требует названного вреда и машинной проверки сразу, ДОПУСКАЕТСЯ адресовано рецензенту, МЕХАНИЗИРОВАНО выведено из шкалы в отметку рядом с модальностью (ISO/IEC/IEEE 29148), у таблиц объявлены политика совпадения и полнота (DMN) - «Форма записи — LANGUAGE.md» в двенадцати конвенциях заменена строкой о версии языка по образцу boilerplate BCP 14: пути канона в копии не существует, а словарь и правило заглавных строка несёт сама
This commit is contained in:
@@ -21,15 +21,28 @@ code in this repository.
|
||||
`**МОДАЛЬНОСТЬ.** норма`, абзац `**Почему.** …`. Правило без «Почему» не
|
||||
принимается.
|
||||
- Норма — одна фраза; если в неё не влезает, это два правила.
|
||||
- Модальные слова: **ДОЛЖЕН**, **НЕ ДОЛЖЕН**, **СЛЕДУЕТ**, **НЕ СЛЕДУЕТ**,
|
||||
**ДОПУСКАЕТСЯ**, плюс не-модальная отметка **МЕХАНИЗИРОВАНО**. Английские
|
||||
ключевые слова (SHALL, MUST) не используются — они заняты OpenSpec.
|
||||
- Модальные слова не употребляются вне правил: ни в «Область действия», ни в
|
||||
«Связано», ни в локальной части копии, ни во вводной прозе.
|
||||
- Шкала инвариантна, словарь — параметр языка набора. Канон русский, значит
|
||||
слова: **ДОЛЖЕН**, **НЕ ДОЛЖЕН**, **СЛЕДУЕТ**, **НЕ СЛЕДУЕТ**,
|
||||
**ДОПУСКАЕТСЯ**. Словарь один на канон, синонимов на ступень нет.
|
||||
- `SHALL` не используется ни в одном словаре — занято OpenSpec.
|
||||
- Нормативно только заглавное написание (правило RFC 8174): строчное
|
||||
«должен» в прозе нормой не является.
|
||||
- ДОЛЖЕН требует двух условий сразу: нарушение причиняет названный вред
|
||||
и норма проверяема машиной. Проверяемость сама по себе до ДОЛЖЕН не
|
||||
повышает.
|
||||
- ДОПУСКАЕТСЯ адресовано рецензенту: помеченный им выбор на ревью не
|
||||
обсуждается.
|
||||
- **МЕХАНИЗИРОВАНО** — не модальность, а способ проверки: отметка стоит
|
||||
рядом с модальным словом (`**ДОЛЖЕН. МЕХАНИЗИРОВАНО.**`), а не вместо него.
|
||||
- Заглавные модальные слова не употребляются вне правил: ни в «Область
|
||||
действия», ни в «Связано», ни в локальной части копии, ни во вводной прозе.
|
||||
Исключение — строка о версии языка, которая их перечисляет.
|
||||
- «Почему» отвечает на «что сломается, если сделать иначе», а не
|
||||
пересказывает норму. «Потому что так принято» — не обоснование.
|
||||
- Правило, классифицирующее ситуации, пишется таблицей «ситуация → вердикт»;
|
||||
строки нумеруются `KEYS-5.1`.
|
||||
строки нумеруются `KEYS-5.1`. Строки взаимоисключающи по умолчанию; иной
|
||||
порядок объявляется явно, а перечисленные случаи покрывают область
|
||||
действия.
|
||||
- Модальность принадлежит правилу, а не файлу: `status:` в шапке отменён.
|
||||
|
||||
## Идентификаторы и префиксы
|
||||
@@ -88,8 +101,9 @@ code in this repository.
|
||||
|
||||
## Оформление файла
|
||||
|
||||
Шапка `prefix:` (плюс `extends:`) → `# Тема` → вводная проза со строкой
|
||||
«Форма записи — `LANGUAGE.md`» → `## Область действия` (обязателен для
|
||||
Шапка `prefix:` (плюс `extends:`) → `# Тема` → вводная проза → отдельным
|
||||
абзацем строка о версии языка (её точный текст — в `LANGUAGE.md`, раздел
|
||||
«Ссылка на язык из конвенции») → `## Область действия` (обязателен для
|
||||
трудноизменяемых слоёв — META-11) → правила → `## Связано` только с
|
||||
каноническими ссылками (META-17). Имя файла — kebab-case по теме. Проза
|
||||
переносится по ~76 колонок; таблицы и блоки кода не переносятся.
|
||||
|
||||
Reference in New Issue
Block a user