Consumer id used by both rbnx-cli (deploy) and Soma when opening
channels to call Driver(...) during boot. Atlas just records the
edge for bookkeeping — the id is only ever read in inspect_atlas
output, so we keep one stable string instead of inventing per-caller
ones (would only add noise).
Max time we’ll wait for one Driver(CMD_*) RPC to return. 90s gives
generous slack for slow-warming sensors (Webots’s camera can take
30–50s on cold boot). Primitive driver-side waits should stay
strictly below this so they own their own timeout semantics rather
than racing the CLI deadline.
Issue one Driver(cmd) RPC against a freshly-connected channel, then
release the channel. Returns the response’s state string on success;
bails when ok=false or the RPC itself fails. Mirrors rbnx-cli’s boot
behaviour for both CMD_INIT and CMD_ACTIVATE so Soma drives the same
lifecycle transitions.
Mirrors robonix_codegen::contract_gen::contract_id_to_service_name.
Uniform PascalCase: robonix/primitive/chassis/driver →
RobonixPrimitiveChassisDriver. No prefix stripping. Full gRPC
service path: /robonix.contracts.<this>/Driver.
Linux /proc/<pid>/stat field 22. The value is stable for the lifetime of
a process and lets the watchdog distinguish its boot parent from a reused
PID. Returns None when procfs is unavailable or the process exited.
Prove that one process carries the exact boot ownership marker inherited
from its rbnx boot parent. This is also the portable identity fallback for
the detached watchdog on targets (notably macOS) without Linux procfs start
ticks. Inspection failure is a mismatch so stale PIDs are never trusted.
Checked variant used by persisted boot-state teardown. A boot id is
inherited by every wrapper and provider through RBNX_BOOT_ID; requiring a
matching process in the recorded PGID prevents a stale state file from
killing an unrelated process group after PID/PGID reuse.
Enforce that Atlas exposes exactly the lifecycle Driver selected by the
package manifest. This check runs before INIT, so config can never be sent
to a missing, mismatched, or ambiguous runtime service.
Snapshot provider ids and their opaque registration generations. Stable
package ids may be taken over on restart, so ids alone cannot correlate a
spawn; registration_id changes on every successful Atlas Register but not
on heartbeat/state/capability updates.