NextStatNextStat

Артефакты отчёта о валидации

NextStat производит два типа артефактов валидации: Apex2 JSON-отчёты (доступно сейчас) и единый пакет отчёта о валидации (JSON + PDF) через nextstat validation-report.

Быстрый старт

# Сгенерировать JSON-отчёт о валидации
nextstat validation-report \
  --apex2 tmp/apex2_master_report.json \
  --workspace workspace.json \
  --out validation_report.json \
  --deterministic

# Также сгенерировать 7-страничный PDF (готов к аудиту)
nextstat validation-report \
  --apex2 tmp/apex2_master_report.json \
  --workspace workspace.json \
  --out validation_report.json \
  --pdf validation_report.pdf \
  --deterministic

# Режим только JSON (без PDF, без зависимости от matplotlib)
nextstat validation-report \
  --apex2 tmp/apex2_master_report.json \
  --workspace workspace.json \
  --out validation_report.json \
  --deterministic

# Единая точка входа (Apex2 + JSON + PDF одной командой)
make validation-pack

Схема

Выходной файл соответствует схеме validation_report_v1. Получить схему можно так:

nextstat config schema --name validation_report_v1

Структура отчёта

РазделСодержимое
dataset_fingerprintSHA-256 workspace JSON, число каналов/бинов/сэмплов, сводка наблюдений (total/min/max)
model_specPOI, имена параметров/границы/constraints, коды интерполяции, цель, оптимизатор
environmentВерсия NextStat, версия Python, платформа, toolchain Rust, версия pyhf, настройки детерминизма
apex2_summarySHA-256 master report, статусы pass/fail по наборам, худшие дельты, общий вердикт
regulated_reviewПримечания по данным, предназначение (intended use), область охвата, ограничения, матрица уверенности с учетом рисков (risk-based)

Наборы валидации Apex2

Apex2 master runner агрегирует результаты всех наборов проверок в один детерминированный JSON:

НаборЧто проверяет
pyhfПаритет NLL и expected_data с pyhf в точках init/random/POI-varied
histfactory_goldenДетерминированная регрессия по заранее записанным эталонным значениям
regression_goldenПаритет коэффициентов/SE/NLL для OLS/logistic/Poisson/NegBin против R/statsmodels
survivalКонтрактные тесты + паритет Cox PH со statsmodels (Efron/Breslow)
pharma_goldenЭталонные аналитические PK + smoke-тесты NLME-фита
timeseriesВалидация фильтра/сглаживателя Калмана и EM
nuts_qualityГейты качества: divergence rate, R-hat, ESS, пороги E-BFMI
sbcSimulation-based calibration: равномерность рангов (NUTS)
bias_pullsToy-ансамбли: проверка смещения μ̂ и ширины pull
root3-стороннее сравнение профильного скана (ROOT/RooFit vs pyhf vs NextStat)

PDF-вывод (7 страниц)

  • Обложка: версия схемы, общий pass/fail, флаг deterministic, SHA-256 workspace и Apex2
  • Отпечаток набора данных: хеш workspace, каналы, число бинов, сводка наблюдений
  • Спецификация модели: POI, таблица параметров, коды интерполяции, настройки оптимизатора
  • Итоги Apex2: таблица pass/fail по наборам с худшими дельтами
  • Окружение: версии NextStat/Python/pyhf, платформа, настройки детерминизма
  • Регуляторный обзор: предназначение (intended use), область охвата, ограничения, уверенность с учетом рисков (risk-based)
  • Футер: отметка о том, что отчет сформирован nextstat validation-report (OSS-эталон)

Для рендера PDF требуется matplotlib (установите через pip install "nextstat[viz]"). В режиме deterministic timestamp'ы в метаданных PDF закрепляются для воспроизводимого вывода.

Манифест и подпись

Пакет валидации создает validation_pack_manifest.json с SHA-256 хешами и размерами файлов для всех артефактов. Манифест удобен как индекс для репликации и (опционально) криптографической подписи.

  • validation_pack_manifest.json: SHA-256 и размеры файлов для всех основных артефактов пакета
  • Опционально: флаги --sign-openssl-key и --sign-openssl-pub создают подписи Ed25519
  • Выводы: .sha256, .sha256.bin, .json.sig и (опционально) .pub.pem
  • Проверка: openssl pkeyutl -verify -pubin -inkey ... -rawin -in ... -sigfile ...
# Подписать манифест Ed25519
bash validation-pack/render_validation_pack.sh \
  --out-dir tmp/validation_pack \
  --workspace workspace.json \
  --deterministic \
  --sign-openssl-key tmp/manifest_priv.pem \
  --sign-openssl-pub tmp/manifest_pub.pem

Кому это нужно

  • ФВЭ: сохранение анализа и готовность к переинтерпретации (RECAST / экосистема pyhf)
  • Фарма: пакеты валидации IQ/OQ/PQ для поддержки регуляторных требований (21 CFR Part 11)
  • FinTech: артефакты model risk management (SR 11-7 / SS1/23 model inventory)

Граница open-core

OSS-версия предоставляет validation_report.json (машиночитаемый, deterministic) и validation_report.pdf (рендер через matplotlib). Enterprise-расширения (коммерческая лицензия) могут добавить брендированные PDF-шаблоны, цифровые подписи, интеграцию audit trail и автоматическое планирование.

Как использовать для доверия

  • Публикуйте validation_report.json и PDF для каждого tagged release (или еженедельно из CI)
  • Давайте ссылки с: футера главной (Trust), страницы цен (Compliance), enterprise/security страницы
  • Прикладывайте к письмам для регулируемых клиентов (IQ/OQ/PQ, SR 11-7 стиль ревью)
  • Используйте JSON-схему, чтобы утверждения были проверяемыми: "pass/fail + худшие дельты + хеши"