Spanda

Configuration Validation

spanda config validate runs structural and safety checks on the resolved configuration (after all layers and fragments are merged).

Rules

Code Severity Check
fleet.missing warning No [fleet] section
fleet.empty warning Fleet has no robots
robot.no_compute error Robot without compute node
hardware.profile_unknown warning Unknown hardware profile name
hardware.profile_sensor_gap warning Profile expects sensor not present
hardware.profile_actuator_gap warning Profile expects actuator not present
provider.unknown error Provider not in registry or config
provider.missing warning Device without provider
device.port_conflict error Same port assigned twice
device.bus_conflict error Same bus assigned twice
compute.duplicate_serial error Duplicate compute serial number
device.firmware_missing warning No firmware/version metadata
safety.no_emergency_stop error Actuator missing emergency_stop
security.untrusted_actuator error Untrusted device controls actuator
security.identity_missing warning Networked device without identity
device.duplicate_ip error Same IP assigned to multiple devices
device.duplicate_mac error Same MAC assigned to multiple devices
device.duplicate_serial error Same serial assigned to multiple devices
device.ip_unreachable warning IP probe failed (SPANDA_CONFIG_PROBE_NETWORK=1)
device.protocol_provider_mismatch warning Protocol unlikely for provider
device.endpoint_missing warning Network device without endpoint or IP
device.insecure_endpoint warning Endpoint uses insecure scheme
device.remote_actuator_insecure error Remote actuator without TLS/signature
mapping.logical_ambiguous error Logical name maps to multiple devices without redundancy
device.redundant_missing_priority error Redundant group missing unique failover priority
device.redundant_group_singleton warning Redundant group has only one member
mapping.gap error/warning Logical-to-physical mapping issue

Provider validation

Providers are validated against:

  1. Declared [providers] entries in config fragments
  2. Built-in framework packages (spanda-gps, spanda-lidar, spanda-canbus, …)

Package validation

Dependencies declared in merged config are collected for package loading. Full package resolution still flows through spanda install and the lockfile.

Readiness integration

When running readiness with --config:

spanda readiness patrol.sd --config spanda.toml

Config validation runs first. Errors block readiness evaluation. The hardware profile from the first configured robot is used as the default --target when not specified.

Health and security

Exit codes

spanda config validate exits non-zero when any error-severity finding is present. Warnings do not fail validation by default but appear in reports.