View a markdown version of this page

Safety envelope for remote actuation - Guidance for Connected Mobility on AWS

Safety envelope for remote actuation

UDS 0x14 (Clear Diagnostic Information) and 0x31 (RoutineControl) change the state of the vehicle. Some routines — an ABS pump cycle, an injector cut-out test, an evaporative-emissions purge — are physically unsafe if executed at road speed or with the engine unexpectedly running. This is where the transport-layer design ends and the application-layer safety envelope begins.

The guidance’s pattern is a routine safety class on every actuation-capable operation:

Class Preconditions Remotely invocable Enforcement point

INERT

Vehicle connected

Yes — reads, self-tests, identity queries

UI affordance, cloud allow-list, sidecar allow-list

STATIONARY

Speed = 0, engine on, transmission in park or neutral

Yes, from an authorized bay-side operator

Cloud-side check at execution time against vehicle-state cache; sidecar re-checks against live vehicle state immediately before dispatch

SERVICE_ONLY

Facts the platform cannot observe (vehicle on a lift, key removed, battery disconnected)

No

Refused at cloud-side catalog lookup; sidecar refuses defense-in-depth

Two invariants hold this envelope together.

Preconditions are enforced in executable code, not in prose. A source comment stating "do not run this off a moving vehicle" is not a control. An assertion in the cloud handler that rejects a STATIONARY invocation when the vehicle-state cache reports speed greater than zero is a control. An assertion in the sidecar that re-checks CAN-observed vehicle state before dispatching 0x31 is a defense-in-depth control. Both are required, because the cloud check can be bypassed by a compromised credential and the sidecar cannot be bypassed by anything short of firmware compromise.

Verdict narration is verbatim. If a diagnostic result carries a safety verdict — for example, "stop driving, engine at critical temperature" — that phrase is narrated verbatim to the operator, sourced from a deterministic catalog, never summarized. This matters especially when a language model is added to the read path: an LLM may summarize conversational output, but summarization of a safety verdict is a behavior change disguised as UX. The guidance separates the deterministic result — the catalog-derived phrase — from any conversational surface that describes it.

Rate limiting: protect the resource, not the label

The vehicle’s CAN bus has physical bandwidth limits, and ECU diagnostic response windows are bounded. A rate limiter that caps "full-scan requests" but not "single-ECU requests" creates a bypass: nine sequential single-ECU reads impose the same CAN load as one nine-ECU scan.

The pattern is to rate-limit the underlying resource, not the label. Tokens are accounted per ECU-read, so N single-ECU reads cost N tokens whether they arrive as one request or nine. This lives in the sidecar, which observes the actual bus traffic.