{{define "execution-config"}} {{ $child := . }}{{with .Config}}
Execution configuration

Image{{.Image}}

Matrix{{.Matrix}}

Trigger{{.Trigger}}

Commands

{{range .Commands}}{{.}}
{{end}}
Job source · .ci/{{.SourceFile}}
{{kdl .Source}}
{{end}} {{end}} {{define "child-failure"}}
Affected execution

FAILED {{.Job}}

{{if ne .DurationSeconds "—"}}{{else}}{{.Timing}}{{end}}
{{if .Matrix}}

{{.Matrix}}

{{end}} {{if .Wait}}

{{end}} {{if .Detail}}

Child failure detail{{.Detail}}

{{end}} {{template "execution-config" .}}
Actual evidence · child {{.ChildID}}
{{if .LogError}}

{{.LogError}}

{{else}}
{{if .Truncated}}[earlier output truncated]
{{end}}{{.LogHTML}}

Complete raw log

{{end}}
{{if .Steps}}
step timing{{range .Steps}}{{end}}
StepCommandTime
{{.N}}/{{.Total}}{{.Command}}{{if .Done}}{{else}}running…{{end}}
{{end}} {{ $command := commandText "luci" "log" (runToken .) .ChildID }}
Continue in CLI

Nushell command · read-only · local Luci data access required.

{{commandHTML "luci" "log" (runToken .) .ChildID}}

Full run ID + stable child selector. Copying never executes it.

{{end}} {{define "child-compact"}}
{{if eq .Status "success"}}PASSED{{else}}{{upper .Status}}{{end}}{{.Job}}{{if .Matrix}}{{.Matrix}}{{end}}{{.Timing}}
{{if ne .DurationSeconds "—"}}

{{end}} {{if .Wait}}

{{end}} {{if .Detail}}

Detail{{.Detail}}

{{end}} {{template "execution-config" .}} {{if .Steps}}
step timing{{range .Steps}}{{end}}
StepCommandTime
{{.N}}/{{.Total}}{{.Command}}{{if .Done}}{{.Seconds}}s{{else}}running…{{end}}
{{end}} {{if .LogError}}

{{.LogError}}

{{else}}

Complete raw log

Log tail
{{if .Truncated}}[earlier output truncated]
{{end}}{{.LogHTML}}
{{end}} {{ $command := commandText "luci" "log" (runToken .) .ChildID }}
Continue in CLI

Nushell command · read-only.

{{commandHTML "luci" "log" (runToken .) .ChildID}}

Local Luci data access required · no execution.

{{end}} {{define "body"}} {{range .Warnings}}

State warning
{{.}}

{{end}} {{if .Known}} {{ $run := runToken .Parent }}{{ $display := runDisplay .Parent }}
Run summary

{{if eq .Parent.Status "failed"}}Run failed.{{else if eq .Parent.Status "success"}}Run passed.{{else}}{{upper .Parent.Status}}.{{end}}

{{if .Outcomes}}

{{range .Outcomes}}{{.Count}} {{if eq .Status "success"}}passed{{else}}{{.Status}}{{end}}. {{end}}

{{end}}

{{.Parent.Repo}} / {{.Parent.Job}}

{{if .Parent.Subject}}

{{.Parent.Subject}}

{{end}}
{{if ne .Parent.FullRev "—"}}·{{end}}{{if ne .Parent.Finished "—"}}·{{end}}
{{if .Parent.Detail}}

Parent failure detail{{.Parent.Detail}}

{{end}}
{{if .HasOutput}}
Result output · {{.Output.Job}}{{if .Output.Matrix}} · {{.Output.Matrix}}{{end}}
{{if .Output.Truncated}}[earlier output truncated]
{{end}}{{.Output.LogHTML}}

Complete raw log

{{end}} {{range .Failed}}{{template "child-failure" .}}{{end}} {{if .Other}}
In progress / skipped
{{range .Other}}{{template "child-compact" .}}{{end}}
{{end}} {{if .Passed}}
Passed · {{len .Passed}} executions
{{range .Passed}}{{template "child-compact" .}}{{end}}
{{end}} {{if .Config.Files}}
All configuration at this revision{{if .Config.Error}}

Configuration invalid
{{.Config.Error}}

{{end}}{{range .Config.Files}}
{{.Name}} @ {{$.Parent.Rev}}
{{kdl .Body}}
{{end}}
{{end}}
{{else}}

Unknown run

Unknown run.

{{end}} {{end}}