{{define "ladder"}} {{if $.Detail.Pipeline}}
Every version moves through these channels in order — the first is where
carlos deploy lands. Promoting moves it one step up; whatever follows that step
picks it up. Each channel's own rules, not a fixed name, decide what it takes to get there.
Every version climbs the same steps — canary (test) → edge → beta → stable (live). Promoting moves it one step up; whatever follows that step picks it up.
{{with .Detail.Production}}Safety delay: this app's setting can't be read right now, so the delay stays on. {{if $.CanPromote}}
— writes a fresh signed flag over the unreadable one. {{end}} {{else if .On}}Safety delay: on — new versions wait ~24h on beta and ~72h on live before they go live. {{if and $.CanPromote $.IsOwner}}
Turning it off asks for your passkey and takes effect after ~72h. {{end}} {{else if .TurningOff}}Safety delay: turning off — in effect until ~{{fmtTime .EffectiveAt}}. {{if $.CanPromote}}
{{end}} {{else}}Safety delay: off — new versions go live as soon as they're promoted. {{if $.CanPromote}}
{{end}} {{end}} {{if .Nudge}}{{icon "triangle-alert"}} This app looks like it's serving real users but new versions go live immediately — consider turning the safety delay on.
{{end}}{{.Rung}}
{{if .Channels}} {{range .Channels}}{{.Channel}} — {{.Err}}
{{.Channel}} holds {{.Version}}
promoted {{ago .PromotedAt}}{{if .Actor}} by {{.Actor}}{{end}}
{{if .Hotfix}}{{icon "zap"}} published directly — skipped the pipeline{{end}}
{{if .FastTrack}}{{icon "fast-forward"}} delay skipped{{end}}
Nothing follows this channel yet.
{{end}}Nothing on {{.Rung}}.
{{end}}{{.Gate}}
{{if .Up}}