Advanced Metal Research
GitHub Contact AMR

Error codes and fault states

On this page
  1. Reading an error
  2. rt-control reason codes
  3. Request envelope and transport
  4. Authority and session
  5. Handles
  6. Native admission
  7. Program admission and execution
  8. Dense program format (.rdt)
  9. Recovery and anchors
  10. Cell I/O
  11. Jog lane and jog clock
  12. Events, telemetry and resources
  13. WebSocket transport (remote jog)
  14. Remote TLS (startup and handshake)
  15. Startup and socket ownership
  16. Native command reasons
  17. Native jog reasons
  18. Native grant reasons
  19. Execution fault bits
  20. Axis readiness
  21. Handle states
  22. Other components

When rt-control refuses a request it returns HTTP 409 (413 for an oversized body, 404 for an unknown resource) with a reason code in error. This page lists every reason in the contract, grouped by area, with the operations that can return it. It also covers the numeric reasons inside native receipts, the execution fault bits and the per-axis readiness states in Status.

The reason list is generated from reasons in rt-core/protocol/application-v1.schema.json, which the contract calls the closed catalogue of adapter-owned labels. The same names are exported as constants by all three clients: control.Reason… in Go, rosie::rt_control::Reason… in C++ and Reason… in TypeScript.

Tip

Machine-readable. Every reason on this page, with its meaning, group, HTTP status and the operations that return it, as JSON.

Reading an error#

409 ConflictJSON
{
  "schema": "rosie.rt-control.response.v1",
  "operation": "start_trajectory",
  "error": "not_ready",
  "native_result": {
    "Sequence": 31,
    "Handle": 7,
    "Generation": 3,
    "Operation": 292,
    "Result": 1,
    "Reason": 2,
    "AxisMask": 511
  }
}
  • error is a catalogue label, or a diagnostic that starts with one (native_limit_exceeded: segment=2 sample=118 axis=J3). Some errors are open diagnostics with no label: JSON decoding, I/O, context and native text such as RTCore rejected operation 0x124: reason 2. Match on the leading label.
  • native_result is present when the core refused a command. Read its numeric Reason in native command reasons.
  • native_jog_result is present when the jog lane refused. Read StateReason, ControlReason or UpdateReason in native jog reasons.
  • data.limit_violation accompanies native_limit_exceeded and native_segment_rate_exceeded from a program upload. It gives kind (position or velocity), segment, sample, axis, value, limit and unit (rad or rad/s).

Treat an unknown label, a malformed reply or a transport failure as an unknown outcome. Stop producing motion, send an authenticated stop if you can, and reconcile Status before acquiring again.

rt-control reason codes#

All 153 reasons, in 13 groups. Returned by links to the operation on the rt-control HTTP API page. The meaning is the contract's own text where it gives one, and otherwise a description of the code that raises the reason.

Request envelope and transport#

ReasonMeaningReturned by
body_too_largeThe request body exceeds the operation's size cap (HTTP 413).Every POST /v1/control operation and prepare_program (HTTP 413)
invalid_request_envelopeThe body is not a JSON object, or an envelope key is not a string.Every POST /v1/control operation
duplicate_request_fieldA field appears twice in the request envelope.Every POST /v1/control operation
schema_mismatchschema is not rosie.rt-control.request.v1.Every POST /v1/control operation
unknown_operationoperation is not a POST /v1/control operation.Every POST /v1/control operation
unknown_endpointNo route for this method and path.Any unknown method or path.
trailing_request_dataData follows the JSON object.Every POST /v1/control operation
request_envelope_changedThe fully decoded request differs from the admitted envelope prefix.Every POST /v1/control operation
invalid_request_idrequest_id is null, not a string, or not 1..64 printable ASCII bytes.Every POST /v1/control operation
request_id_conflictThe request_id was already used in this session with a different payload.Every POST /v1/control operation
capability_unimplementedThe named target capability is unavailable and performs no operation.halt, io_arm, io_disarm, mark_telemetry, abort, readiness. Also abort, readiness.
invalid_control_generationX-Control-Generation is missing or not a decimal uint64.prepare_program

Authority and session#

