ScenarioSpec gains an optional "description" field. Listing (both ListLocalScenarioFiles and ListScenarioFilesOnRemovableMedia, via the new scenarioDescription helper) reads it out of each file without requiring full ParseScenarioJSON validation to succeed, so a listing never hides a scenario over an unrelated validation issue. The webui Scenario page now renders Name/Description/Found-on/Run instead of just Name/Found-on — a bare filename rarely tells anyone but the author what a scenario actually does. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bee test scenarios
A scenario is a plain JSON file describing an ad-hoc diagnostic run: which
commands to execute (sequentially or in parallel) and what to sample in the
background while they run — without hardcoding a new test into bee's own
code. See audit/internal/platform/scenario.go (ParseScenarioJSON,
ScenarioSpec) for the full field reference.
Running one
bee run <path-to-file.json>
or, for a bare name (no /, no .json):
bee run <name>
which resolves scenarios/<name>.json by checking, in order: (1) the
scenarios shipped with the image itself — always available, no media
needed — then (2) any mounted removable drive (e.g. the same USB stick
already plugged in for blackbox), for scenarios authored on another
machine and dropped there without a network path onto the host. Same
resolution powers the "6. Scenario" page in the web UI.
bee scenario run <arg> is the same command under a longer name.
Files checked in here
nvbandwidth-all-gpu-power-watch.json— the scenario that reproduced the CG480-S6053 reboot: fullnvbandwidthacross all GPUs at once (the per-GPU-socket passes alone never reproduced it), withipmitool sensorandnvidia-smipower/temp sampled every 2s in the background so a crash mid-run still leaves telemetry to check for a power-delivery correlation.gpu_indicesis host-specific — update it to match the GPU indicesnvidia-smi -Lactually reports on the box under test before running.
This directory is the source of truth; iso/builder/build.sh's "preparing
staged overlay" step rsyncs the whole overlay tree — including a checked-in
copy under iso/overlay/usr/share/bee/scenarios/ — into the built image, so
anything meant to ship baked-in needs to exist in both places (this repo
doesn't auto-copy one into the other). platform.LocalScenariosDir
(/usr/share/bee/scenarios on the built host) is what bee run <name>/the
web UI actually reads at runtime.
Adding more
Not every scenario needs to ship in the image. For a one-off test on a
specific host (especially air-gapped), it's simpler to write the JSON file
directly onto the blackbox USB stick under scenarios/<name>.json and run
bee run <name> — no code change, no rebuild. Check a scenario into
iso/overlay/usr/share/bee/scenarios/ only when it's worth keeping around
as a reusable/named test that should be available on every host without a
USB stick.