снятое правило остаётся заглушкой, нумерация сплошная
- META-31 и META-32: номера идут без пропусков, ссылка обязана разрешаться; обе проверки стали механическими — данных со стороны языка им хватает - заведена метка СНЯТО: заголовок и номер снятого правила сохраняются, норму с обоснованием заменяет блок с датой и причиной, отдельный реестр снятых номеров не нужен - META-9, META-16 и META-26 переписаны из таблицы «Освободившиеся номера» в заглушки; три висячие ссылки, тянувшиеся с утра, закрылись
This commit is contained in:
@@ -43,8 +43,8 @@ code in this repository.
|
|||||||
записи о механизации в локальной части копии (META-7).
|
записи о механизации в локальной части копии (META-7).
|
||||||
- META-8: норма не удаляется из канона никогда, чем бы её ни проверяли.
|
- META-8: норма не удаляется из канона никогда, чем бы её ни проверяли.
|
||||||
Механизация её не заменяет и не сокращает.
|
Механизация её не заменяет и не сокращает.
|
||||||
- Метки правила — **ПОЧЕМУ** и **МЕХАНИЗИРОВАНО** — тоже словарь набора и
|
- Метки правила — **ПОЧЕМУ**, **МЕХАНИЗИРОВАНО** и **СНЯТО** — тоже словарь
|
||||||
перечислены в строке о версии языка наравне с модальными словами.
|
набора и перечислены в строке о версии языка наравне с модальными словами.
|
||||||
- META-30: правка словаря или состава частей правила доходит до `READING.md` —
|
- META-30: правка словаря или состава частей правила доходит до `READING.md` —
|
||||||
документа, который едет к потребителю. Словари двух описаний совпадают.
|
документа, который едет к потребителю. Словари двух описаний совпадают.
|
||||||
- Заглавные модальные слова не употребляются вне правил: ни в «Область
|
- Заглавные модальные слова не употребляются вне правил: ни в «Область
|
||||||
@@ -79,8 +79,13 @@ code in this repository.
|
|||||||
с причиной и датой. Оно живёт в `origin:` копий и в подписках манифестов.
|
с причиной и датой. Оно живёт в `origin:` копий и в подписках манифестов.
|
||||||
- Формат `<ПРЕФИКС>-<номер>`, нумерация сквозная внутри файла. Порядок правил
|
- Формат `<ПРЕФИКС>-<номер>`, нумерация сквозная внутри файла. Порядок правил
|
||||||
в файле — по читаемости: номер это идентификатор, а не позиция.
|
в файле — по читаемости: номер это идентификатор, а не позиция.
|
||||||
- Идентификаторы не переиспользуются. Удалённое правило оставляет дыру, новое
|
- Идентификаторы не переиспользуются: новое правило берёт номер, следующий за
|
||||||
берёт следующий свободный номер, а не первый освободившийся.
|
наибольшим.
|
||||||
|
- META-31: нумерация в файле сплошная. Снятое правило не исчезает, а остаётся
|
||||||
|
заглушкой: заголовок с номером плюс блок `**СНЯТО <дата>.**` с причиной
|
||||||
|
вместо нормы и ПОЧЕМУ. Реестра снятых номеров нет — файл сам себе реестр.
|
||||||
|
- META-32: ссылок на несуществующие правила нет; неразрешённый идентификатор —
|
||||||
|
всегда ошибка, а не «правило, наверное, сняли».
|
||||||
- Новый файл конвенции — новый префикс: четыре заглавные латинские буквы,
|
- Новый файл конвенции — новый префикс: четыре заглавные латинские буквы,
|
||||||
уникальные по всему канону, выбираются под файл, а не выводятся по формуле.
|
уникальные по всему канону, выбираются под файл, а не выводятся по формуле.
|
||||||
Объявляется в шапке (`prefix: KEYS`) и регистрируется в манифесте набора,
|
Объявляется в шапке (`prefix: KEYS`) и регистрируется в манифесте набора,
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ prefix: META
|
|||||||
же.
|
же.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
@@ -112,6 +112,33 @@ prefix: META
|
|||||||
слова вводились, и молча. Проверить расхождение дёшево: словари в двух
|
слова вводились, и молча. Проверить расхождение дёшево: словари в двух
|
||||||
документах либо совпадают, либо нет.
|
документах либо совпадают, либо нет.
|
||||||
|
|
||||||
|
### META-31. Нумерация правил в файле сплошная
|
||||||
|
|
||||||
|
**ДОЛЖЕН.** Номера идут от единицы до наибольшего без пропусков: снятое
|
||||||
|
правило остаётся на месте заглушкой с меткой СНЯТО, а не исчезает.
|
||||||
|
|
||||||
|
**ПОЧЕМУ.** Дыра в нумерации неотличима от опечатки в номере и от правила,
|
||||||
|
которое забыли дописать, — проверка, увидев пропуск, не может сказать, ошибка
|
||||||
|
это или норма, поэтому либо молчит всегда, либо краснеет на живом файле.
|
||||||
|
Заглушка отвечает на тот же вопрос текстом: номер занят, правило снято
|
||||||
|
тогда-то и по такой-то причине. Переиспользовать номер по-прежнему нельзя —
|
||||||
|
ссылка из чужого репозитория обязана указывать на то же утверждение, — но и
|
||||||
|
отдельный
|
||||||
|
реестр снятых номеров не нужен: он был бы вторым источником правды рядом с
|
||||||
|
файлом, который и так всё сказал.
|
||||||
|
|
||||||
|
### META-32. Ссылка ведёт на правило, которое существует
|
||||||
|
|
||||||
|
**НЕ ДОЛЖЕН.** Идентификатор в тексте не указывает на правило, которого в
|
||||||
|
наборе нет.
|
||||||
|
|
||||||
|
**ПОЧЕМУ.** Неразрешимая ссылка означает одно из двух: опечатку в номере или
|
||||||
|
след переноса правила в другой файл. Читатель — тем более в чужом
|
||||||
|
репозитории — не различит эти случаи и решит, что правила больше нет, хотя оно
|
||||||
|
могло переехать. С заглушками (META-31) проверка становится однозначной:
|
||||||
|
идентификатор либо ведёт к правилу, либо к объяснению, почему его сняли, а
|
||||||
|
третьего исхода нет — и любой неразрешённый идентификатор точно ошибка.
|
||||||
|
|
||||||
### META-2. Конвенция заводится, когда решение принимается третий раз
|
### META-2. Конвенция заводится, когда решение принимается третий раз
|
||||||
|
|
||||||
**СЛЕДУЕТ.** Поводом служит одно и то же решение, принятое третий раз и
|
**СЛЕДУЕТ.** Поводом служит одно и то же решение, принятое третий раз и
|
||||||
@@ -390,14 +417,26 @@ prefix: META
|
|||||||
подробностями идут; перенос деталей туда же вернул бы задачу поддержки двух
|
подробностями идут; перенос деталей туда же вернул бы задачу поддержки двух
|
||||||
текстов.
|
текстов.
|
||||||
|
|
||||||
## Освободившиеся номера
|
## Снятые правила
|
||||||
|
|
||||||
Номер удалённого правила не переиспользуется, поэтому дыры в нумерации —
|
Снятое правило остаётся здесь заглушкой: номер занят навсегда, ссылка на него
|
||||||
норма. Здесь перечислено, что́ под ними было: без этого упоминание номера в
|
ведёт к объяснению, а нумерация в файле остаётся сплошной (META-31).
|
||||||
прозе не отличить от ссылки на исчезнувшее правило.
|
|
||||||
|
|
||||||
| Номер | Что было | Почему снято |
|
### META-9. Общая механизация разрешала удалить норму из канона
|
||||||
|---|---|---|
|
|
||||||
| META-16 | имя файла — kebab-case | вреда от нарушения нет (META-25); осталось прозой в «Оформлении» |
|
**СНЯТО 2026-07-26.** Удаление нормы оставляло подписчика, пришедшего позже,
|
||||||
| META-26 | запрет слов обязательства в обосновании | правило о заглавных уже делает строчное слово ненормативным, а форму обоснования рамками не ограничивают |
|
без текста и без проверки, а условие «механизировано у всех» набору не
|
||||||
| META-9 | общая механизация разрешала удалить норму из канона | снято 2026-07-26: удаление оставляло будущего подписчика без нормы и без проверки, а «механизировано у всех» канону не проверить (META-8) |
|
проверить: списка подписчиков у него нет. Взамен — META-8, запрет удалять
|
||||||
|
норму вообще.
|
||||||
|
|
||||||
|
### META-16. Имя файла — kebab-case
|
||||||
|
|
||||||
|
**СНЯТО 2026-07-26.** Вреда от нарушения нет, а значит нет и высшей
|
||||||
|
модальности (META-25): сборка идёт по имени темы из шапки, а не по имени
|
||||||
|
файла. Осталось прозой в разделе «Оформление».
|
||||||
|
|
||||||
|
### META-26. Запрет слов обязательства в обосновании
|
||||||
|
|
||||||
|
**СНЯТО 2026-07-26.** Правило о заглавных уже делает строчное «обязан»
|
||||||
|
ненормативным, поэтому запрет ничего не добавлял, а форму обоснования рамками
|
||||||
|
не ограничивают.
|
||||||
|
|||||||
+25
-17
@@ -245,14 +245,15 @@ Directives, Part 2, по одной форме записи на ступень,
|
|||||||
| разрешение | ДОПУСКАЕТСЯ | MAY |
|
| разрешение | ДОПУСКАЕТСЯ | MAY |
|
||||||
|
|
||||||
**Метки.** Обязательности не задают, а размечают: ПОЧЕМУ — часть правила,
|
**Метки.** Обязательности не задают, а размечают: ПОЧЕМУ — часть правила,
|
||||||
МЕХАНИЗИРОВАНО — запись о проверке в копии. Стандартом не даются ни в одном
|
МЕХАНИЗИРОВАНО — запись о проверке в копии, СНЯТО — заглушку на месте
|
||||||
языке: в BCP 14 таких понятий нет, слова подбираются под язык так же, как
|
убранного правила. Стандартом не даются ни в одном языке: в BCP 14 таких
|
||||||
остальные.
|
понятий нет, слова подбираются под язык так же, как остальные.
|
||||||
|
|
||||||
| Метка | Русский | Английский |
|
| Метка | Русский | Английский |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| обоснование | ПОЧЕМУ | WHY |
|
| обоснование | ПОЧЕМУ | WHY |
|
||||||
| способ проверки | МЕХАНИЗИРОВАНО | MECHANIZED |
|
| способ проверки | МЕХАНИЗИРОВАНО | MECHANIZED |
|
||||||
|
| снятое правило | СНЯТО | RETIRED |
|
||||||
|
|
||||||
**Служебные слова сценарного блока** — `КОГДА`, `ТОГДА`, `И`, `ИЛИ`; таблица
|
**Служебные слова сценарного блока** — `КОГДА`, `ТОГДА`, `И`, `ИЛИ`; таблица
|
||||||
и объяснение в разделе «Таблицы решений».
|
и объяснение в разделе «Таблицы решений».
|
||||||
@@ -279,14 +280,14 @@ Directives, Part 2, по одной форме записи на ступень,
|
|||||||
Каждая конвенция называет язык одной строкой во вводной прозе:
|
Каждая конвенция называет язык одной строкой во вводной прозе:
|
||||||
|
|
||||||
> Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
> Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
> ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
> ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
> тогда и только тогда, когда написаны заглавными.
|
> версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Слова в строке — из словаря того языка, на котором написан набор. Для
|
Слова в строке — из словаря того языка, на котором написан набор. Для
|
||||||
англоязычного набора та же строка выглядит так:
|
англоязычного набора та же строка выглядит так:
|
||||||
|
|
||||||
> The key words MUST, MUST NOT, SHOULD, SHOULD NOT, MAY and the marks WHY
|
> 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
|
> MECHANIZED and RETIRED are to be interpreted as described in the conventions
|
||||||
> language, version 1, and only when written in capitals.
|
> language, version 1, and only when written in capitals.
|
||||||
|
|
||||||
Форма скопирована у BCP 14, где та же задача решается тем же способом:
|
Форма скопирована у BCP 14, где та же задача решается тем же способом:
|
||||||
@@ -409,10 +410,15 @@ XMIG-2, XMIG-4 — МЕХАНИЗИРОВАНО: `internal/archrules`, в нов
|
|||||||
файла, из соседней конвенции и из чужого репозитория. В собранной копии
|
файла, из соседней конвенции и из чужого репозитория. В собранной копии
|
||||||
слои разных осей лежат в одном документе, так что ссылка на базовый слой
|
слои разных осей лежат в одном документе, так что ссылка на базовый слой
|
||||||
из языкового вообще никуда не ведёт — правило рядом.
|
из языкового вообще никуда не ведёт — правило рядом.
|
||||||
- **Идентификаторы стабильны и не переиспользуются.** Удалённое правило
|
- **Идентификаторы стабильны и не переиспользуются.** Занять номер снятого
|
||||||
оставляет дыру в нумерации; занимать её новым нельзя — иначе ссылка из
|
правила новым нельзя — иначе ссылка из чужого репозитория начнёт указывать
|
||||||
чужого репозитория начнёт указывать на другое утверждение. То же
|
на другое утверждение. То же относится к префиксам: выбывшие хранит манифест
|
||||||
относится к префиксам: выбывшие хранит манифест набора.
|
набора.
|
||||||
|
- **Снятое правило остаётся заглушкой.** Заголовок и номер сохраняются, норму
|
||||||
|
с обоснованием заменяет блок СНЯТО с датой и причиной. Поэтому нумерация в
|
||||||
|
файле сплошная, а любая ссылка разрешается — либо в правило, либо в
|
||||||
|
объяснение, почему его сняли (META-31, META-32). Отдельного реестра снятых
|
||||||
|
номеров нет: он был бы вторым источником правды рядом с файлом.
|
||||||
- Префикс **выбирается под файл, а не выводится по формуле**: он нужен,
|
- Префикс **выбирается под файл, а не выводится по формуле**: он нужен,
|
||||||
чтобы по нему искать, а не чтобы его разбирать. Выводимый префикс вдобавок
|
чтобы по нему искать, а не чтобы его разбирать. Выводимый префикс вдобавок
|
||||||
привязал бы идентификатор к таксономии, которую канон перестраивает, и
|
привязал бы идентификатор к таксономии, которую канон перестраивает, и
|
||||||
@@ -495,13 +501,15 @@ XMIG-6 не соблюдается в легаси-таблицах `show_histor
|
|||||||
заглавных латинских букв, не начинается на `X` и не значится в списке
|
заглавных латинских букв, не начинается на `X` и не значится в списке
|
||||||
выбывших;
|
выбывших;
|
||||||
- заголовки правил файла используют только его собственный префикс;
|
- заголовки правил файла используют только его собственный префикс;
|
||||||
- номера уникальны внутри файла и не имеют пропусков вниз (новое правило
|
- нумерация внутри файла сплошная: от единицы до наибольшего номера без
|
||||||
берёт следующий свободный, а не первый освободившийся);
|
пропусков, номера не повторяются, новое правило берёт следующий за
|
||||||
- у каждого `### <ПРЕФИКС>-<n>` есть модальное слово, норма и блок ПОЧЕМУ:
|
наибольшим (META-31);
|
||||||
ни норма, ни обоснование не удаляются никогда (META-8, META-10);
|
- у каждого `### <ПРЕФИКС>-<n>` есть либо модальное слово с нормой и блок
|
||||||
|
ПОЧЕМУ — ни норма, ни обоснование не удаляются никогда (META-8, META-10), —
|
||||||
|
либо блок СНЯТО с датой и причиной;
|
||||||
- вводная проза содержит строку о версии языка;
|
- вводная проза содержит строку о версии языка;
|
||||||
- ссылки вида `<ПРЕФИКС>-<n>` — хоть в тексте канона, хоть в локальной части
|
- ссылки вида `<ПРЕФИКС>-<n>` — хоть в тексте набора, хоть в локальной части
|
||||||
копии — указывают на правила, которые ещё существуют;
|
копии — разрешаются: неразрешённый идентификатор всегда ошибка (META-32);
|
||||||
- заглавные модальные слова не встречаются вне областей правил (область —
|
- заглавные модальные слова не встречаются вне областей правил (область —
|
||||||
от заголовка правила до следующего заголовка) — кроме строки о версии
|
от заголовка правила до следующего заголовка) — кроме строки о версии
|
||||||
языка, которая их перечисляет по назначению;
|
языка, которая их перечисляет по назначению;
|
||||||
|
|||||||
+13
-2
@@ -34,9 +34,20 @@ version: 1
|
|||||||
между ДОЛЖЕН и СЛЕДУЕТ — в том, чем платят за отклонение, а не в том,
|
между ДОЛЖЕН и СЛЕДУЕТ — в том, чем платят за отклонение, а не в том,
|
||||||
возможно ли оно.
|
возможно ли оно.
|
||||||
|
|
||||||
Ещё две метки заглавными: **ПОЧЕМУ** открывает обоснование правила,
|
Ещё три метки заглавными: **ПОЧЕМУ** открывает обоснование правила,
|
||||||
**МЕХАНИЗИРОВАНО** стоит при записи о том, что правило проверяет линтер или
|
**МЕХАНИЗИРОВАНО** стоит при записи о том, что правило проверяет линтер или
|
||||||
скрипт.
|
скрипт, **СНЯТО** — на месте правила, которое убрали.
|
||||||
|
|
||||||
|
Заглушка со СНЯТО занимает место убранного правила вместе с его номером:
|
||||||
|
так нумерация остаётся сплошной, а ссылка на снятое правило приводит к
|
||||||
|
объяснению, а не в пустоту. Требований в такой заглушке нет.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### XLOG-4. Уровень записи выбирался по громкости отказа
|
||||||
|
|
||||||
|
**СНЯТО 2026-05-14.** Заменено на XLOG-8: громкость каждый оценивал
|
||||||
|
по-своему, и шкала расползалась.
|
||||||
|
```
|
||||||
|
|
||||||
**Нормативно только заглавное написание.** Строчное «должен» в прозе — обычная
|
**Нормативно только заглавное написание.** Строчное «должен» в прозе — обычная
|
||||||
речь, а не норма; спорить с ней как с правилом не нужно.
|
речь, а не норма; спорить с ней как с правилом не нужно.
|
||||||
|
|||||||
@@ -4,29 +4,12 @@
|
|||||||
решения. Закрытый вопрос отсюда удаляется — принятое решение живёт в
|
решения. Закрытый вопрос отсюда удаляется — принятое решение живёт в
|
||||||
`README.md`, `GUIDE.md` или `LANGUAGE.md`, а не в этом файле.
|
`README.md`, `GUIDE.md` или `LANGUAGE.md`, а не в этом файле.
|
||||||
|
|
||||||
Две секции: сначала язык и подход, потом канон с тулингом. Пункты 1–2
|
Две секции: сначала язык и подход, потом канон с тулингом. Пункт 1 пришёл
|
||||||
пришли из внешнего ревью описания языка и проверены по файлам на месте.
|
из внешнего ревью описания языка и проверен по файлам на месте.
|
||||||
|
|
||||||
# Язык и подход
|
# Язык и подход
|
||||||
|
|
||||||
## 1. Две «механические» проверки без источника данных
|
## 1. Натяжки в опоре на стандарты
|
||||||
|
|
||||||
В списке «разбором текста» стоят два пункта, которые без дополнительного
|
|
||||||
реестра нерешаемы:
|
|
||||||
|
|
||||||
- **«номера не имеют пропусков вниз»** — дыры в нумерации нормальны по
|
|
||||||
построению, и статическая проверка не отличит дыру от удалённого правила
|
|
||||||
от опечатки в номере;
|
|
||||||
- **«ссылки указывают на правила, которые ещё существуют»** — упоминание
|
|
||||||
снятого номера в прозе выглядит как висячая ссылка.
|
|
||||||
|
|
||||||
`GUIDE.md` завёл для себя раздел «Освободившиеся номера» — и, поскольку он
|
|
||||||
теперь проверяется как конвенция, это единственный живой пример такого
|
|
||||||
реестра. Языком он всё равно не объявлен: от конвенций такой таблицы не
|
|
||||||
требуют, а манифест набора хранит только темы и префиксы. Пока реестр снятых
|
|
||||||
номеров не объявлен частью языка, оба пункта принадлежат списку «чтением».
|
|
||||||
|
|
||||||
## 2. Натяжки в опоре на стандарты
|
|
||||||
|
|
||||||
Три места, где источнику приписано чуть больше, чем в нём есть:
|
Три места, где источнику приписано чуть больше, чем в нём есть:
|
||||||
|
|
||||||
@@ -45,7 +28,7 @@
|
|||||||
Остальное в таблице проверку выдержало, включая вторую половину `MAY` из
|
Остальное в таблице проверку выдержало, включая вторую половину `MAY` из
|
||||||
BCP 14 и списки эквивалентных словесных форм ISO Directives.
|
BCP 14 и списки эквивалентных словесных форм ISO Directives.
|
||||||
|
|
||||||
## 3. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
## 2. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
||||||
|
|
||||||
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
|
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
|
||||||
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
|
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
|
||||||
@@ -60,7 +43,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
Работа читательская, машине не даётся; в список проверок она уже записана в
|
Работа читательская, машине не даётся; в список проверок она уже записана в
|
||||||
разделе «Чтением, потому что машине не даётся».
|
разделе «Чтением, потому что машине не даётся».
|
||||||
|
|
||||||
## 4. Описание языка отдельно от набора конвенций
|
## 3. Описание языка отдельно от набора конвенций
|
||||||
|
|
||||||
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
||||||
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
||||||
@@ -85,7 +68,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
|
|
||||||
# Канон, тулинг, подключение
|
# Канон, тулинг, подключение
|
||||||
|
|
||||||
## 5. Тулинг: две разные задачи в одном `conv`
|
## 4. Тулинг: две разные задачи в одном `conv`
|
||||||
|
|
||||||
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
||||||
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
||||||
@@ -117,15 +100,16 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
ссылках: это установка, а не целостность, но список подписок ему нужен из
|
ссылках: это установка, а не целостность, но список подписок ему нужен из
|
||||||
манифеста.
|
манифеста.
|
||||||
|
|
||||||
Часть проверок из этого списка сейчас нереализуема по причине из вопроса 1,
|
Список проверок теперь реализуем целиком: граница правила определена,
|
||||||
так что порядок такой: сначала язык, потом чекер.
|
нумерация сплошная, снятое правило остаётся заглушкой — данных со стороны
|
||||||
|
языка проверке хватает.
|
||||||
|
|
||||||
Перед тем как переписывать, стоит посмотреть на два готовых прототипа:
|
Перед тем как переписывать, стоит посмотреть на два готовых прототипа:
|
||||||
дистрибуцию пакетов Vale (`.vale.ini` → `vale sync` → `styles/`) как образец
|
дистрибуцию пакетов Vale (`.vale.ini` → `vale sync` → `styles/`) как образец
|
||||||
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
||||||
хочу» и «что получил».
|
хочу» и «что получил».
|
||||||
|
|
||||||
## 6. Пары слоёв и темы без базы
|
## 5. Пары слоёв и темы без базы
|
||||||
|
|
||||||
Отложено сознательно, но список стоит держать перед глазами:
|
Отложено сознательно, но список стоит держать перед глазами:
|
||||||
|
|
||||||
@@ -146,7 +130,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
||||||
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
||||||
|
|
||||||
## 7. Подключение к репозиториям
|
## 6. Подключение к репозиториям
|
||||||
|
|
||||||
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
||||||
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
||||||
@@ -155,7 +139,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
||||||
`docs/conventions/` — копии.
|
`docs/conventions/` — копии.
|
||||||
|
|
||||||
## 8. Тулинг на Go, живущий независимо
|
## 7. Тулинг на Go, живущий независимо
|
||||||
|
|
||||||
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
||||||
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
||||||
@@ -164,10 +148,10 @@ Go-бинарь со своим релизным циклом, ставить ч
|
|||||||
|
|
||||||
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
||||||
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
||||||
любого потребителя — что прямо требуется вопросом 4, — и снимает питон из
|
любого потребителя — что прямо требуется вопросом 3, — и снимает питон из
|
||||||
зависимостей репозиториев-потребителей.
|
зависимостей репозиториев-потребителей.
|
||||||
|
|
||||||
Порядок обратный ожидаемому: пока вопрос 4 не сделан, инструмент всё равно
|
Порядок обратный ожидаемому: пока вопрос 3 не сделан, инструмент всё равно
|
||||||
работает против одного конкретного канона, и независимый релизный цикл ему
|
работает против одного конкретного канона, и независимый релизный цикл ему
|
||||||
нечего обслуживать. Сначала 4, потом 8. Разделение из вопроса 5 при этом
|
нечего обслуживать. Сначала 3, потом 7. Разделение из вопроса 4 при этом
|
||||||
дешевле заложить сразу, чем отпиливать потом.
|
дешевле заложить сразу, чем отпиливать потом.
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ prefix: DIRS
|
|||||||
механически выводится состав бэкапа.
|
механически выводится состав бэкапа.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ prefix: CONF
|
|||||||
секретами и когда падает.
|
секретами и когда падает.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ prefix: KEYS
|
|||||||
Как выбираются и как выглядят первичные ключи сущностей.
|
Как выбираются и как выглядят первичные ключи сущностей.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ prefix: TIME
|
|||||||
берётся значение и где появляется не-UTC.
|
берётся значение и где появляется не-UTC.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ extends: arch/config.md
|
|||||||
запрета на окружение.
|
запрета на окружение.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Секретов Go-специфика не касается: они приходят из деплоя уже в файле, а
|
Секретов Go-специфика не касается: они приходят из деплоя уже в файле, а
|
||||||
проверка их непустоты идёт вместе с остальной валидацией — как описано в
|
проверка их непустоты идёт вместе с остальной валидацией — как описано в
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ extends: arch/db-identifiers.md
|
|||||||
Как базовый слой выглядит в Go-приложении.
|
Как базовый слой выглядит в Go-приложении.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Единая точка из `KEYS-3` — пакет `internal/ident`: он
|
Единая точка из `KEYS-3` — пакет `internal/ident`: он
|
||||||
порождает идентификаторы (`NewID`, `NewIDAt`) и он же их разбирает
|
порождает идентификаторы (`NewID`, `NewIDAt`) и он же их разбирает
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ prefix: MIGR
|
|||||||
Go-приложении.
|
Go-приложении.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ prefix: GERR
|
|||||||
границе).
|
границе).
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Две границы, о которых говорят правила ниже:
|
Две границы, о которых говорят правила ниже:
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ extends: arch/time.md
|
|||||||
функциональности, живут в спеках.
|
функциональности, живут в спеках.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Лог читают инструментами, а не глазами: повседневно — `jq`
|
Лог читают инструментами, а не глазами: повседневно — `jq`
|
||||||
(`jq 'select(.download_id=="a1b2")' app.jsonl`), тяжёлое (агрегации, JOIN) —
|
(`jq 'select(.download_id=="a1b2")' app.jsonl`), тяжёлое (агрегации, JOIN) —
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ extends: arch/time.md
|
|||||||
в каком виде время попадает в базу и в логи, что делать с зонами.
|
в каком виде время попадает в базу и в логи, что делать с зонами.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Правила
|
## Правила
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ extends: arch/app-directories.md
|
|||||||
Как категории из базового слоя раскладываются на сервере плейбуком.
|
Как категории из базового слоя раскладываются на сервере плейбуком.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
## Область действия
|
## Область действия
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ prefix: HTMX
|
|||||||
какие действия поддерживает — в спеках, не здесь.
|
какие действия поддерживает — в спеках, не здесь.
|
||||||
|
|
||||||
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
Ключевые слова ДОЛЖЕН, НЕ ДОЛЖЕН, СЛЕДУЕТ, НЕ СЛЕДУЕТ, ДОПУСКАЕТСЯ и метки
|
||||||
ПОЧЕМУ и МЕХАНИЗИРОВАНО толкуются как описано в языке конвенций версии 1 —
|
ПОЧЕМУ, МЕХАНИЗИРОВАНО и СНЯТО толкуются как описано в языке конвенций
|
||||||
тогда и только тогда, когда написаны заглавными.
|
версии 1 — тогда и только тогда, когда написаны заглавными.
|
||||||
|
|
||||||
Логирование запросов — конвенция `logging` (HTTP-поля, рутинно-частое на
|
Логирование запросов — конвенция `logging` (HTTP-поля, рутинно-частое на
|
||||||
`DEBUG`). Трансляция доменных ошибок наружу — конвенция `errors`
|
`DEBUG`). Трансляция доменных ошибок наружу — конвенция `errors`
|
||||||
|
|||||||
Reference in New Issue
Block a user