ReasonMeaningReturned by
no_grantHalt requires a current valid application grant.halt, io_arm, io_disarm, prepare_trajectory, start_program
wrong_generationHalt carries a different application or native generation.halt, io_arm, io_disarm, prepare_trajectory, start_program
inhibitedHalt requires an armed, enabled machine with current readiness; Stop or a fault takes precedence.halt, io_arm, io_disarm, prepare_trajectory, start_program
control_already_ownedAnother session holds authority, or a Stop is still draining.acquire
control_session_staleThe session or generation is not the current one, the lease has expired, a Stop is in flight, or the lease cannot cover the measured round trip.Every POST /v1/control operation that carries a fence
session_principal_mismatchThe session belongs to a different TLS principal/pair or local transport authority.Every POST /v1/control operation that carries a fence
daemon_restartedThe session or snapshot belongs to a previous core incarnation.Every POST /v1/control operation that carries a fence
expiredThe lease deadline has passed.renew, release, stop
fenceA well-formed session this adapter never issued, or authority revoked while a Start was in progress.Every POST /v1/control operation that carries a fence
authority_binding_mismatchcontroller is empty or longer than 63 bytes, or the binding's pair, revision or digest does not match the deployment.acquire
application_generation_exhaustedThe uint64 grant generation is exhausted; no further Acquire is possible without a restart.acquire
invalid_requested_leaseAcquire requested lease is negative or exceeds the unverified absolute 10000 ms bound.acquire

Handles#

ReasonMeaningReturned by
unknown_handleNo such handle in this adapter incarnation.start_trajectory, discard_trajectory, start_program
trajectory_identity_mismatchRaw trajectory Start identity differs from its immutable preparation.start_trajectory
handle_activeThe handle has started, so it cannot be discarded.discard_trajectory
handle_startedThis handle has already started.start_trajectory, start_program
handle_consumedThis handle completed or was replaced by a later execution.start_trajectory, start_program
handle_discardedThis handle was explicitly discarded.start_trajectory, start_program
handle_supersededA committed replacement superseded this handle.start_trajectory, start_program
handle_retiredCancellation or uncertain ownership permanently retired this handle.start_trajectory, start_program

Native admission#

ReasonMeaningReturned by
native_rejectedNative command admission refused; inspect native_result.Every POST /v1/control operation
not_readyThe controlled axes do not satisfy native movement readiness.start_trajectory, start_program. Also native command reason 2 inside native_result.
mode_conflictAnother active motion mode prevents this operation.restore_anchor, begin_jog, jog, start_trajectory, start_program
outside_limits_outwardA motion request increases an exterior limit excursion or crosses the opposite boundary; native command reason 8 and jog reason 15.Every POST /v1/control operation
pdo_mapping_mismatchAssigned PDO mapping differs from the registered layout; corrected bring-up is required.Native command reason 7 in native_result, and fault bit 11 (restart_required) in RecoveryStatus.

Program admission and execution#

ReasonMeaningReturned by
busyAn upload of the same kind is already in progress, the lifecycle lock is busy, or the core has no free plan slot.prepare_trajectory, prepare_program
program_identity_missingThe .rdt header lacks a required identity field.prepare_program
program_identity_mismatchNo program is prepared, or the supplied identity differs from it.start_program
program_already_executingA trajectory or program is executing.reset_fault, recovery_status, prepare_program, start_program
manifest_revision_mismatchThe program's manifest_revision differs from the adapter's pair revision.prepare_program
process_io_executor_not_qualifiedThe program needs torch output, which is not qualified and always refused.prepare_program, start_program
dense_axis_map_requires_nine_idsThe cell describes more rotary axes than the nine-column dense format carries.prepare_program
invalid_dense_axis_mapThe cell's rotary axes cannot be mapped onto the dense columns.prepare_program
unmapped_dense_axisThe configured dense axis ID has no native axis mapping.prepare_program
native_limit_exceededA dense sample exceeds a native position, velocity or declared sampled acceleration limit.prepare_program
native_segment_rate_exceededAn interpolated program segment exceeds a velocity limit.prepare_program
segment_boundary_discontinuousRejected moving segment seam; boundary is the zero-based join index and gap_counts reports second minus first in source-axis counts.prepare_program
native_execution_failedNative execution ended without successful completion; motion completion is unverified. Inspect status and fault details, correct the cause, and explicitly prepare and start a new execution.execution.error in GET /v1/status when a started program ends without completing.

Dense program format (.rdt)#

