runner.pool-reconcile-azure-vm
Controller reconcile loop for warm-pool runner groups on Azure VMs. Observes GitHub (via LTIP) + ARM + the engine DB every tick and converges the pool toward min_warm_idle / max_count. Idempotent; safe to run on a stable workflow_id per group.
Controller reconcile loop for warm-pool runner groups on Azure VMs.
Overview
| Property | Value |
|---|---|
| Workflow type | Linear |
| Library | App-runners-azure |
| Version | 1.0 |
Input Schema
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
runner_group_uuid | uuid | Yes | — | RunnerGroup.uuid whose Azure VM warm pool to reconcile. |
queued_demand_hint | json | No | — | Inline demand hint from runner.dispatch-from-job-queued; bridges GitHub's queue-read lag right after a job-queued webhook. |
Output Schema
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
runner_group_uuid | string | No | — | — |
queued_demand_hint | json | No | — | — |
started_at | string | No | — | — |
completed_at | string | No | — | — |
warm_pool_enabled | boolean | No | — | — |
observation | json | No | — | — |
degraded | boolean | No | — | — |
observation_errors | json | No | — | — |
transitions | json | No | — | — |
action_taken | string | No | — | — |
launched_workflow_uuid | string | No | — | — |
terminated_instance_uuid | string | No | — | — |
desired_alive | integer | No | — | — |
composition | json | No | — | — |
observation_lag_ms | integer | No | — | — |
queued_hint_count | integer | No | — | — |
effective_queued_count | integer | No | — | — |
failure_reason | string | No | — | — |
failed_at | string | No | — | — |
step_errors | json | No | — | — |
error | string | No | — | — |
error_type | string | No | — | — |
failed_at_state | string | No | — | — |
failed_layer | string | No | — | — |
failed_step | string | No | — | — |
States
| State | Initial | Terminal | Success | Auto-advance | Description |
|---|---|---|---|---|---|
pending | Yes | No | — | observe | — |
emitting_snapshot | No | No | — | complete | — |
enforcing_floor_cap | No | No | — | emit_snapshot | — |
observing | No | No | — | diff_and_transition | — |
transitioning | No | No | — | enforce_floor_cap | — |
completed | No | Yes | Yes | — | — |
failed | No | Yes | No | — | — |
State Diagram
Transitions
| From | Action | To | Description |
|---|---|---|---|
pending | observe | observing | — |
observing | diff_and_transition | transitioning | — |
transitioning | enforce_floor_cap | enforcing_floor_cap | — |
enforcing_floor_cap | emit_snapshot | emitting_snapshot | — |
emitting_snapshot | complete | completed | — |
* (any state) | fail | failed | — |
API Usage
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "runner.pool-reconcile-azure-vm",
"initial_data": {
"runner_group_uuid": "value"
}
}