второе условие ДОЛЖЕН ослаблено до воспроизводимости вердикта
- META-6 переписан: ступень требует не машинной проверки, а того, чтобы двое проверяющих по тексту правила выносили один вердикт; проверяющий по умолчанию — читатель, человек или агент - заведён META-27: машинная проверка желательна везде, где пишется, но ступени не задаёт — иначе канон стоит в СЛЕДУЕТ до появления скриптов; обоснование META-25 пересобрано на новом условии - LANGUAGE.md и CLAUDE.md приведены к той же формулировке, вопрос 1 из TODO закрыт, остальные перенумерованы
This commit is contained in:
@@ -28,8 +28,8 @@ code in this repository.
|
|||||||
- Нормативно только заглавное написание (правило RFC 8174): строчное
|
- Нормативно только заглавное написание (правило RFC 8174): строчное
|
||||||
«должен» в прозе нормой не является.
|
«должен» в прозе нормой не является.
|
||||||
- ДОЛЖЕН требует двух условий сразу: назван вред от нарушения (META-25) и
|
- ДОЛЖЕН требует двух условий сразу: назван вред от нарушения (META-25) и
|
||||||
норма проверяема машиной (META-6). Проверяемость сама по себе до ДОЛЖЕН не
|
вердикт о нарушении воспроизводим (META-6). Воспроизводимость сама по себе
|
||||||
повышает — иначе шкала наполняется проверяемыми мелочами.
|
до ДОЛЖЕН не повышает — иначе шкала наполняется проверяемыми мелочами.
|
||||||
- ДОПУСКАЕТСЯ адресовано рецензенту: помеченный им выбор на ревью не
|
- ДОПУСКАЕТСЯ адресовано рецензенту: помеченный им выбор на ревью не
|
||||||
обсуждается.
|
обсуждается.
|
||||||
- **МЕХАНИЗИРОВАНО** — не модальность, а способ проверки: отметка стоит
|
- **МЕХАНИЗИРОВАНО** — не модальность, а способ проверки: отметка стоит
|
||||||
@@ -93,9 +93,11 @@ code in this repository.
|
|||||||
- META-5: расхождение кода с правилом — отступление, а не повод переписать
|
- META-5: расхождение кода с правилом — отступление, а не повод переписать
|
||||||
правило. Направление всегда конвенция → код; факт «в приложении уже иначе»
|
правило. Направление всегда конвенция → код; факт «в приложении уже иначе»
|
||||||
не является аргументом.
|
не является аргументом.
|
||||||
- META-6: ДОЛЖЕН без механической проверки либо механизируется, либо
|
- META-6: ДОЛЖЕН требует воспроизводимого вердикта — двое проверяющих по
|
||||||
понижается в СЛЕДУЕТ. Правило, непроверяемое машиной в принципе (вкус
|
тексту правила отвечают одинаково. Правило, вердикт которого зависит от
|
||||||
формулировки, суждение о ситуации), — СЛЕДУЕТ по построению.
|
суждения (вкус формулировки, уместность в конкретном месте), — СЛЕДУЕТ по
|
||||||
|
построению. META-27: машинная проверка желательна, но ступени не задаёт;
|
||||||
|
проверяющий по умолчанию — читатель правила, человек или агент.
|
||||||
- META-10: блок ПОЧЕМУ не удаляется никогда, в том числе после того, как
|
- META-10: блок ПОЧЕМУ не удаляется никогда, в том числе после того, как
|
||||||
норма уехала в линтер.
|
норма уехала в линтер.
|
||||||
- META-1: один файл — ровно один повторяющийся выбор. META-2: конвенция
|
- META-1: один файл — ровно один повторяющийся выбор. META-2: конвенция
|
||||||
|
|||||||
@@ -157,33 +157,51 @@ prefix: META
|
|||||||
переписывает его снова. Направление «конвенция → код» держится ровно тем,
|
переписывает его снова. Направление «конвенция → код» держится ровно тем,
|
||||||
что факт не считается аргументом.
|
что факт не считается аргументом.
|
||||||
|
|
||||||
### META-6. `ДОЛЖЕН` без механической проверки либо механизируется, либо понижается
|
### META-6. Высшая модальность требует воспроизводимого вердикта
|
||||||
|
|
||||||
**ДОЛЖЕН.** Правило, нарушение которого объявлено ошибкой, получает
|
**ДОЛЖЕН.** Правило со ступенью ДОЛЖЕН или НЕ ДОЛЖЕН формулируется так, что
|
||||||
машинную проверку или переводится в СЛЕДУЕТ.
|
двое проверяющих по одному его тексту выносят один и тот же вердикт.
|
||||||
|
|
||||||
**ПОЧЕМУ.** Без проверки правило держится на внимании: нарушения копятся
|
**ПОЧЕМУ.** Проверяют конвенцию в первую очередь агент и человек — они читают
|
||||||
молча и всплывают выборочно — на том ревью, куда дошли руки. Для СЛЕДУЕТ
|
текст правила и по нему смотрят код. Проверка, стало быть, есть у каждого
|
||||||
это честно, а ДОЛЖЕН при этом обещает то, чего не делает, и через несколько
|
правила с первого дня, и её инструмент — формулировка, а не скрипт. Отсюда
|
||||||
таких случаев обесценивает остальные ДОЛЖЕН в файле.
|
цена невоспроизводимой нормы: вердикт зависит от того, кто читал, нарушения
|
||||||
|
всплывают выборочно, а отступление нечем записать — неизвестно, нарушено ли.
|
||||||
|
Для СЛЕДУЕТ это честно, там суждение и есть содержание правила; ДОЛЖЕН в
|
||||||
|
таком виде обещает то, чего не делает, и через несколько случаев обесценивает
|
||||||
|
остальные ДОЛЖЕН в файле.
|
||||||
|
|
||||||
Отсюда следствие: правило, машинная проверка которого невозможна в принципе
|
Отсюда следствие: правило, вердикт которого зависит от суждения по построению
|
||||||
(вкус формулировки, выбор границы, суждение о ситуации), не может быть
|
(вкус формулировки, выбор границы, уместность в конкретном месте), не может
|
||||||
ДОЛЖЕН — его модальность СЛЕДУЕТ по построению, а не по слабости.
|
быть ДОЛЖЕН — его модальность СЛЕДУЕТ по природе нормы, а не по слабости.
|
||||||
|
|
||||||
### META-25. Высшая модальность выбирается, только когда назван вред
|
### META-25. Высшая модальность выбирается, только когда назван вред
|
||||||
|
|
||||||
**СЛЕДУЕТ.** Правило получает ДОЛЖЕН или НЕ ДОЛЖЕН, если в обосновании
|
**СЛЕДУЕТ.** Правило получает ДОЛЖЕН или НЕ ДОЛЖЕН, если в обосновании
|
||||||
сказано, что́ ломается при нарушении.
|
сказано, что́ ломается при нарушении.
|
||||||
|
|
||||||
**ПОЧЕМУ.** Машинная проверка — условие необходимое (META-6), но не
|
**ПОЧЕМУ.** Воспроизводимость вердикта — условие необходимое (META-6), но не
|
||||||
достаточное: проверяемых мелочей больше, чем важных вещей, и без второго
|
достаточное: воспроизводимо проверяемых мелочей больше, чем важных вещей, и
|
||||||
условия единственным фильтром остаётся удобство проверки. Шкала наполняется
|
без второго условия единственным фильтром остаётся удобство проверки. Шкала
|
||||||
опрятностью, читатель перестаёт отличать «уронит прод» от «неаккуратно» — и
|
наполняется опрятностью, читатель перестаёт отличать «уронит прод» от
|
||||||
обесцениваются все ДОЛЖЕН в файле, ровно то, от чего META-6 защищает с
|
«неаккуратно» — и обесцениваются все ДОЛЖЕН в файле, ровно то, от чего META-6
|
||||||
другой стороны. Само это правило машиной не проверяется: «вред назван»
|
защищает с другой стороны. Собственная ступень этого правила — СЛЕДУЕТ:
|
||||||
устанавливается чтением, поэтому его собственная модальность по META-6 —
|
форма обоснования ничем не ограничена, поэтому «вред назван» вердикта не
|
||||||
СЛЕДУЕТ.
|
даёт — один читатель увидит названный вред там, где другой увидит объяснение
|
||||||
|
мотива.
|
||||||
|
|
||||||
|
### META-27. Механизация правила желательна, но ступени не задаёт
|
||||||
|
|
||||||
|
**СЛЕДУЕТ.** Правило со ступенью ДОЛЖЕН получает машинную проверку, когда
|
||||||
|
такую проверку можно написать.
|
||||||
|
|
||||||
|
**ПОЧЕМУ.** Линтер не забывает, ничего не стоит на каждом прогоне и краснеет
|
||||||
|
до ревью, а не на нём: там, где проверка пишется, она дешевле самого
|
||||||
|
внимательного чтения, и путь «находка → конвенция → проверка → удаление
|
||||||
|
прозы» кончается ею (META-9). Условием ступени она при этом не является:
|
||||||
|
проверяющий по умолчанию — читатель правила (META-6), а если требовать
|
||||||
|
скрипт, весь канон стоит в СЛЕДУЕТ до того дня, когда скрипты появятся.
|
||||||
|
Ступень говорит о важности нормы, а не о состоянии инструментов.
|
||||||
|
|
||||||
### META-7. Факт механизации фиксируется в копии со ссылкой на правило
|
### META-7. Факт механизации фиксируется в копии со ссылкой на правило
|
||||||
|
|
||||||
|
|||||||
+19
-5
@@ -162,13 +162,14 @@ Directives, Part 2, по одной форме записи на ступень,
|
|||||||
1. нарушение причиняет названный вред, а не расходится со вкусом — META-25,
|
1. нарушение причиняет названный вред, а не расходится со вкусом — META-25,
|
||||||
он же критерий BCP 14, где высшая модальность резервируется под то, что
|
он же критерий BCP 14, где высшая модальность резервируется под то, что
|
||||||
действительно ломается, и не употребляется для навязывания метода;
|
действительно ломается, и не употребляется для навязывания метода;
|
||||||
2. норма проверяема машиной — META-6, иначе обязательность держится на
|
2. вердикт о нарушении воспроизводим — META-6: по тексту правила двое
|
||||||
внимании и обещает то, чего не делает.
|
проверяющих приходят к одному ответу, иначе обязательность держится на
|
||||||
|
том, кто читал.
|
||||||
|
|
||||||
Не выполнено первое — правилу место в СЛЕДУЕТ или нигде. Не выполнено
|
Не выполнено первое — правилу место в СЛЕДУЕТ или нигде. Не выполнено
|
||||||
второе — в СЛЕДУЕТ. Проверяемость сама по себе не повышает правило до
|
второе — в СЛЕДУЕТ. Воспроизводимость сама по себе не повышает правило до
|
||||||
ДОЛЖЕН: механически проверяемых мелочей больше, чем важных вещей, и
|
ДОЛЖЕН: проверяемых мелочей больше, чем важных вещей, и безразборное
|
||||||
безразборное повышение обесценивает шкалу быстрее, чем её отсутствие.
|
повышение обесценивает шкалу быстрее, чем её отсутствие.
|
||||||
|
|
||||||
Модальность живёт на **правиле**, а не на файле. Файловый статус
|
Модальность живёт на **правиле**, а не на файле. Файловый статус
|
||||||
(`status: рекомендуемая` / `обязательная` в шапке) не используется: он
|
(`status: рекомендуемая` / `обязательная` в шапке) не используется: он
|
||||||
@@ -249,6 +250,19 @@ Directives, Part 2, по одной форме записи на ступень,
|
|||||||
правило обязательно, а о том, чем эта обязательность обеспечена. В 29148 это
|
правило обязательно, а о том, чем эта обязательность обеспечена. В 29148 это
|
||||||
два разных атрибута требования, и здесь тоже два.
|
два разных атрибута требования, и здесь тоже два.
|
||||||
|
|
||||||
|
**Проверяющий по умолчанию — читатель правила**, человек или агент. Канон
|
||||||
|
пишется прежде всего под агента: он читает конвенцию и по ней смотрит код,
|
||||||
|
то есть проверка есть у каждого правила с первого дня, и её инструмент —
|
||||||
|
формулировка нормы. Поэтому вторым условием ДОЛЖЕН стоит воспроизводимость
|
||||||
|
вердикта (META-6), а не наличие скрипта: ступень говорит о важности нормы и о
|
||||||
|
том, сколько внимания она получает при проверке, а не о состоянии
|
||||||
|
инструментов. Линтер сильнее чтения — он не забывает, ничего не стоит на
|
||||||
|
каждом прогоне и краснеет до ревью, — поэтому механизация желательна везде,
|
||||||
|
где проверка пишется (META-27), и остаётся концом пути «находка → конвенция →
|
||||||
|
проверка → удаление прозы». Но обязательным условием высшей ступени она не
|
||||||
|
является: иначе весь канон стоял бы в СЛЕДУЕТ до появления скриптов, которых
|
||||||
|
пока нет ни одного.
|
||||||
|
|
||||||
Когда правило механизировано у всех потребителей, его норма из канона
|
Когда правило механизировано у всех потребителей, его норма из канона
|
||||||
удаляется, а модальность и обоснование остаются:
|
удаляется, а модальность и обоснование остаются:
|
||||||
|
|
||||||
|
|||||||
@@ -4,38 +4,12 @@
|
|||||||
решения. Закрытый вопрос отсюда удаляется — принятое решение живёт в
|
решения. Закрытый вопрос отсюда удаляется — принятое решение живёт в
|
||||||
`README.md`, `GUIDE.md` или `LANGUAGE.md`, а не в этом файле.
|
`README.md`, `GUIDE.md` или `LANGUAGE.md`, а не в этом файле.
|
||||||
|
|
||||||
Две секции: сначала язык и подход, потом канон с тулингом. Пункты 1–9
|
Две секции: сначала язык и подход, потом канон с тулингом. Пункты 1–8
|
||||||
пришли из внешнего ревью описания языка и проверены по файлам на месте.
|
пришли из внешнего ревью описания языка и проверены по файлам на месте.
|
||||||
|
|
||||||
# Язык и подход
|
# Язык и подход
|
||||||
|
|
||||||
## 1. Два определения второго условия ДОЛЖЕН, и META-6 не соблюдается
|
## 1. Граница правила не определена
|
||||||
|
|
||||||
Противоречие двойное, и это самое серьёзное из найденного.
|
|
||||||
|
|
||||||
**Расхождение формулировок.** `LANGUAGE.md` требует, чтобы норма была
|
|
||||||
«проверяема машиной» — то есть проверяема в принципе. META-6 требует, чтобы
|
|
||||||
она «получала машинную проверку» — то есть фактически. Ни одной проверки не
|
|
||||||
реализовано, поэтому по первому чтению канон в порядке, по второму — весь в
|
|
||||||
нарушении. Автору нового правила нечем ответить на вопрос «можно ли ДОЛЖЕН
|
|
||||||
до того, как написан линтер, и как долго».
|
|
||||||
|
|
||||||
**Следствие META-6 массово не соблюдается.** «Правило, непроверяемое машиной
|
|
||||||
в принципе, — СЛЕДУЕТ по построению», а ДОЛЖЕН стоит у META-1 («ровно один
|
|
||||||
повторяющийся выбор» — суждение), META-5 («неверно по существу» — суждение),
|
|
||||||
META-13, META-15, SLOG-8 («уровень выбирается по адресату»), CONF-9
|
|
||||||
(«комментарий, из которого ясно»). META-25 при этом демонстративно понижает
|
|
||||||
**себя** до СЛЕДУЕТ по этой же логике: критерий известен и применяется
|
|
||||||
выборочно.
|
|
||||||
|
|
||||||
Развилка: либо следствие META-6 слишком сильное и его надо ослабить явно —
|
|
||||||
например, различив «проверяемо машиной» и «проверяемо воспроизводимо, в том
|
|
||||||
числе чтением», — либо половина ДОЛЖЕН канона стоит не на своей ступени.
|
|
||||||
Пока непонятно, что из двух, невозможно ни писать новые правила, ни
|
|
||||||
реализовать проверку META-6: она либо промолчит всегда, либо покраснеет на
|
|
||||||
всём каноне, и её отключат — ровно сценарий из обоснования META-12.
|
|
||||||
|
|
||||||
## 2. Граница правила не определена
|
|
||||||
|
|
||||||
Форма объявляет четыре части, но почти каждое крупное правило несёт абзацы
|
Форма объявляет четыре части, но почти каждое крупное правило несёт абзацы
|
||||||
**после** блока ПОЧЕМУ: KEYS-5, SLOG-25, MIGR-11, GERR-26. Язык не говорит,
|
**после** блока ПОЧЕМУ: KEYS-5, SLOG-25, MIGR-11, GERR-26. Язык не говорит,
|
||||||
@@ -55,7 +29,7 @@ META-13, META-15, SLOG-8 («уровень выбирается по адрес
|
|||||||
Решить надо две вещи: где кончается правило и что делать с нормами, которые
|
Решить надо две вещи: где кончается правило и что делать с нормами, которые
|
||||||
уже сидят в хвостах.
|
уже сидят в хвостах.
|
||||||
|
|
||||||
## 3. Примеры в LANGUAGE.md сидят на живых идентификаторах
|
## 2. Примеры в LANGUAGE.md сидят на живых идентификаторах
|
||||||
|
|
||||||
Учебные примеры используют настоящие префиксы канона с номерами, которые в
|
Учебные примеры используют настоящие префиксы канона с номерами, которые в
|
||||||
каноне означают другое:
|
каноне означают другое:
|
||||||
@@ -74,7 +48,7 @@ META-13, META-15, SLOG-8 («уровень выбирается по адрес
|
|||||||
Лечится дёшево: примеры берут префиксы на `X`, зарезервированные как раз под
|
Лечится дёшево: примеры берут префиксы на `X`, зарезервированные как раз под
|
||||||
то, что каноном не занято.
|
то, что каноном не занято.
|
||||||
|
|
||||||
## 4. «Тема» — несущий идентификатор без определения и реестра
|
## 3. «Тема» — несущий идентификатор без определения и реестра
|
||||||
|
|
||||||
META-21 велит ссылаться на соседнюю конвенцию именем темы, манифест
|
META-21 велит ссылаться на соседнюю конвенцию именем темы, манифест
|
||||||
подписывается `topics = ["time", …]`, сборка собирает файл темы из слоёв —
|
подписывается `topics = ["time", …]`, сборка собирает файл темы из слоёв —
|
||||||
@@ -87,13 +61,13 @@ META-21 велит ссылаться на соседнюю конвенцию
|
|||||||
файла темы тихо осиротит все текстовые ссылки во всех копиях.
|
файла темы тихо осиротит все текстовые ссылки во всех копиях.
|
||||||
|
|
||||||
Вопрос уже не гипотетический: пара `arch/db-identifiers.md` против
|
Вопрос уже не гипотетический: пара `arch/db-identifiers.md` против
|
||||||
`lang/go/db-schema.md` (см. вопрос 13) показывает, что имена слоёв одной
|
`lang/go/db-schema.md` (см. вопрос 12) показывает, что имена слоёв одной
|
||||||
темы могут не совпадать. Смежно: `extends: arch/time.md` у SLOG ломает
|
темы могут не совпадать. Смежно: `extends: arch/time.md` у SLOG ломает
|
||||||
гарантию META-24 («базовый слой отсутствовать не может») — она верна только
|
гарантию META-24 («базовый слой отсутствовать не может») — она верна только
|
||||||
для базы своей темы, а машинной проверке негде узнать тему, кроме имени
|
для базы своей темы, а машинной проверке негде узнать тему, кроме имени
|
||||||
файла.
|
файла.
|
||||||
|
|
||||||
## 5. GUIDE выведен из-под проверок ложным основанием
|
## 4. GUIDE выведен из-под проверок ложным основанием
|
||||||
|
|
||||||
`LANGUAGE.md` исключает обвязку из проверок формулировкой «она ключевые слова
|
`LANGUAGE.md` исключает обвязку из проверок формулировкой «она ключевые слова
|
||||||
цитирует, а не употребляет». Для `GUIDE.md` это неверно: META-правила
|
цитирует, а не употребляет». Для `GUIDE.md` это неверно: META-правила
|
||||||
@@ -109,7 +83,7 @@ META-21 велит ссылаться на соседнюю конвенцию
|
|||||||
Честнее развести: `GUIDE.md` язык **употребляет** и проверяется как
|
Честнее развести: `GUIDE.md` язык **употребляет** и проверяется как
|
||||||
конвенция, `LANGUAGE.md` и `README.md` — цитируют.
|
конвенция, `LANGUAGE.md` и `README.md` — цитируют.
|
||||||
|
|
||||||
## 6. МЕХАНИЗИРОВАНО не переживает нового подписчика
|
## 5. МЕХАНИЗИРОВАНО не переживает нового подписчика
|
||||||
|
|
||||||
META-8 запрещает удалять норму, пока механизирована не у всех, и защищает
|
META-8 запрещает удалять норму, пока механизирована не у всех, и защищает
|
||||||
тем самым потребителей, существующих **на момент удаления**. Будущих не
|
тем самым потребителей, существующих **на момент удаления**. Будущих не
|
||||||
@@ -127,7 +101,7 @@ META-8 запрещает удалять норму, пока механизир
|
|||||||
в тексте канона, то есть ровно то, что запрещает META-4. Либо это законное
|
в тексте канона, то есть ровно то, что запрещает META-4. Либо это законное
|
||||||
исключение, и тогда его надо назвать, либо конфликт.
|
исключение, и тогда его надо назвать, либо конфликт.
|
||||||
|
|
||||||
## 7. Семантика ключевых слов в копию не едет
|
## 6. Семантика ключевых слов в копию не едет
|
||||||
|
|
||||||
Строка о версии языка перечисляет слова, но не их значения, а всё
|
Строка о версии языка перечисляет слова, но не их значения, а всё
|
||||||
нетривиальное в шкале живёт только в `LANGUAGE.md`, который в репозиторий не
|
нетривиальное в шкале живёт только в `LANGUAGE.md`, который в репозиторий не
|
||||||
@@ -143,7 +117,7 @@ META-8 запрещает удалять норму, пока механизир
|
|||||||
копиями короткую выжимку семантики; расширить строку о версии до
|
копиями короткую выжимку семантики; расширить строку о версии до
|
||||||
двух-трёх предложений; или признать ограничение и записать его явно.
|
двух-трёх предложений; или признать ограничение и записать его явно.
|
||||||
|
|
||||||
## 8. Две «механические» проверки без источника данных
|
## 7. Две «механические» проверки без источника данных
|
||||||
|
|
||||||
В списке «разбором текста» стоят два пункта, которые без дополнительного
|
В списке «разбором текста» стоят два пункта, которые без дополнительного
|
||||||
реестра нерешаемы:
|
реестра нерешаемы:
|
||||||
@@ -159,7 +133,7 @@ META-8 запрещает удалять норму, пока механизир
|
|||||||
реестр снятых номеров не объявлен частью языка, оба пункта принадлежат
|
реестр снятых номеров не объявлен частью языка, оба пункта принадлежат
|
||||||
списку «чтением».
|
списку «чтением».
|
||||||
|
|
||||||
## 9. Натяжки в опоре на стандарты
|
## 8. Натяжки в опоре на стандарты
|
||||||
|
|
||||||
Три места, где источнику приписано чуть больше, чем в нём есть:
|
Три места, где источнику приписано чуть больше, чем в нём есть:
|
||||||
|
|
||||||
@@ -178,7 +152,7 @@ META-8 запрещает удалять норму, пока механизир
|
|||||||
Остальное в таблице проверку выдержало, включая вторую половину `MAY` из
|
Остальное в таблице проверку выдержало, включая вторую половину `MAY` из
|
||||||
BCP 14 и списки эквивалентных словесных форм ISO Directives.
|
BCP 14 и списки эквивалентных словесных форм ISO Directives.
|
||||||
|
|
||||||
## 10. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
## 9. Одиннадцать таблиц не прочитаны на взаимоисключительность
|
||||||
|
|
||||||
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
|
`LANGUAGE.md` объявил, что строки таблицы решений взаимоисключающи по
|
||||||
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
|
умолчанию, а иной порядок объявляется явно. Объявление не делает таблицы
|
||||||
@@ -193,7 +167,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
Работа читательская, машине не даётся; в список проверок она уже записана в
|
Работа читательская, машине не даётся; в список проверок она уже записана в
|
||||||
разделе «Чтением, потому что машине не даётся».
|
разделе «Чтением, потому что машине не даётся».
|
||||||
|
|
||||||
## 11. Описание языка отдельно от набора конвенций
|
## 10. Описание языка отдельно от набора конвенций
|
||||||
|
|
||||||
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
`LANGUAGE.md` и `GUIDE.md` описывают, **как** пишутся конвенции;
|
||||||
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
`conventions/` — **один конкретный** набор. Сейчас они склеены в одном
|
||||||
@@ -216,7 +190,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
|
|
||||||
# Канон, тулинг, подключение
|
# Канон, тулинг, подключение
|
||||||
|
|
||||||
## 12. Тулинг: две разные задачи в одном `conv`
|
## 11. Тулинг: две разные задачи в одном `conv`
|
||||||
|
|
||||||
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
Сейчас в `conv` смешаны две категории работы, и они расходятся по всему —
|
||||||
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
по частоте запуска, по тому, кто запускает, и по тому, что считается
|
||||||
@@ -247,22 +221,22 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
ссылках: это установка, а не целостность, но список подписок ему нужен из
|
ссылках: это установка, а не целостность, но список подписок ему нужен из
|
||||||
манифеста.
|
манифеста.
|
||||||
|
|
||||||
Часть проверок из этого списка сейчас нереализуема по причинам из вопросов 2
|
Часть проверок из этого списка сейчас нереализуема по причинам из вопросов 1
|
||||||
и 8, так что порядок такой: сначала язык, потом чекер.
|
и 7, так что порядок такой: сначала язык, потом чекер.
|
||||||
|
|
||||||
Перед тем как переписывать, стоит посмотреть на два готовых прототипа:
|
Перед тем как переписывать, стоит посмотреть на два готовых прототипа:
|
||||||
дистрибуцию пакетов Vale (`.vale.ini` → `vale sync` → `styles/`) как образец
|
дистрибуцию пакетов Vale (`.vale.ini` → `vale sync` → `styles/`) как образец
|
||||||
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
манифеста и `vendir.yml` — как пример того, где проходит граница между «чего
|
||||||
хочу» и «что получил».
|
хочу» и «что получил».
|
||||||
|
|
||||||
## 13. Пары слоёв и темы без базы
|
## 12. Пары слоёв и темы без базы
|
||||||
|
|
||||||
Отложено сознательно, но список стоит держать перед глазами:
|
Отложено сознательно, но список стоит держать перед глазами:
|
||||||
|
|
||||||
- `SLOG` объявляет `extends: arch/time.md` — расширение **чужой** темы.
|
- `SLOG` объявляет `extends: arch/time.md` — расширение **чужой** темы.
|
||||||
Сборщик темы `logging` на это наткнётся: базового слоя с темой `logging`
|
Сборщик темы `logging` на это наткнётся: базового слоя с темой `logging`
|
||||||
нет, а `arch/time.md` он тянуть не должен. Чинится переводом в обычную
|
нет, а `arch/time.md` он тянуть не должен. Чинится переводом в обычную
|
||||||
ссылку «связано». Вдобавок это ломает гарантию META-24 — см. вопрос 4.
|
ссылку «связано». Вдобавок это ломает гарантию META-24 — см. вопрос 3.
|
||||||
- Темы без арх-слоя: `db-schema`, `errors`, `web-ui`. Собираются в файл с
|
- Темы без арх-слоя: `db-schema`, `errors`, `web-ui`. Собираются в файл с
|
||||||
одной секцией — само по себе не ломается, но это и есть тот невыделенный
|
одной секцией — само по себе не ломается, но это и есть тот невыделенный
|
||||||
арх-слой из известного долга.
|
арх-слой из известного долга.
|
||||||
@@ -274,7 +248,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
- Вынос арх-ядра из `errors` и `logging` закроет две хрупкие ссылки из
|
||||||
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
`web-ui` (стек) в go-слой — единственные ссылки стек → язык в каноне.
|
||||||
|
|
||||||
## 14. Подключение к репозиториям
|
## 13. Подключение к репозиториям
|
||||||
|
|
||||||
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
Ничего ещё не подключено. Кандидаты — jellybit и pet-project-server.
|
||||||
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
Понадобится: заполнить локальную часть копий тем, что сейчас в этих
|
||||||
@@ -283,7 +257,7 @@ BCP 14 и списки эквивалентных словесных форм IS
|
|||||||
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
строка в `AGENTS.md` каждого потребителя про то, что файлы в
|
||||||
`docs/conventions/` — копии.
|
`docs/conventions/` — копии.
|
||||||
|
|
||||||
## 15. Тулинг на Go, живущий независимо
|
## 14. Тулинг на Go, живущий независимо
|
||||||
|
|
||||||
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
Сейчас `conv` — питоновский скрипт внутри канона, то есть тулинг и данные в
|
||||||
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
одном репозитории и правятся одним движением. Мысль: вынести в отдельный
|
||||||
@@ -292,10 +266,10 @@ Go-бинарь со своим релизным циклом, ставить ч
|
|||||||
|
|
||||||
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
Что за этим стоит помимо вкуса: независимый бинарь физически не даёт править
|
||||||
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
инструмент «заодно» с правкой конвенции, работает против **любого** канона и
|
||||||
любого потребителя — что прямо требуется вопросом 11, — и снимает питон из
|
любого потребителя — что прямо требуется вопросом 10, — и снимает питон из
|
||||||
зависимостей репозиториев-потребителей.
|
зависимостей репозиториев-потребителей.
|
||||||
|
|
||||||
Порядок обратный ожидаемому: пока вопрос 11 не сделан, инструмент всё равно
|
Порядок обратный ожидаемому: пока вопрос 10 не сделан, инструмент всё равно
|
||||||
работает против одного конкретного канона, и независимый релизный цикл ему
|
работает против одного конкретного канона, и независимый релизный цикл ему
|
||||||
нечего обслуживать. Сначала 11, потом 15. Разделение из вопроса 12 при этом
|
нечего обслуживать. Сначала 10, потом 14. Разделение из вопроса 11 при этом
|
||||||
дешевле заложить сразу, чем отпиливать потом.
|
дешевле заложить сразу, чем отпиливать потом.
|
||||||
|
|||||||
Reference in New Issue
Block a user