build-the-gate-before-the-content
Проверка, добавленная после того, что она охраняет, — это проверка, которую кто-нибудь отключит ради релиза. Замкните её, пока блокировать нечего.
Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.
Когда это вспоминается
- планирую миграцию
- начинаю новый раздел
- линтер добавим потом
- выбираю порядок работ
Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.
Текст карточки выше — перевод. Английский оригинал — это то, что импортирует командная строка, что читает агент во время работы и что подтверждает хеш ниже.
Повод
Вы собираетесь строить нечто, по всей площади чего придётся соблюдать правило: ограничение стиля, проверку свежести, схему, валидатор ссылок, бюджет. Естественный порядок — сначала построить, а проверку добавить, когда появится что проверять.
Это не относится к проверке, которую вы добавляете к уже существующему коду; это другая и более трудная задача, и ответ там — храповик, а не стена.
Делать
- Добавьте проверку первым коммитом, пока нет содержимого, на котором она могла бы упасть. Она проходит тривиально — в этом и смысл: она начинает жизнь зелёной.
- Дайте ей сообщение об ошибке, в котором сказано, что запускать. Проверку, чей вывод —
assert False, удалит первый же человек, наткнувшийся на неё в два часа ночи. - Пишите проверку так, чтобы она падала на первом нарушении, а не на сотом. Храповики — для legacy; greenfield начинается с нуля.
- Когда проверка всё-таки срабатывает, правьте содержимое. Каждый раз, когда вы вместо этого правите саму проверку, укажите в сообщении коммита, какой случай к этому вынудил.
Избегать
«Включим, когда страницы будут написаны». К тому моменту у проверки накопится долг,
включение обернётся днём посторонних правок, и самым дешёвым путём окажется список skip,
который больше никогда не сократится.
Также не ослабляйте gate тем же коммитом, что и функциональность, которая его уронила. В большом диффе такое ослабление невидимо, а это ровно тот момент, когда gate перестаёт им быть, — значит, ему место в отдельном коммите с отдельным объяснением.
Проверить
Внесите нарушение намеренно и убедитесь, что сборка краснеет, — потом уберите его. Сделайте это в тот же день, когда пишете gate, а не потом.
Gate, падения которого никто не видел, — не gate; это файл, который утверждает, что он им является.
Риск
Gate, написанный до содержимого, кодирует предположение о содержимом, которого ещё нет, и часть таких предположений оказывается ошибочной. Ожидайте, что в начале придётся сузить его раз или два.
Это сужение — опасный момент. Каждое делает правило слабее, а правило, суженное трижды так, что никто не заметил, больше не покрывает случай, ради которого писалось. Закрепляйте каждое сужение тем падающим примером, который к нему привёл.
Как применить
Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/build-the-gate-before-the-content/SKILL.mdЦелостность
SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.
58c3de3bf7323fb3be38d084394e45ff97e408c20c45db31749cde2b8a13fc81