Concepts
| Concept | Definition | Relationship & lifecycle |
|---|---|---|
| Capability | A versioned package with one Provider and one or more Actions. | Defined by capability.yaml; validated before load. |
| Provider | A Python implementation of required lifecycle methods. | Moves through new, initializing, ready, stopping, stopped, or failed. |
| Action | A versioned operation with schemas and a self-description contract. | Invoked through a Provider execution. |
| Execution | One Provider invocation identified by execution_id. | Receives request/context and returns result or raises error. |
| Initialization context | Read-only identity, configuration, secrets, clock, logger, and optional Artifact service. | Passed to initialize. |
| Execution context | Restricted services for one execution. | Cancellation, progress, deadline, logger, clock, trace, artifacts, leases. |
| Progress | JSON-compatible payload emitted during execution. | Reporter assigns sequence, timestamp, execution, and trace data. |
| Artifact | Binary or large output written through an Artifact service. | Returned as ArtifactReference, not a local path. |
| Health | healthy, degraded, unhealthy, or unknown Provider result. | Obtained through health_check. |
| Recovery probe | Optional Provider observation after Runtime restart. | Reports facts; Runtime decides retry or replanning. |
Relationships
Provider lifecycle
BaseCapabilityProvider accepts initialization from new, stopped, or failed. It may execute only in ready. Initialization failure clears the initialization context and produces failed. Shutdown is idempotent after stopped and cancels base-managed background tasks.
Execution semantics
An execution request has nonblank execution, capability, Provider, Action, and Action-version identifiers; immutable JSON-compatible inputs; and optional deadline, idempotency key, Runtime correlation hints, trace ID, and metadata. The context validates that its execution ID matches the request. A Provider returns CapabilityExecutionResult on success or raises CapabilityError.
Example
class EchoProvider(BaseCapabilityProvider):async def on_execute(self, request, context):context.validate_request(request)context.cancellation.raise_if_cancelled()await context.progress.report({"phase": "working"})return CapabilityExecutionResult(output={"echo": request.inputs})
Mission, task-graph, and node identifiers may be attached as optional Runtime correlation fields. They are not a VCP session or task protocol.