ReasonMeaningReturned by
dense_schema_mismatchDense header schema does not name the supported dense trajectory format.prepare_program
header_truncatedDense header length or header bytes are incomplete.prepare_program
header_json_invalidDense header cannot be decoded or encoded as JSON.prepare_program
sample_encoding_mismatchDense record encoding or record byte count is unsupported.prepare_program
axis_count_mismatchDense axis count differs from the nine-axis format.prepare_program
limits_invalidDense velocity limits must contain nine positive finite values.prepare_program
segments_emptyDense program contains no motion segments.prepare_program
segment_index_out_of_orderDense segment indices do not follow payload order.prepare_program
kind_invalidDense segment kind is not freespace, weld or dwell.prepare_program
segment_too_shortDense segment contains fewer than two samples.prepare_program
block_layout_invalidDense block offsets, record lengths or segment metadata counts are inconsistent.prepare_program
blob_length_mismatchDense payload length differs from the declared block extents.prepare_program
block_sha256_mismatchDense segment bytes do not match their declared SHA-256 digest.prepare_program
reserved_flags_setDense sample sets a reserved process flag bit.prepare_program
total_sample_count_mismatchDense total sample count differs from its segment counts.prepare_program
sample_count_overflowDense source sample count exceeds the format capacity.prepare_program
trajectory_digest_mismatchDense content digest differs from the declared trajectory digest.prepare_program
time_grid_invalidDense sample clock is not on its declared positive time grid.prepare_program
nonfinite_sampleDense time, position or velocity sample is not finite.prepare_program
qd_limit_exceededDense supplied velocity exceeds its declared format limit.prepare_program
torch_outside_weldDense torch flag is set outside a weld segment.prepare_program
q_step_exceededDense position step exceeds the format velocity allowance.prepare_program
boundary_qd_nonzeroRejected dense segment endpoint velocity above the stationary boundary tolerance.prepare_program
boundary_q_discontinuityRejected dense segment position gap or accumulated normalisation correction above the boundary tolerance.prepare_program
duration_mismatchDense segment duration differs from its final sample clock.prepare_program

Recovery and anchors#

ReasonMeaningReturned by
reset_requires_inhibitedThe machine is armed, jogging, commissioning or homing, or no fresh observation arrived within 1 s.reset_fault, recovery_status
fault_persistsAt least one fault condition still prevents clearing.reset_fault
recovery_observation_unavailableNo matching native recovery observation arrived within 1 s.restore_anchor, reset_fault, recovery_status
invalid_axis_maskThe requested axis mask is empty or names an axis outside the configured group.restore_anchor
anchor_missingNo persisted anchor exists for the axis.restore_anchor
anchor_identity_mismatchThe persisted anchor was recorded under a different configuration digest, drive identity or home epoch.home, restore_anchor
anchor_source_invalidThe drive reports no valid absolute source for the axis.home, restore_anchor
anchor_disagreesThe current absolute source disagrees with the persisted anchor beyond the profile tolerance.restore_anchor
anchor_store_ioAnchor storage could not be read or persisted; unverified stored evidence cannot authorize restoration. Filesystem details are logged locally and never returned in public feedback. Retry after checking the anchor directory and disk. On restore refusal, the anchor store is not modified.home, restore_anchor

Cell I/O#

ReasonMeaningReturned by
io_not_configurednamed cell I/O is not configured.io_arm, io_disarm, prepare_trajectory, prepare_program, start_program
io_not_armedExplicit io_arm is required before an ON intent.io_arm, io_disarm, prepare_trajectory, start_program
io_fast_input_unsatisfiedA cyclic fast contact is invalid or not satisfied.io_arm, io_disarm, prepare_trajectory, start_program
io_readback_disagreementIndependent physical feedback disagrees with commanded output.io_arm, io_disarm, prepare_trajectory, start_program
io_torch_unqualifiedtorch-class markers remain refused pending hardware qualification.io_arm, io_disarm, prepare_trajectory, prepare_program, start_program
io_marker_lateA process marker missed its one-cycle delivery bound.io_arm, io_disarm, prepare_trajectory, start_program
io_exchange_lostCell I/O has no current complete exchange.io_arm, io_disarm, prepare_trajectory, start_program
io_marker_invalidA marker names an unknown output or has an invalid sample association.prepare_program

Jog lane and jog clock#

