job_timeout_seconds.
This is useful for catching degenerate runs early: an orbit that has decayed, a vehicle that is tumbling, a battery that has hit a critical floor. Stopping bad runs fast saves compute and keeps your results clean.
Enabling early termination
Early termination is configured in theearly_termination block of your batch submission:
Set
enabled: false to include conditions in your config without activating them — useful for staging rules before you trust them in production.
Simple condition
Each condition compares one telemetry variable against a threshold:battery_state_of_charge < 10.0 percent.
Condition fields
Operators
Units
units is explicit metadata — Lynx does not infer unit conversions. The value must match the scale your scenario uses when emitting that variable.
percent, fraction, km, m, deg, deg/s, rad/s, boolean, dimensionless.
Grouped conditions
For multi-variable logic, useall (AND) or any (OR) instead of a single variable field.
all — every condition must be true
battery_state_of_charge < 10.0% AND altitude_km < 150.0 km
any — at least one condition must be true
body_spin_rate_deg_s > 15.0 deg/s OR battery_state_of_charge < 10.0%
Nested groups
all and any can be nested when the logic requires it:
altitude_m < 30.0 m AND (body_spin_rate_deg_s > 15.0 deg/s OR vio_tracking_quality < 0.3)
Multiple conditions
You can define multiple top-level conditions. The run stops when any one of them fires:Trigger events
When a condition fires, the runner records a structured event that appears in your job result and platform logs:
This makes every early termination explainable — you can see exactly which condition fired, when, and what the simulation state was at that moment.