NextStatNextStat

Демо: Physics Assistant

Полностью воспроизводимый end-to-end workflow, который демонстрирует NextStat как AI-оракул: чтение гистограмм из .root, построение HistFactory workspace, запуск скана аномалий, расчет discovery p-значений и верхних пределов, экспорт артефактов для построения графиков.

Что делает

  • Читает .root-гистограммы через нативный ROOT-ридер NextStat
  • Строит HistFactory workspace из наблюдаемых данных и шаблонов сигнала/фона
  • Предлагает скан аномалий по массовым окнам
  • Считает discovery p-значения (p₀, Z₀) и верхние пределы CLs
  • Экспортирует JSON-артефакты для графиков и опциональные PNG-рендеры

Режимы транспорта

РежимОписаниеТребования
ЛокальноВсе инструменты в одном процессе через Python-привязкиУстановлен wheel NextStat
СерверСтатистические инструменты по HTTP, чтение ROOT остается локальнымЗапущен nextstat-server
DockerКонтейнер агента + nextstat-server через docker composeТребуется Docker

Запуск демо

Локальный режим

# из корня репозитория:
PYTHONPATH=bindings/ns-py/python python demos/physics_assistant/run_demo.py \
  --transport local \
  --out-dir demos/physics_assistant/out/local \
  --render

Серверный режим

# Сначала запустите сервер:
nextstat serve --port 3742

# Затем запустите демо:
export NEXTSTAT_SERVER_URL=http://127.0.0.1:3742
PYTHONPATH=bindings/ns-py/python python demos/physics_assistant/run_demo.py \
  --transport server \
  --out-dir demos/physics_assistant/out/server

Docker-режим

docker compose -f demos/physics_assistant/env/docker/docker-compose.yml up --build

Вывод пишется в demos/physics_assistant/env/docker/out/ на хост-машине.

Артефакты вывода

ФайлОписание
demo_result.jsonОсновной bundle результатов (валидируется по схеме)
tool_calls.jsonУпорядоченный лог вызовов tools (requests + конверты tool_result.v1)
nominal_workspace.jsonНоминальный workspace модели
best_anomaly_workspace.jsonЛучшее окно из скана аномалий
anomaly_scan_plot_data.jsonМассивы для построения графиков (JSON)
plots/*.pngОпциональные PNG (если включен --render)

Заметка по дизайну: почему чтение всегда локальное

Inference server намеренно не экспонирует nextstat_read_root_histogram потому что файловый I/O это поверхность атаки. Демо полностью упражняет серверный режим, отправляя на сервер только workspace_jsonдля инференс-вызовов.