From 4cd0c97ed06270512ae7c8950ed4ebf9862a8b1b Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 26 Jul 2026 14:30:36 +0300 Subject: [PATCH] =?UTF-8?q?=D1=8F=D0=B7=D1=8B=D0=BA=20=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D1=81=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9=201,=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=B2=D0=B8=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BD=D0=BE?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D0=B0=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - бумп до 2 откачен: копий в природе нет, читать по версии 1 пока нечему, и номер сжигать незачем - вместо истории версий записано правило: номер двигается, когда изменение формы способно изменить чтение уже разданной копии; правки формы до раздачи копий его не двигают, а смена словаря под другой язык — не двигает никогда --- LANGUAGE.md | 28 +++++++++----------- conventions/arch/app-directories.md | 2 +- conventions/arch/config.md | 2 +- conventions/arch/db-identifiers.md | 2 +- conventions/arch/time.md | 2 +- conventions/lang/go/config.md | 2 +- conventions/lang/go/db-identifiers.md | 2 +- conventions/lang/go/db-schema.md | 2 +- conventions/lang/go/errors.md | 2 +- conventions/lang/go/logging.md | 2 +- conventions/lang/go/time.md | 2 +- conventions/stack/ansible/app-directories.md | 2 +- conventions/stack/htmx/web-ui.md | 2 +- 13 files changed, 24 insertions(+), 28 deletions(-) diff --git a/LANGUAGE.md b/LANGUAGE.md index d90bb44..afd9c96 100644 --- a/LANGUAGE.md +++ b/LANGUAGE.md @@ -1,5 +1,5 @@ --- -version: 2 +version: 1 --- # Язык конвенций @@ -8,7 +8,7 @@ version: 2 правилом, чем оно отличается от прозы вокруг, какими словами задаётся обязательность и как на правило сослаться извне. -Версия языка — **2**. Номер называется в каждой конвенции: словарь может +Версия языка — **1**. Номер называется в каждой конвенции: словарь может пополниться, и текст, написанный по предыдущей версии, должен читаться по той, по которой написан. @@ -221,15 +221,12 @@ Directives, Part 2, по одной форме записи на ступень, одного требования и удваивают каждую проверку; выбор языка — свойство набора, а не отдельного файла. -Смена словаря версию языка не меняет: версия принадлежит шкале и правилам -формы, а не буквам. - ## Ссылка на язык из конвенции Каждая конвенция называет язык одной строкой во вводной прозе: > Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -> ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +> ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — > тогда и только тогда, когда написаны заглавными. Слова в строке — из словаря того языка, на котором написан набор. Для @@ -237,7 +234,7 @@ Directives, Part 2, по одной форме записи на ступень, > The key words MUST, MUST NOT, SHOULD, SHOULD NOT, MAY and the marks WHY > and MECHANIZED are to be interpreted as described in the conventions -> language, version 2, and only when written in capitals. +> language, version 1, and only when written in capitals. Форма скопирована у BCP 14, где та же задача решается тем же способом: спецификация не прикладывает к себе словарь и не указывает путь к нему, а @@ -419,14 +416,13 @@ MIGR-6 не соблюдается в легаси-таблицах `show_histor - норма исполнима без обращения к другим файлам; - обоснование отвечает на «что сломается», а не пересказывает норму. -## История версий +## Версия языка -Номер версии называется в каждой конвенции, поэтому изменение формы, способное -изменить чтение уже написанного текста, меняет и номер. Смена словаря под -другой естественный язык версию не двигает: версия принадлежит шкале, меткам и -правилам формы, а не буквам. +Номер версии называется в каждой конвенции, поэтому он двигается, когда +изменение формы способно изменить чтение **уже разданной** копии: копия +ссылается на номер, а не на текст, и обязана читаться по той версии, по +которой написана. Правки формы до того, как копии разошлись, номер не двигают +— читать по ним пока нечего. -| Версия | Что изменилось | -|---|---| -| 1 | первая запись языка: шкала из BCP 14, обязательное обоснование, идентификаторы, таблицы решений | -| 2 | обоснование получило метку ПОЧЕМУ заглавными и вошло в словарь набора; метки правила выделены из шкалы в отдельный перечень | +Смена словаря под другой естественный язык версию не двигает никогда: версия +принадлежит шкале, меткам и правилам формы, а не буквам. diff --git a/conventions/arch/app-directories.md b/conventions/arch/app-directories.md index 4c17b67..331ff74 100644 --- a/conventions/arch/app-directories.md +++ b/conventions/arch/app-directories.md @@ -11,7 +11,7 @@ prefix: DIRS механически выводится состав бэкапа. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/arch/config.md b/conventions/arch/config.md index da421cc..2b7181d 100644 --- a/conventions/arch/config.md +++ b/conventions/arch/config.md @@ -8,7 +8,7 @@ prefix: CONF секретами и когда падает. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/arch/db-identifiers.md b/conventions/arch/db-identifiers.md index 54f65d6..916a4dc 100644 --- a/conventions/arch/db-identifiers.md +++ b/conventions/arch/db-identifiers.md @@ -7,7 +7,7 @@ prefix: KEYS Как выбираются и как выглядят первичные ключи сущностей. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/arch/time.md b/conventions/arch/time.md index 3192470..aff9c11 100644 --- a/conventions/arch/time.md +++ b/conventions/arch/time.md @@ -8,7 +8,7 @@ prefix: TIME берётся значение и где появляется не-UTC. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/lang/go/config.md b/conventions/lang/go/config.md index 26c7417..72be5ca 100644 --- a/conventions/lang/go/config.md +++ b/conventions/lang/go/config.md @@ -9,7 +9,7 @@ extends: arch/config.md запрета на окружение. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. Секретов Go-специфика не касается: они приходят из деплоя уже в файле, а diff --git a/conventions/lang/go/db-identifiers.md b/conventions/lang/go/db-identifiers.md index 9376768..75d3a15 100644 --- a/conventions/lang/go/db-identifiers.md +++ b/conventions/lang/go/db-identifiers.md @@ -8,7 +8,7 @@ extends: arch/db-identifiers.md Как базовый слой выглядит в Go-приложении. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. Единая точка из `KEYS-3` — пакет `internal/ident`: он diff --git a/conventions/lang/go/db-schema.md b/conventions/lang/go/db-schema.md index 4364d64..16ae6d2 100644 --- a/conventions/lang/go/db-schema.md +++ b/conventions/lang/go/db-schema.md @@ -8,7 +8,7 @@ prefix: MIGR Go-приложении. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/lang/go/errors.md b/conventions/lang/go/errors.md index d34ef50..b058408 100644 --- a/conventions/lang/go/errors.md +++ b/conventions/lang/go/errors.md @@ -9,7 +9,7 @@ prefix: GERR границе). Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. Две границы, о которых говорят правила ниже: diff --git a/conventions/lang/go/logging.md b/conventions/lang/go/logging.md index 94753f7..9e87c2b 100644 --- a/conventions/lang/go/logging.md +++ b/conventions/lang/go/logging.md @@ -10,7 +10,7 @@ extends: arch/time.md функциональности, живут в спеках. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. Лог читают инструментами, а не глазами: повседневно — `jq` diff --git a/conventions/lang/go/time.md b/conventions/lang/go/time.md index 23767df..1b29a1b 100644 --- a/conventions/lang/go/time.md +++ b/conventions/lang/go/time.md @@ -9,7 +9,7 @@ extends: arch/time.md в каком виде время попадает в базу и в логи, что делать с зонами. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Правила diff --git a/conventions/stack/ansible/app-directories.md b/conventions/stack/ansible/app-directories.md index 54ba011..1953c52 100644 --- a/conventions/stack/ansible/app-directories.md +++ b/conventions/stack/ansible/app-directories.md @@ -8,7 +8,7 @@ extends: arch/app-directories.md Как категории из базового слоя раскладываются на сервере плейбуком. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. ## Область действия diff --git a/conventions/stack/htmx/web-ui.md b/conventions/stack/htmx/web-ui.md index ec698ae..ca974f9 100644 --- a/conventions/stack/htmx/web-ui.md +++ b/conventions/stack/htmx/web-ui.md @@ -9,7 +9,7 @@ prefix: HTMX какие действия поддерживает — в спеках, не здесь. Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки -ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 2 — +ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 — тогда и только тогда, когда написаны заглавными. Логирование запросов — конвенция `logging` (HTTP-поля, рутинно-частое на