ReasonMeaningReturned by
independent_jog_unavailableThe native client offers no independent jog lane, or the remote listener is closing.jog_clock, jog_status, begin_jog, update_jog, end_jog
jog_session_staleThe jog session or its generation is not the current one.update_jog, end_jog
jog_session_or_sequence_staleNo open jog session for this generation, or the source sequence did not increase.update_jog
jog_publisher_busyAnother producer is publishing jog input at the same moment.update_jog
jog_invalid_frameA binary jog frame could not be decoded.update_jog
jog_stream_idleRejected: no complete jog stream frame within the cell's jog input-age ceiling (250 ms on LAN).update_jog
jog_clock_unqualifiedRemote clock qualification is disabled (the --remote-jog-* flags are 0) or calibration is incomplete.update_jog
jog_clock_invalid_budget_or_exchangeA malformed calibration or Begin message, or an invalid timing budget.update_jog
jog_clock_incarnation_mismatchThe clock incarnation is empty or differs from the negotiated one.begin_jog, update_jog
jog_clock_mapping_generation_mismatchThe input was mapped with an out-of-date clock mapping.update_jog
jog_clock_moved_backwardsA source timestamp went backwards, or input predates the Begin sample.update_jog
jog_clock_arithmetic_rangeConverting a jog timestamp would overflow.update_jog
jog_clock_uncertainty_exceededThe calibrated offset interval is wider than --remote-jog-max-uncertainty-ns.update_jog
jog_clock_calibration_expiredThe remote clock calibration is older than --remote-jog-calibration-max-age-ns.update_jog
jog_clock_exchange_inconsistentThe calibration timestamps are not causally consistent.update_jog
jog_input_too_oldThe conservatively mapped input age exceeds the cell's input-age ceiling.update_jog
jog_input_entirely_futureThe whole input interval lies in the host's future.update_jog
jog_input_deadline_expiredThe input's deadline has already passed.update_jog

Events, telemetry and resources#

ReasonMeaningReturned by
invalid_event_cursorEvent cursor must be a single unsigned decimal uint64.subscribe_events
event_cursor_aheadCursor exceeds this adapter incarnation's newest event; obtain current status/incarnation before resuming.subscribe_events
event_cursor_lostEvent history was lost; reconcile status before resuming from a new cursor.subscribe_events. Client side: the C++ EventCursorLost exception.
invalid_telemetry_cursorTelemetry after must be one unsigned decimal uint64 cursor.telemetry
telemetry_cursor_aheadTelemetry cursor exceeds the current ring sequence; reconcile incarnation before restarting.telemetry
telemetry_busyRing header remained torn after the bounded 16 samples; retry the same cursor. Established streams continue with an empty batch and unchanged cursor.telemetry
telemetry_unavailableA compatible live telemetry ring could not be observed.telemetry
telemetry_label_invalidTelemetry label must contain 1..128 valid UTF-8 bytes.mark_telemetry
resource_unknownDigest is malformed or absent from the loaded compiled resource set; HTTP 404.resource

WebSocket transport (remote jog)#

ReasonMeaningReturned by
invalid websocket upgradeMissing or wrong upgrade headers, or a Sec-WebSocket-Key that is not 16 bytes.WSS upgrade: HTTP 400, text/plain.
hijacking unavailableThe server could not take over the connection for the WebSocket.WSS upgrade: internal; the upgrade is abandoned.
fragmentation rejectedA fragmented or continuation WebSocket frame was received.WSS: connection closed with code 1009.
invalid frame flagsReserved WebSocket bits are set, or a client frame is not masked.WSS: reserved bits set or unmasked frame; closed with code 1002.
noncanonical lengthA WebSocket payload length is not in its shortest encoding.WSS: closed with code 1002.
payload too largeA WebSocket frame payload exceeds 4096 bytes.WSS: frame over 4096 bytes; closed with code 1009.
invalid opcodeAn unknown WebSocket opcode.WSS: closed with code 1002.
control payload too largeA WebSocket control frame carries more than 125 bytes.WSS: control frame over 125 bytes; closed with code 1002.
invalid UTF-8A WebSocket text frame is not valid UTF-8.WSS: text frame; closed with code 1007.
invalid close payloadA WebSocket close frame has a one-byte payload.WSS: closed with code 1002.
invalid close codeA WebSocket close frame carries a reserved or invalid code.WSS: closed with code 1002.
invalid close reasonA WebSocket close reason is not valid UTF-8.WSS: closed with code 1007.

Remote TLS (startup and handshake)#

ReasonMeaningReturned by
remote pair-id required--pair-id is missing or not a valid token while the remote listener is enabled.rt-control startup; exits with status 2.
remote CA, certificate, key and CRL are required--remote-listen is set but a CA, certificate, key or CRL path is missing.rt-control startup; exits with status 2.
remote CA must contain one CA certificateThe CA file is not exactly one PEM certificate.rt-control startup; exits with status 2.
remote CA must be a self-signed component CAThe CA certificate is not a CA, or is not self-signed.rt-control startup; exits with status 2.
invalid remote CRL PEMThe CRL file is not a PEM X509 CRL.rt-control startup; exits with status 2.
unsupported critical CRL extensionThe CRL has a critical extension that rt-control does not support.rt-control startup; exits with status 2.
remote CRL not currentThe current time is outside the CRL's validity window.Startup (exit 2), and every later TLS handshake.
remote client must be issued directly by component CAThe client chain is not exactly the leaf plus the component CA.TLS handshake: the client is refused before any HTTP request.
remote client revokedThe client certificate's serial number is on the CRL.TLS handshake: the client is refused before any HTTP request.
remote identity SAN must be an opaque tokenA rosie-principal or rosie-pair URI has a host, user, path, query or fragment.TLS handshake: the client is refused before any HTTP request.
invalid remote principal SANThe client certificate has more than one rosie-principal URI, or its token is invalid.TLS handshake: the client is refused before any HTTP request.
invalid remote pair SANThe client certificate has more than one rosie-pair URI, or its token is invalid.TLS handshake: the client is refused before any HTTP request.
remote principal/pair binding mismatchThe certificate lacks a principal or pair, or its pair is not this cell's --pair-id.TLS handshake: the client is refused before any HTTP request.

Startup and socket ownership#

ReasonMeaningReturned by
invalid_pair_configuration_bindingAt startup: --pair-id is empty, --pair-revision is 0, or --configuration-sha256 does not match the core.rt-control startup; exits.
resource_artifact_invalidStartup refuses an incomplete, mismatched, malformed or over-bound compiled resource artefact.rt-control startup; exits.
socket owned by a live processAnother live process holds the socket's lock. rt-control exits with status 3.rt-control startup; exits with status 3.
socket ownership cannot be verifiedThe existing socket path is not a socket owned by this user.rt-control startup; exits.
socket lock ownership cannot be verifiedThe .lock file beside the socket is not a private regular file owned by this user.rt-control startup; exits.
socket lock path changedThe .lock file was replaced while rt-control was claiming it.rt-control startup; exits.
bound path is not a socketAfter binding, the socket path is not the expected socket.rt-control startup; exits.
process start time unavailablert-control could not read its own start time to record socket ownership.rt-control startup; exits.
unsupported socket ownership transportAn internal socket type other than stream or datagram was requested.rt-control startup; exits.

Four error texts carry detail after a fixed prefix: unmapped_dense_axis: <axis>, native_limit_exceeded: segment=<index> sample=<index> axis=<id>, discard preparation <handle>: <cause> and jog_native_rejected_<number> (a WebSocket jog refusal carrying a native jog reason). At startup, remote CRL signature: <cause> reports a CRL that the CA did not sign.

Native command reasons#

The numeric native_result.Reason in a refused command, from reasons in rt-core/protocol/control.json. native_result.Result is 0 accepted, 1 rejected or 2 prepared.

CodeName
0none
1invalid_command
2not_ready
3mode_conflict
4unknown_handle
5capacity
6invalid_trajectory
7pdo_mapping_mismatch
8outside_limits_outward
9no_grant
10wrong_generation
11inhibited
12io_not_configured
13io_not_armed
14io_fast_input_unsatisfied
15io_readback_disagreement
16io_torch_unqualified
17io_marker_late
18io_exchange_lost

rt-control translates some of these into labels: 8 becomes outside_limits_outward, the cell I/O reasons 9..18 become their labels for I/O-carrying calls, and 2 or 3 during a Start become not_ready or mode_conflict. Anything else arrives as native_rejected. Reason 5 (capacity) during a program upload arrives as busy, and reason 6 (invalid trajectory) retires every prepared handle.

Native jog reasons#

The numeric reasons of the jog lane, from jog_reasons in control.json. They appear in JogObservation (StateReason, ControlReason, UpdateReason), in /v1/jog/ingress counters and in WebSocket jog_native_rejected_<n> refusals. Reason 14 (limited) is an accepted, governed state, not a failure.

