Status: Experimental · Phase: Deploy, Operate · Priority: P1.1
Detect mismatch between expected (approved baseline configuration, declared deploy posture, and program artifacts) and actual (live resolved configuration and on-device agent reports).
# Compare approved baseline against live project config
spanda drift --baseline configs/approved/ --config spanda.toml
# Program + live deploy agent check (uses .spanda/deploy-agents.json)
spanda drift rover.sd --agent Rover@JetsonOrin --config spanda.toml
# Program drift against all registered deploy/fleet agents
spanda drift rover.sd --config spanda.toml
# Config subcommand alias
spanda config drift --baseline configs/approved/ rover.sd --json
# Readiness with baseline drift gates
spanda readiness rover.sd --config spanda.toml --baseline configs/approved/
# Readiness with live deploy agent attestation drift
spanda readiness examples/showcase/secure_boot/rover.sd --agent Rover@Jetson
| Dimension | Expected | Actual |
|---|---|---|
| Configuration | Baseline merged TOML | Live merged TOML |
| Fleet | Baseline fleet tree | Live fleet tree |
| Device | Baseline DeviceRegistry |
Live device records |
| Provider / Package | Baseline manifests | Live manifests |
| Mapping | Baseline logical map | Live logical map |
| Program | .sd sensors/actuators |
Live logical map |
| Hardware | deploy … to <profile> |
Agent /v1/status hardware_profile |
| Firmware | Device firmware_version in config |
Agent /v1/status firmware_version |
| Program hash | SHA-256 of .sd file |
Agent /v1/status program_hash |
| Packages | ResolvedSystemConfig.packages |
Agent /v1/status packages |
| Attestation | trust.jetson / trust.pi imports in program |
Agent /v1/status attestation_verified, attestation_contract, boot_state |
Deploy agents (spanda deploy agent) and fleet agents (spanda fleet agent) expose drift fields on
GET /v1/status:
program_hash — set on rollouthardware_profile — from deploy assignment or rollout payloadfirmware_version — optional rollout metadatapackages — optional rollout metadatahealthy — agent health flagattestation_contract — secure-boot contract from SPANDA_ATTESTATION_CONTRACTattestation_verified — true when SPANDA_ATTESTATION_VERIFIED=1boot_state — optional boot posture from SPANDA_BOOT_STATEGET /v1/drift?baseline_id=<snapshot> uses detect_operational_drift_full — config manifest drift,
program alignment (when Control Center is started with --program), policy enforcement drift, and
live fleet/deploy agent findings. Reports roll up into seven enterprise dimensions: configuration,
firmware, package, provider, capability, policy, safety.
Set SPANDA_DRIFT_SCAN_INTERVAL_SECS (for example 3600) when starting Control Center to run
background scans against the latest config snapshot (or SPANDA_DRIFT_SCAN_BASELINE_ID). Failed
scans emit ConfigDrift alerts; high-severity findings open SRE incidents automatically.
| Endpoint | Description |
|---|---|
GET /v1/drift/scans |
History of scheduled and manual scans |
POST /v1/drift/scan |
Trigger a scan (Bearer token); optional baseline_id in JSON body |
# Manual scan via CLI
spanda control-center drift scan --baseline-id cfg-123
spanda control-center drift scans
ConfigDriftReport — structured findings with dimension, severity, message, and optional
path. Medium-or-higher severity fails the check (exit code 1).
spanda-config::driftexpected_agent_states + detect_agent_driftspanda readiness --baselinespanda readiness --agent <Robot@Hardware>configuration.md · readiness.md · platform-maturity-roadmap.md