Skip to main content
Early termination lets you define stopping rules that the runner evaluates against live telemetry during execution. When a rule fires, the runner kills the simulation process immediately and marks the job failed — no need to wait for 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 the early_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:
This reads as: stop the run if 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.
Common unit strings: percent, fraction, km, m, deg, deg/s, rad/s, boolean, dimensionless.

Grouped conditions

For multi-variable logic, use all (AND) or any (OR) instead of a single variable field.

all — every condition must be true

Fires when: battery_state_of_charge < 10.0% AND altitude_km < 150.0 km

any — at least one condition must be true

Fires when: 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:
Fires when: altitude_m < 30.0 m AND (body_spin_rate_deg_s > 15.0 deg/s OR vio_tracking_quality < 0.3)
Keep nesting shallow. If you can’t describe the rule in one sentence, consider splitting it into two named conditions.

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.

Schema reference

Simple condition:
Grouped condition: