Mission continuity ensures autonomous operations continue when robots fail, degrade, disconnect, or go offline. Spanda answers:
Related: self-healing.md · mission-assurance.md · concurrency.md
The continuity framework lives in spanda-assurance and composes with readiness, recovery,
capability, hardware verification, and trust gates.
| Component | Role |
|---|---|
MissionContinuityManager |
Top-level orchestrator — evaluates full continuity |
MissionCheckpointManager |
Captures and resolves mission checkpoints |
MissionStateTransferManager |
Builds snapshots and plans state transfer |
SuccessionPlanner |
Ranks successor candidates |
TakeoverCoordinator |
Coordinates takeover with safety validation |
MissionDelegationManager |
Plans ownership transfer and task redistribution |
MissionRecoveryPlanner |
Integrates recovery actions after disruption |
ContinuationDecisionEngine |
Decides continue / restart / partial restart / abort |
| Mode | Behavior |
|---|---|
resume |
Continue from last checkpoint |
restart |
Start mission again |
partial_restart |
Restart only the failed stage |
shadow_takeover |
Backup agent already synchronized |
hot_takeover |
Immediate replacement (e.g. battery critical) |
cold_takeover |
Replacement initialized after failure |
human_takeover |
Transfer control to operator |
# Full continuity evaluation
spanda continuity <file.sd> [--failed <name>] [--progress <pct>] [--trigger <kind>]
# Coordinate takeover
spanda takeover <file.sd> [--failed <name>] [--successor <name>] [--progress <pct>]
# Mission delegation / ownership transfer
spanda delegate <file.sd> [--failed <name>] [--to <name>] [--progress <pct>]
# Rank successor candidates
spanda succession <file.sd> [--failed <name>] [--scope fleet|swarm|robot]
Flags:
| Flag | Description |
|---|---|
--failed / --failed-robot |
Entity that failed or went offline |
--progress |
Mission progress percent (0–100) |
--trigger |
robot_failed, battery_critical, fleet_offline, swarm_lost, … |
--scope |
robot, fleet, swarm, group, crowd, mission_cluster |
--successor / --to |
Target entity for takeover/delegation |
--json / --markdown / --html |
Report format |
Robot ScannerAlpha goes offline at 72% progress during WarehouseInventoryScan.
spanda continuity examples/showcase/continuity/warehouse.sd \
--failed ScannerAlpha --progress 72 --trigger robot_failed
Evaluation:
| Factor | Result |
|---|---|
| Replacement available | Yes (ScannerBeta, ScannerGamma) |
| Capability match | 100% |
| Health | Healthy |
| Readiness | Mission-ready |
| Decision | Resume from checkpoint at 72% |
MissionStateSnapshot captures:
MissionContextTransfer carries environment, safety, and health context to the successor.
SuccessorSelectionPolicy weights:
Candidates blocked when untrusted, compromised, tampered, or not mission-ready.
| Report | CLI |
|---|---|
| Mission Continuity Report | spanda continuity |
| Takeover Report | spanda takeover |
| Delegation Report | spanda delegate |
| Succession Report | spanda succession |
| Directory | Demonstrates |
|---|---|
examples/showcase/continuity/ |
Checkpoint resume (warehouse scan) |
examples/showcase/takeover/ |
Hot takeover on battery critical |
examples/showcase/delegation/ |
Mission ownership transfer |
examples/showcase/swarm_takeover/ |
Swarm member lost |
examples/showcase/fleet_succession/ |
Fleet successor ranking |
continuity_policy syntaxSee continuity-policies.md for the full policy reference (triggers, actions, diagnostics, and fleet pairing).
continuity_policy WarehouseContinuity {
on robot.failed {
resume from checkpoint;
reassign mission;
}
on battery.critical {
hot takeover;
}
}
Declared actions influence takeover mode inference (resume, hot takeover, restart, human
takeover, etc.).
When SPANDA_FLEET_MESH_URL is set, the interpreter relays takeover commands through the mesh
coordinator:
# Mesh coordinator
POST /v1/fleet/continuity
# Fleet agent (deployed program required)
POST /v1/continuity/execute
POST /v1/continuity/ack
Peer topic: fleet_takeover (JSON FleetContinuityRequest payload).
Agent status reports continuity_engine, continuity_successor, mission_progress_percent, and
continuity_validation.
Mission state snapshots persist to .spanda/mission-checkpoints.json (override with
SPANDA_CONTINUITY_CHECKPOINTS). When a robot fails, the interpreter writes a checkpoint;
successors load persisted progress on cold/hot/resume takeover. TypeScript mirror:
src/continuity-checkpoint.ts.
When a swarm member is lost, plan handoff during swarm coordination:
spanda swarm coordinate examples/showcase/swarm_takeover/swarm.sd \
--failed DroneTwo --progress 55 --mesh-url http://coordinator:9700
JSON output includes continuity_handoff per swarm group when --failed is set.
spanda check --readiness-json and the LSP readiness path emit continuity diagnostics alongside
recovery hints:
| Category | Severity | Meaning |
|---|---|---|
continuity:policy |
warning | Fleet without continuity_policy, or empty policy branches |
continuity:fleet |
error | Fleet/swarm trigger without a fleet declaration |
continuity:approval |
warning | Hot/cold/human takeover without an Approval topic |
continuity:handoff |
info | Recovery reassigns mission but no continuity_policy defines takeover mode |
continuity:mission |
warning | Resume/checkpoint actions without a mission_plan |
Rust: spanda_assurance::collect_continuity_diagnostics. TypeScript: collectContinuityDiagnostics
in src/continuity-diagnostics.ts.
Policy syntax guide: continuity-policies.md.
When a program declares continuity_policy, the interpreter automatically evaluates takeover
during:
run_hardware_triggers)poll_runtime_health_changes)execute_recovery_runtime)Look for log lines continuity: auto-triggered for '…' during spanda run / spanda sim
--inject-health-faults.
| System | Integration |
|---|---|
| Readiness | Successor must be mission-ready |
| Assurance | Takeover, delegation, continuity evidence |
| Recovery | Recovery actions after disruption |
| Diagnosis | Why takeover occurred; outcome tracking |
| Trust | Block untrusted/compromised successors |
| Safety | Safety, capability, hardware, mission verification gates |