Тема
Уровни изменений
Правила процесса, источник — конституция репозитория контракта (принцип V). Это не часть слепка: слепок фиксирует форму контракта, а уровни описывают, как её менять.
| Уровень | Что разрешено | Версия контракта | Что требует CI |
|---|---|---|---|
| Добавление | необязательные аргументы входа с умолчанием, равным старому поведению; необязательные поля выхода | не меняется | версия пакета поднята, запись в CHANGELOG |
| Механический разлом | переименование, перекладка структуры при том же смысле | +1 | правило перевода между соседними версиями |
| Смысловой разлом | новый инструмент с новым именем, старый устаревает | не меняется | дата заката у устаревшего инструмента |
Версия пакета (семантическая) и версия контракта (целое число в _meta) — разные величины. Версия пакета растёт при любом изменении слепка; версия контракта — только при механическом разломе.
Как менять контракт
- Поправить авторскую схему в
src/schemas/. npm run check:lock— перегенерировать слепок и документацию.- Поднять версию пакета в
package.json. - Добавить запись в
CHANGELOG.mdс уровнем изменения:
markdown
## 0.2.0 — 2026-10-01 [механический разлом]
- norm_sales_funnel: поле `quarter` переименовано в `period`; правило перевода 1 → 2.- Для механического разлома — добавить правило в
translationsи поднять версию контракта ровно на одну ступень. Для смыслового разлома — проставить дату заката у устаревшего инструмента. npm run check:release— убедиться, что гейт проходит. То же самое сделает CI.