Development Workflow¶
This document separates day-to-day development from the clean control-room use case.
Two Entry Points¶
Control-Room Entry Point¶
Use:
Purpose:
- legacy PV profile only
- live EPICS only
- minimal command-line surface
- clean handoff file for operators and testers
- CLI fallback if the GUI fails or a display session is unavailable
Run:
python3 control_room/betagui_safe.py
python3 control_room/betagui.py
python3 control_room/betagui_cli_safe.py
python3 control_room/betagui_cli.py
Development Entry Point¶
Use:
Purpose:
- mock mode
- digital twin mode
- profile switching
- general development and debugging
Run:
python3 development/betagui.py
python3 development/betagui.py --live --pv-profile twin-mls --pv-prefix leo
Recommended Developer Loop¶
- read the legacy notes and parity docs
- run mock tests locally
- run the mock GUI
- run the digital twin if the change touches EPICS-facing behavior
- only then try the control-room launcher in read-only live mode
Test Commands¶
python3 -m unittest tests.test_matrix_io tests.test_mock_measurement tests.test_output_regression tests.test_measure_cli tests.smoke_test_import
python3 scripts/run_mock.py --headless
python3 scripts/quick_diag.py
python3 scripts/run_digital_twin_demo.py
Digital Twin Workflow¶
Start the twin:
apptainer run support/digital_twin/pyat-as-twin-softioc.sif
Then in another terminal:
python3 scripts/run_digital_twin_demo.py
python3 development/betagui.py --live --pv-profile twin-mls --pv-prefix leo
Use --allow-writes only when intentionally exercising write paths against the
twin.
GitLab-Friendly Documentation Layout¶
This docs/ directory is already organized so it can be used directly in GitLab
repository browsing. If you want a more wiki-like landing page, use index.md
as the root document and link to the other pages from there.