OSPREY E2E Scenarios

Two cross-paradigm scenarios. Tier ≥ 2 required (tier 1 lacks vacuum gauges and most cavity PVs in every paradigm).

A — SR07 vacuum burst

File: tests/e2e/test_vacuum_burst_scenario.py · pure telemetry, no logbook.

Operator prompt

"We lost about 5 mA of beam yesterday around 14:32. Did the vacuum do anything weird around then?"

Required PVs

Seeded event

WhenWall-clock anchor 14:32:08 on the day before today (re-fires each day inside the window)
SR07 gaugebaseline 5×10−8 Torr + Gaussian spike, width 15 s, amplitude 1.5×10−7
SR01–06,08–12flat baseline + small noise (SR07 leads the field in anti-correlation by >0.7)
DCCT500 mA baseline − 5 mA Gaussian dip (width 30 s) at the same instant
Target rSR07 vs DCCT ≈ −0.88 over a 10-min window

Source: data/simulation/machine.json (vacuum-burst scenario), synthesized by osprey.simulation.SimulationEngine.

Pass criteria

B — RF cavity C1 thermal excursion

File: tests/e2e/test_rf_cavity_correlation_scenario.py · logbook + telemetry must converge.

Operator prompt

"The beam dumped this morning. Figure out what happened and plot the data."

Required PVs

Seeded telemetry (window-relative positions)

C1 events(0.20, 1.0), (0.55, 0.7), (0.85, 1.2) — three excursions, last worst
C1 temperature27.0 °C baseline + daily oscillation + envelope × 7 → peaks ~34 °C
C1 reflected power5 kW baseline + envelope × 80 → peaks ~85 kW
C1 forward power450 kW baseline − envelope × 440 → trips to ~0
C1 voltage2.5 MV baseline − envelope × 2.4
C1 frequency499.654 MHz − envelope × 0.001 (thermal detuning)
C2 (stable ref)single minor blip (0.55, 0.25) on all fields, baseline ~26.5 °C

Source: data/simulation/machine.json (rf-thermal scenario; events on the SR:RF:CAVITY:01 / SR:RF:KLYSTRON:01 channels), synthesized by osprey.simulation.SimulationEngine.

Seeded logbook (rebased to "now")

DEMO-026today−4 · 03:20 — beam dump, C1 reflected-power trip, names C2 unaffected
DEMO-027today−3 · 10:00 — investigation, three thermal excursions, cooling-manifold blockage
DEMO-028today−2 · 14:00 — repair, calcium-carbonate deposits, flow restored (rebase pivot)

Pass criteria

Cross-scenario invariants

Tier setting (critical). init_project in tests/e2e/sdk_helpers.py defaults tier=1, which contains no SR:VAC:GAUGE channels — the vacuum agent cannot discover the gauges and spins without retrieving data. Both scenario tests therefore pass tier=3 explicitly so the full simulated facility is discoverable. If you clone these scenarios, do the same.