Repository navigation
v1.0.0 — стабильный контракт
decision-cascade 1.0.0 — стабильный контракт
Первый стабильный релиз. Функционально 1.0.0 совпадает с 0.16.0: новых
возможностей нет — меняются статус и обещания. Всё, что вы использовали в
0.16.0, продолжает работать без изменений.
Что теперь обещано
Контракт 1.x не ломается. Достаточно повышения не-major версии, чтобы
обновляться без правок кода:
- эндпоинты
POST /decisions,/decisions/batch,/v1/systemone,
/v1/feedback,GET /info,/health,/ready,/metrics; schema_version = "1"и типизированные ответы Noul/Choice/Score;- формат паков (
heads.pt+metadata.json+temperature.json): пак,
собранный любой версией1.x, читается всеми версиями линейки; - смысл переменных
DECISION_*— новые добавляются, старые не меняют значение.
Депрекация — заранее и по правилам. Поверхность объявляется устаревшей
минимум за две минорные версии: заголовки Deprecation/Sunset/Link,
предупреждение в лог, запись в CHANGELOG. Удаление — только в major. Механика
проверяется на старте и тестом, а не «на словах».
Числа воспроизводятся. Любая цифра из docs/benchmarks.md получается
командой из документации: датасеты закреплены ревизиями, uv.lock проверяется
в CI, веса и сырые прогоны лежат ассетами релизов.
Что не обещано
1.0 — про контракт и воспроизводимость, а не про универсальность:
- Zero-shot нет. Головы «из коробки» случайны: нужно обучить пак на своей
разметке (train_heads, SFT/RLCD) или скачать опубликованный. - Beta-поверхности могут меняться в минорных версиях: risk-aware каскад
(DECISION_CASCADE_RISK_BUDGET), benefit-каскад
(DECISION_CASCADE_POLICY=benefit), option-scoring голова, дообучение
энкодера (finetune_encoder) и по обратной связи (training.feedback). - Дрейф домена лечится ограниченно — измерено в
docs/drift.md: дообучение
с replay даёт до +0,8 п.п. сверх контроля при 1000 примерах, а новый набор
классов требует отдельного пака.
Полная таблица «стабильно / beta» — docs/stability.md §2.
Что изменилось в репозитории
src/__init__.py—1.0.0;pyproject.toml— классификатор
Development Status :: 5 - Production/Stable.- README переведён из беты в стабильный статус, добавлено описание гарантий.
docs/stability.md: что обещает1.x, чем1.0.0отличается от0.16.0,
какие поверхности остаются beta, политика депрекации с примером1.0.0 → 1.2.0.tests/test_release.py— версия, README, CHANGELOG и классификатор пакета
проверяются на согласованность в CI.
Проверки
ruff check src api eval training tests examples scripts— чисто;pytest -q— 752 passed, 10 skipped;- покрытие
src+api— 94% (2444 строки, гейт 90%); shellcheckпо всем shell-скриптам — чисто;uv lock --check— ок;pip-audit -r requirements.txt— известных уязвимостей нет;- smoke установленного wheel —
smoke ok; - ночной регресс: 11 прогонов подряд зелёные (30.10–09.11), AG News
0.8800 и RouterBench 0.5480 стабильны бит-в-бит, delta 0.0 к baseline.
Артефакты
decision_cascade-1.0.0-py3-none-any.whl/.tar.gz;v1.0.0-weights.tar.gz+v1.0.0-manifest.json— 7 паков голов
(public / routerbench / support × distilgpt2 / gpt2 / gpt2-medium);v1.0.0-benchmarks.tar.gz— прогоны сравнения, benefit-замеры,q-файлы,
калибровка, sha256 (38 файлов).
Веса и замеры сравнения не менялись относительно 0.16.0: релиз — про статус,
а не про новые веса. Контрольные числа: AG News test 0.8800 (gpt2), RouterBench
0.5480, support 0.9258. Дообученный энкодер — из
релиза v0.12.0.
Обновление
Ломающих изменений нет:
cd /opt/decision-model
sudo bash deploy/upgrade.sh /opt/decision-modelСкрипт делает бэкап состояния, git pull, обновляет venv, перезапускает
systemd-юнит и ждёт /ready; при неудаче — сам откатывает данные и код.