Validation & QA¶
Functional tests (no valves)¶
- Preview compile
python -m multibios.run_protocol --yaml config/example_protocol.yaml --hardware config/hardware.yaml --dry-run --interactive --seed 1
-
Inspect
preview.html
. Confirm state rails read sensibly; RCK markers align to commits. -
Guardrail test
Create two actions with commits closer thanpreload_lead_ms + max(load_req_ms,rck_pulse_ms)
and confirm the compiler raises a helpful error. -
Randomization reproducibility
Run twice with the same--seed
and confirm: - Identical
digital_edges.csv
- Identical
preview.html
(modulo timestamps inmeta.json
)
Hardware tests (with MFC loopback or live MFCs)¶
- MFC AO/AI tracking
- Step
mfc.*_setpoint
and verifyAI
tracks setpoint inpreview.html
. -
Optional: add per-channel scales (V→sccm) and check steady-state error < your tolerance.
-
Latency sanity
-
Use the viewer’s vertical rulers and hover readouts to confirm spacing between S-bit switch, LOAD_REQ, and RCK matches YAML timing.
-
Valve drive sanity (dry run)
- Disconnect 24 V loads; probe RCK & S-lines for clean edges and no ringing.