механизация больше не разрешает удалять норму
- META-9 снят: удаление оставляло подписчика, пришедшего после, без нормы и без проверки, а «механизировано у всех» канону не проверить — списка подписчиков у него нет по построению - META-8 переписан в запрет: норма остаётся в правиле, чем бы её ни проверяли; линтер сообщает, что нарушено, но не что требуется (META-6) - МЕХАНИЗИРОВАНО объявлена свойством репозитория: в тексте конвенции отметки нет, её место — запись о механизации ниже маркера (META-7)
This commit is contained in:
@@ -4,30 +4,12 @@
|
||||
решения. Закрытый вопрос отсюда удаляется — принятое решение живёт в
|
||||
`README.md`, `GUIDE.md` или `LANGUAGE.md`, а не в этом файле.
|
||||
|
||||
Две секции: сначала язык и подход, потом канон с тулингом. Пункты 1–4
|
||||
Две секции: сначала язык и подход, потом канон с тулингом. Пункты 1–3
|
||||
пришли из внешнего ревью описания языка и проверены по файлам на месте.
|
||||
|
||||
# Язык и подход
|
||||
|
||||
## 1. МЕХАНИЗИРОВАНО не переживает нового подписчика
|
||||
|
||||
META-8 запрещает удалять норму, пока механизирована не у всех, и защищает
|
||||
тем самым потребителей, существующих **на момент удаления**. Будущих не
|
||||
защищает никто.
|
||||
|
||||
Сценарий: норма удалена, потому что у всех трёх тогдашних потребителей был
|
||||
линтер. Через год подключается четвёртый репозиторий, подписывается на тему —
|
||||
и получает правило без формулировки и без проверки: ни текста, ни линтера,
|
||||
восстановление только через git-историю канона.
|
||||
|
||||
Смежное: «общий конфиг линтера или общая роль» из META-9 — сущность, которой
|
||||
в модели распространения (манифест, темы, слои) не существует, и непонятно,
|
||||
как она доезжает до потребителя. И отдельно: запись «проверяется общим
|
||||
правилом линтера» — это утверждение о состоянии инфраструктуры потребителей
|
||||
в тексте канона, то есть ровно то, что запрещает META-4. Либо это законное
|
||||
исключение, и тогда его надо назвать, либо конфликт.
|
||||
|
||||
## 2. Семантика ключевых слов в копию не едет
|
||||
## 1. Семантика ключевых слов в копию не едет
|
||||
|
||||
Строка о версии языка перечисляет слова, но не их значения, а всё
|
||||
нетривиальное в шкале живёт только в `LANGUAGE.md`, который в репозиторий не
|
||||
@@ -43,7 +25,7 @@ META-8 запрещает удалять норму, пока механизир
|
||||
копиями короткую выжимку семантики; расширить строку о версии до
|
||||
двух-трёх предложений; или признать ограничение и записать его явно.
|
||||
|
||||
## 3. Две «механические» проверки без источника данных
|
||||
## 2. Две «механические» проверки без источника данных
|
||||
|
||||
В списке «разбором текста» стоят два пункта, которые без дополнительного
|
||||
реестра нерешаемы:
|
||||
@@ -60,7 +42,7 @@ META-8 запрещает удалять норму, пока механизир
|
||||
требуют, а манифест набора хранит только темы и префиксы. Пока реестр снятых
|
||||
номеров не объявлен частью языка, оба пункта принадлежат списку «чтением».
|
||||
|
||||
## 4. Натяжки в опоре на стандарты
|
||||
## 3. Натяжки в опоре на стандарты
|
||||
|
||||
Три места, где источнику приписано чуть больше, чем в нём есть:
|
||||
|
||||
@@ -79,7 +61,7 @@ META-8 запрещает удалять норму, пока механизир
|
||||
Остальное в таблице проверку выдержало, включая вторую половину `MAY` из
|
||||
BCP 14 и списки эквивалентных словесных форм ISO Directives.
|
||||
|
||||
## 5. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
||||
## 4. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
||||
|
||||
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
|
||||
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
|
||||
@@ -94,7 +76,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
Работа читательская, машине не даётся; в список проверок она уже записана в
|
||||
разделе «Чтением, потому что машине не даётся».
|
||||
|
||||
## 6. Описание языка отдельно от набора конвенций
|
||||
## 5. Описание языка отдельно от набора конвенций
|
||||
|
||||
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
||||
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
||||
@@ -119,7 +101,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
|
||||
# Канон, тулинг, подключение
|
||||
|
||||
## 7. Тулинг: две разные задачи в одном `conv`
|
||||
## 6. Тулинг: две разные задачи в одном `conv`
|
||||
|
||||
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
||||
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
||||
@@ -150,7 +132,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
ссылках: это установка, а не целостность, но список подписок ему нужен из
|
||||
манифеста.
|
||||
|
||||
Часть проверок из этого списка сейчас нереализуема по причине из вопроса 3,
|
||||
Часть проверок из этого списка сейчас нереализуема по причине из вопроса 2,
|
||||
так что порядок такой: сначала язык, потом чекер.
|
||||
|
||||
Перед тем как переписывать, стоит посмотреть на два готовых прототипа:
|
||||
@@ -158,7 +140,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
||||
хочу» и «что получил».
|
||||
|
||||
## 8. Пары слоёв и темы без базы
|
||||
## 7. Пары слоёв и темы без базы
|
||||
|
||||
Отложено сознательно, но список стоит держать перед глазами:
|
||||
|
||||
@@ -179,7 +161,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
||||
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
||||
|
||||
## 9. Подключение к репозиториям
|
||||
## 8. Подключение к репозиториям
|
||||
|
||||
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
||||
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
||||
@@ -188,7 +170,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
||||
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
||||
`docs/conventions/` — копии.
|
||||
|
||||
## 10. Тулинг на Go, живущий независимо
|
||||
## 9. Тулинг на Go, живущий независимо
|
||||
|
||||
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
||||
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
||||
@@ -197,10 +179,10 @@ Go-бинарь со своим релизным циклом, ставить ч
|
||||
|
||||
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
||||
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
||||
любого потребителя — что прямо требуется вопросом 6, — и снимает питон из
|
||||
любого потребителя — что прямо требуется вопросом 5, — и снимает питон из
|
||||
зависимостей репозиториев-потребителей.
|
||||
|
||||
Порядок обратный ожидаемому: пока вопрос 6 не сделан, инструмент всё равно
|
||||
Порядок обратный ожидаемому: пока вопрос 5 не сделан, инструмент всё равно
|
||||
работает против одного конкретного канона, и независимый релизный цикл ему
|
||||
нечего обслуживать. Сначала 6, потом 10. Разделение из вопроса 7 при этом
|
||||
нечего обслуживать. Сначала 5, потом 9. Разделение из вопроса 6 при этом
|
||||
дешевле заложить сразу, чем отпиливать потом.
|
||||
|
||||
Reference in New Issue
Block a user