Repository navigation
RAGRAF 0.11.0
Выпуск о том, чтобы поставка доказывала себя, а не утверждала.
Что появилось
Контракт-пин. Описание операции сравнивается с подтверждённым набором; расхождение
называется причиной, а не просто «разошлось». Сводка с прошлым выпуском раскладывается на
ломающие, совместимые и изменённые. Ломающее изменение проходит только при мажорной версии
или поимённом разрешении с причиной — «разрешить всё» не предусмотрено.
Журнал смен набора. Кто, когда и что принял — как операция, а не как запись в файле.
Хранение: 20 смен на объект и всё за 180 дней; строки, на которые ссылается действующий
пин, не удаляются.
Пробы поведения. Операция вызывается на образцах, ответ хешируется и сверяется с
прошлым выпуском. Отказ очищается от путей, ревизий и хешей: иначе «изменилось» срабатывало
бы на каждой сборке. Приём пробы требует имени — без автора приёма нет.
Итог выпуска одной строкой. Вердикт, код возврата и три представления (stdout, markdown,
JSON) считаются в одной точке, поэтому не могут разойтись. Блок changes называет, что
изменилось с прошлого выпуска, с местами — без значений.
Отчёт выпуска в поставке. RELEASE-REPORT.md собирается из ops_pins.json, лежащего
рядом, сверяется воротами по байтам и входит в checksums.sha256. Подмена версии или
вердикта в отчёте — блокировка, а не предупреждение.
Поверхность
79 операций, 86 инструментов MCP, 26 подкоманд CLI, 20 возможностей
(в 0.10.0 — 76 и 83). Отпечаток поверхности 78789dc47078.
Проверено
tests/test_contract_pin.py— 242 проверки, провалов 0.tests/test_release_gate.py— 51 проверка, провалов 0.- Объявления версии в одном месте (
src/ragraf/__init__.py), повторы — где требует формат. - BOM/CRLF чисто; ссылки
файл:строка— на уровне опубликованного дерева.
Известное
Полный гейт выпуска требует источника с каталогом community/; машинная конфигурация
(config/ragraf.yaml) в поставку не входит, поэтому наборы, которым она нужна, здесь
не прогоняются.