todo: заведён разбор шести сниппетов в блоках нормы
- GCFG-7, GCFG-9, SLOG-20, GTIM-8, HTMX-7, HTMX-24 несут код внутри нормы, то есть требуют ровно такой код; с появлением блока ПРИМЕРЫ часть из них туда и переезжает - записана цена ошибки в обе стороны: деталь кода как требование против нормы, потерявшей обязательность в иллюстративном блоке
This commit is contained in:
@@ -23,7 +23,25 @@
|
|||||||
Работа читательская, машине не даётся; в список проверок она уже записана в
|
Работа читательская, машине не даётся; в список проверок она уже записана в
|
||||||
разделе «Чтением, потому что машине не даётся».
|
разделе «Чтением, потому что машине не даётся».
|
||||||
|
|
||||||
## 2. Описание языка отдельно от набора конвенций
|
## 2. Шесть сниппетов сидят в блоке нормы
|
||||||
|
|
||||||
|
С появлением блока ПРИМЕРЫ у кода в правиле есть своё место, но шесть правил
|
||||||
|
несут сниппет **внутри блока нормы** — там, где он по границе правила читается
|
||||||
|
как «требуется ровно такой код»: GCFG-7, GCFG-9, SLOG-20, GTIM-8, HTMX-7,
|
||||||
|
HTMX-24. Кода внутри обоснований в каноне нет ни одного, так что разбирать
|
||||||
|
нужно только эти шесть.
|
||||||
|
|
||||||
|
Разбор по одному, вердикт из двух: сниппет — часть требования или иллюстрация
|
||||||
|
к нему. У GTIM-8 (`ReplaceAttr` с приведением к UTC) это похоже на норму: там
|
||||||
|
важна конкретная точка вмешательства. У HTMX-7 и SLOG-20 — скорее иллюстрация
|
||||||
|
формы вызова, и ей место в ПРИМЕРЫ.
|
||||||
|
|
||||||
|
Цена ошибки в обе стороны понятна. Оставленный в норме пример превращает
|
||||||
|
деталь кода в требование, которое никто не имел в виду, и устаревает вместе с
|
||||||
|
API, а норму при этом нельзя поправить, не задев требование. Унесённая в
|
||||||
|
ПРИМЕРЫ норма, наоборот, перестаёт быть обязательной — блок иллюстративный.
|
||||||
|
|
||||||
|
## 3. Описание языка отдельно от набора конвенций
|
||||||
|
|
||||||
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
||||||
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
||||||
@@ -48,7 +66,7 @@
|
|||||||
|
|
||||||
# Канон, тулинг, подключение
|
# Канон, тулинг, подключение
|
||||||
|
|
||||||
## 3. Тулинг: две разные задачи в одном `conv`
|
## 4. Тулинг: две разные задачи в одном `conv`
|
||||||
|
|
||||||
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
||||||
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
||||||
@@ -89,7 +107,7 @@
|
|||||||
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
||||||
хочу» и «что получил».
|
хочу» и «что получил».
|
||||||
|
|
||||||
## 4. Пары слоёв и темы без базы
|
## 5. Пары слоёв и темы без базы
|
||||||
|
|
||||||
Отложено сознательно, но список стоит держать перед глазами:
|
Отложено сознательно, но список стоит держать перед глазами:
|
||||||
|
|
||||||
@@ -110,7 +128,7 @@
|
|||||||
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
||||||
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
||||||
|
|
||||||
## 5. Подключение к репозиториям
|
## 6. Подключение к репозиториям
|
||||||
|
|
||||||
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
||||||
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
||||||
@@ -119,7 +137,7 @@
|
|||||||
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
||||||
`docs/conventions/` — копии.
|
`docs/conventions/` — копии.
|
||||||
|
|
||||||
## 6. Тулинг на Go, живущий независимо
|
## 7. Тулинг на Go, живущий независимо
|
||||||
|
|
||||||
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
||||||
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
||||||
@@ -128,10 +146,10 @@ Go-бинарь со своим релизным циклом, ставить ч
|
|||||||
|
|
||||||
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
||||||
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
||||||
любого потребителя — что прямо требуется вопросом 2, — и снимает питон из
|
любого потребителя — что прямо требуется вопросом 3, — и снимает питон из
|
||||||
зависимостей репозиториев-потребителей.
|
зависимостей репозиториев-потребителей.
|
||||||
|
|
||||||
Порядок обратный ожидаемому: пока вопрос 2 не сделан, инструмент всё равно
|
Порядок обратный ожидаемому: пока вопрос 3 не сделан, инструмент всё равно
|
||||||
работает против одного конкретного канона, и независимый релизный цикл ему
|
работает против одного конкретного канона, и независимый релизный цикл ему
|
||||||
нечего обслуживать. Сначала 2, потом 6. Разделение из вопроса 3 при этом
|
нечего обслуживать. Сначала 3, потом 7. Разделение из вопроса 4 при этом
|
||||||
дешевле заложить сразу, чем отпиливать потом.
|
дешевле заложить сразу, чем отпиливать потом.
|
||||||
|
|||||||
Reference in New Issue
Block a user