Execution Manager

Purpose

Orchestrates and monitors task execution. The Execution Manager manages the execution contract lifecycle — pushing contracts to edge devices, maintaining projected state during offline periods, and reconciling actual state upon reconnection. It is the bridge between cloud-side planning and edge-side execution.

Responsibilities

  • Push execution contracts to devices

  • Monitor contract execution via ThingIO (telemetry data)

  • Maintain the live/projected/reconciled state machine

  • Detect contract failures and consult Policy Service for recovery

  • Trigger replanning when reconciliation reveals divergence

Execution Contract

When the platform assigns a task to a device, it pushes an execution contract containing the task definition, scoped actions, and required data (e.g., map excerpt from Equator). At the push moment, connectivity is confirmed.

See Execution Contract pattern for full details.

Device State Machine

    ┌────────────┐
    │    Live     │ ◄── Connected, real-time telemetry
    └─────┬──────┘
          │ connection lost
          ▼
    ┌────────────┐
    │ Projected  │ ◄── Offline, platform estimates based on contract
    └─────┬──────┘
          │ device reconnects
          ▼
    ┌────────────┐
    │ Reconciled │ ◄── Actual state corrects projection
    └─────┬──────┘
          │ divergence? → replan
          ▼
    ┌────────────┐
    │    Live     │
    └────────────┘

State

Meaning

Platform Behavior

Live

Connected, real-time telemetry

Platform sees truth directly

Projected

Offline, no telemetry

Platform estimates based on contract scope

Reconciled

Device reconnects, reports actuals

Actual corrects projection, triggers replan if needed

Contract Failure Recovery

Handled by the Policy Service, not hardcoded:

  1. Execution Manager detects contract failure

  2. Consults Policy Service for the applicable recovery strategy

  3. Executes recovery: retry, reassign, escalate, hold, or abort

API Surface

Operation

Description

POST /contracts

Push a contract to a device

GET /contracts/{id}

Get contract status

GET /contracts?device=&status=

Query contracts

POST /contracts/{id}/reconcile

Trigger manual reconciliation

Dependencies

Service

Relationship

Scheduler

Receives assignments to execute

ThingIO

Monitors device state during execution (via ThingsBoard telemetry)

Equator

Includes spatial data in contracts

Policy Service

Failure recovery strategies

Planner

Triggers replanning on reconciliation divergence

Consumed By

Consumer

Usage

Applications

Monitor execution progress

Devices

Receive and execute contracts