Deployment release lifecycle
States of one release object
Release phases
Approval and health wait
Rollback controller
Terminal exits
Queued
Change accepted
Building
Immutable image
Verifying
Tests and policy
gate
Ready
Promotion pending
Live
Production healthy
Needs approval
Release owner
pause
Health paused
SLO regression
Rolling back
Last good image
automatic
Cancelled
Approval denied
Failed
Rollback failed
Rolled back
Service restored
needs sign-off
approved
denied
abort
SLO regression
roll back
restored
diagram.html#The link keeps the view, selection, route and playback.
About this diagram
The states of one thing and the moves between them: a job, an order, a deployment.
Ask for one like it
Draw the lifecycle of an agent run: every state it can be in, and what moves it between them.
The JSON
{ "kind": "lifecycle", "title": "Deployment release lifecycle", "subtitle": "States of one release object", "lanes": [ { "id": "main", "label": "Release phases" }, { "id": "waiting", "label": "Approval and health wait" }, { "id": "recovery", "label": "Rollback controller", "tone": "exception" }, { "id": "terminal", "label": "Terminal exits" } ], "nodes": [ { "id": "queued", "type": "start", "lane": "main", "card": { "title": "Queued", "subtitle": "Change accepted" } }, { "id": "building", "type": "active", "lane": "main", "card": { "title": "Building", "subtitle": "Immutable image" } }, { "id": "verifying", "type": "decision", "lane": "main", "card": { "title": "Verifying", "subtitle": "Tests and policy", "tag": "gate" } }, { "id": "ready", "type": "waiting", "lane": "main", "card": { "title": "Ready", "subtitle": "Promotion pending" } }, { "id": "live", "type": "success", "lane": "main", "card": { "title": "Live", "subtitle": "Production healthy" } }, { "id": "approval", "type": "waiting", "lane": "waiting", "card": { "title": "Needs approval", "subtitle": "Release owner", "tag": "pause" } }, { "id": "paused", "type": "waiting", "lane": "waiting", "card": { "title": "Health paused", "subtitle": "SLO regression" } }, { "id": "rolling-back", "type": "active", "lane": "recovery", "card": { "title": "Rolling back", "subtitle": "Last good image", "tag": "automatic" } }, { "id": "cancelled", "type": "failure", "lane": "terminal", "card": { "title": "Cancelled", "subtitle": "Approval denied" } }, { "id": "failed", "type": "failure", "lane": "terminal", "card": { "title": "Failed", "subtitle": "Rollback failed" } }, { "id": "rolled-back", "type": "success", "lane": "terminal", "card": { "title": "Rolled back", "subtitle": "Service restored" } } ], "edges": [ { "id": "build", "from": "queued", "to": "building", "tone": "main" }, { "id": "verify", "from": "building", "to": "verifying", "tone": "main" }, { "id": "pass", "from": "verifying", "to": "ready", "tone": "main" }, { "id": "promote", "from": "ready", "to": "live", "tone": "main" }, { "id": "sign-off", "from": "verifying", "to": "approval", "label": "needs sign-off", "tone": "security" }, { "id": "approved", "from": "approval", "to": "ready", "label": "approved" }, { "id": "denied", "from": "approval", "to": "cancelled", "label": "denied", "tone": "error" }, { "id": "abort", "from": "ready", "to": "rolling-back", "label": "abort", "tone": "error" }, { "id": "rollback-failed", "from": "rolling-back", "to": "failed", "tone": "error" }, { "id": "regress", "from": "live", "to": "paused", "label": "SLO regression", "kind": "async" }, { "id": "rollback", "from": "paused", "to": "rolling-back", "label": "roll back" }, { "id": "restored", "from": "rolling-back", "to": "rolled-back", "label": "restored", "tone": "main" } ], "notes": [ { "title": "Promotion rail", "items": [ "The release moves through five ordered phases", "Verification and approval remain distinct states", "Live means production health is currently proven" ] }, { "title": "Explicit endings", "items": [ "Denied approval ends as Cancelled", "A failed rollback ends as Failed", "A successful rollback is a terminal restored outcome" ] } ]}