CodeName
0none
1closed
2mode_conflict
3not_ready
4wrong_identity
5invalid_generation
6stale_sequence
7invalid_vector
8invalid_timing
9expired
10authority_lost
11clock_reset
12generation_exhausted
13ramping
14limited
15outside_limits_outward

Native grant reasons#

The numeric GrantReason in GrantObservation, from grant_reasons in control.json.

CodeName
0none
1invalid
2connection_mismatch
3native_generation_mismatch
4disconnected
5busy
6not_inhibited
7stale_generation
8identity_mismatch
9expired
10clock_regression
11inactive
12axis_mask_mismatch

Execution fault bits#

core.execution_fault_reasons in Status is a bit mask of latched execution faults. RecoveryStatus.faults[] names each latched bit with its affected axes and recovery class. This table is generated from rt-core/include/fault_recovery.hpp, whose own comments call the policy unverified.

BitNameInvalidates HomeNeeds drive resetNeeds reverificationRecovery class
0start_discontinuityNoNoNoreset_clears
1position_rateYesNoNorehome_required
2cycle_deadlineNoNoNoreset_clears
3cycle_sleepNoNoNoreset_clears
4target_leadYesNoNorehome_required
5following_errorNoNoNoreset_after_condition_clears
6coordinate_referenceYesNoNorehome_required
7drive_readinessNoYesYesreset_after_condition_clears
8bus_transportNoNoYesreset_after_condition_clears
9completion_timeoutNoNoNoreset_clears
10brake_holdNoNoYesrestart_required
11pdo_mapping_mismatchYesNoYesrestart_required
12collision_watchdogNoNoNoreset_after_condition_clears
13cell_ioNoNoNorestart_required

Loss of trusted feedback can also require Home even when the table says No. Unknown bits persist.

Recovery classWhat to do
reset_clearsreset_fault clears it.
reset_after_condition_clearsRemove the cause first (fresh feedback below the bound, a healthy bus, drives fault-free), then reset_fault.
rehome_requiredreset_fault, then Home (or a qualified restore_anchor) on the axes in rehome_axis_mask before any motion.
restart_requiredReset cannot clear it. Investigate, then restart the core.

reset_fault outcomes per bit are cleared, persists or rehome_required. Any persistent selected condition refuses the whole reset with fault_persists.

Axis readiness#

Each entry of axes[] in Status has a readiness string: the first failing gate for that axis, in this order. It is an observation, not authority: the group gates (lease, Arm, bus, faults, configuration) still apply at every Start.

OrderValueWhat to do
1faultedA drive alarm or latched safety fault. Diagnose it and follow its recovery class.
2mode_mismatchThe drive is not in CSP mode (8). Wait for an expected commissioning transition, or restore the mode.
3home_requiredHome, or a qualified restore_anchor, before Start.
4coordinate_invalidCoordinates are not trustworthy. Restore feedback, configuration or Home evidence.
5not_enabledEnable the axis under a live grant.
6not_operation_enabledWait for the CiA402 transition to Operation Enabled.
7brake_waitWait for the brake release delay.
8readyThis axis passes. Check the whole selected group and the grant before Start.

The code also defines warning_tolerated: one tolerated drive warning on an axis without an encoder battery. It grants nothing, and Home and Enable keep their normal gates.

Handle states#

HandleRecord.state, from handle_states in the schema. Only prepared can start, and terminal states never regain permission.

StateMeaning
preparedNative preparation acknowledged. Start may be attempted under current authority.
startedNative Start accepted. Observe completion.
consumedCompleted, or a later execution replaced it.
discardedDiscarded.
supersededA newer preparation replaced it.
retiredStop, grant or connection loss, or an uncertain outcome. Never startable again.

Other components#

Components that call rt-control add their own refusal codes. They are documented with each component:

ComponentCodesPage
Dense trajectory daemonnative_grant_active, native_acquisition_required, native_home_unavailable, native_torch_unsupported, pause_unsupported, cleanup_uncertain, home_requiredDense trajectory daemon
Cartesian motion serverrt_core_position_input_unresolved, rt_core_run_not_admitted, rt_core_home_abandonedCartesian motion server
Offline programming servertarget_changed, cell_configuration_mismatch, backend_retired, motion_plan_seam_refused, motion_plan_unjoined, motion_plan_no_trajectoryOffline programming HTTP API
Weld planner admissionmotion_join_failed, seam_not_planned, motion_not_verified, motion_result_invalid, candidate_only_requires_m4Weld planner HTTP API