Skip to content
Proud to collaborate with Microsoft for Startups

runner.pool-reconcile-kubernetes ​

Controller reconcile loop for Orkestia-hosted Kubernetes warm pools. Observes pods + the engine DB every tick and converges the pool toward min_warm_idle / max_count using pending executions as the demand signal. A warm runner is an idle pod polling for a claim. Idempotent; safe to run on a stable workflow_id per group.

Per-group warm-pool reconcile loop for Orkestia-hosted Kubernetes runners.

Inherits the full state machine and reconcile rules from :class:BasePoolReconcileWorkflow; overrides the cloud-specific knobs, the observation adapter (pods, not VMs) and the demand source (pending executions, not GitHub's queue).

Overview ​

PropertyValue
Workflow typeLinear
LibraryApp-runners
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidYes—UUID of the RunnerGroup to reconcile, picked from the organization's list of runner groups.

Output Schema ​

FieldTypeRequiredDefaultDescription
runner_group_uuiduuidNo—UUID of the RunnerGroup this reconcile tick operates on, picked from the organization's list of runner groups; echoed on output alongside terminal/error payloads.
started_atstringNo——
completed_atstringNo——
warm_pool_enabledbooleanNo——
observationjsonNo——
degradedbooleanNo——
observation_errorslistNo——
transitionslistNo——
action_takenstringNo——
launched_workflow_uuidstringNo—Engine run id of the runner.pool-launch-kubernetes workflow started by this reconcile tick, when one was launched. Internal engine correlation id, not a business-entity foreign key — no source is attached.
terminated_instance_uuiduuidNo—UUID of the RunnerInstance terminated or drained during this reconcile tick, when one was taken.
desired_aliveintegerNo——
compositionjsonNo——
observation_lag_msintegerNo——
pending_executionsintegerNo——
failure_reasonstringNo——
failed_atstringNo——
step_errorslistNo——
errorstringNo——
error_typestringNo——
failed_at_statestringNo——
failed_layerstringNo——
failed_stepstringNo——

States ​

StateInitialTerminalSuccessAuto-advanceDescription
pendingYesNo—observe—
emitting_snapshotNoNo—complete—
enforcing_floor_capNoNo—emit_snapshot—
observingNoNo—diff_and_transition—
transitioningNoNo—enforce_floor_cap—
completedNoYesYes——
failedNoYesNo——

State Diagram ​

Transitions ​

FromActionToDescription
pendingobserveobserving—
observingdiff_and_transitiontransitioning—
transitioningenforce_floor_capenforcing_floor_cap—
enforcing_floor_capemit_snapshotemitting_snapshot—
emitting_snapshotcompletecompleted—
* (any state)failfailed—

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "runner.pool-reconcile-kubernetes",
  "initial_data": {
    "runner_group_uuid": "value"
  }
}