Command context lifecycle

The command context lifecycle follows the lifecycle of a long-running command, but it is not identical to it.

A command context is created when a command is accepted by the component manager and the command execution layer starts tracking it. At this point the context is registered as an active command context and can be used by the observation supervisor during observation state evaluation.

Command context builder

The command context is created by the command context builder.

The builder is responsible for translating the accepted command and the current observation configuration into a CommandContext instance. This is the point where the runtime metadata required by the observation supervision layer is collected and associated with the command.

The builder can populate the context with information such as:

  • the command name;

  • the long-running command identifier;

  • the devices selected for the command;

  • the command semantics derived from the configured observation mode;

  • command-specific metadata, such as the scan schedule.

The command context builder is also an important extension point. It separates the creation of command semantics from the observation consistency policy that uses them. This makes it possible to move from hard-coded command interpretation towards a configuration-driven model, for example by deriving command semantics and policy inputs from a YAML configuration file.

In this model, the builder prepares the command context according to the configured rules, while the consistency policies consume the resulting context without needing to know how the command semantics were produced.

The relationship can be summarised as follows:

Accepted command
    -> command context builder invoked

Current observation configuration
    -> used to derive command semantics

Optional YAML configuration
    -> defines command-to-policy mapping and semantic rules

CommandContext created
    -> stores command metadata, selected devices, and semantics

Observation consistency policy
    -> consumes the CommandContext during state evaluation

Runtime usage

While the command is running, the context identifies the command currently affecting the observation state. This allows the consistency policy to interpret intermediate device states in the correct command-specific way. For example, a transition caused by Scan is not interpreted in the same way as a transition caused by EndScan or Abort.

When the command completes, the command outcome is stored in the command context. The outcome includes the command result and the devices that succeeded or failed, when this information is available. The completed command context is then removed from the active command context registry.

For most commands, this is the end of the command context lifecycle. Once the command outcome has been recorded and the context has been removed from the active registry, the context is discarded.

The default lifecycle can be summarised as follows:

Command accepted
    -> CommandContext created by the builder
    -> context registered as active

Command running
    -> context used by the observation supervisor
    -> context used by command-aware consistency policies

Command completed
    -> command outcome stored in the context
    -> context removed from active command registry

Completed command handled
    -> context discarded

The Scan command is a special case. A completed scan command may still be relevant to observation state consistency after it has been removed from the active command registry. For this reason, scan-specific command context retention is described separately in Retained Scan Context.