<sectionclass="panel"><divclass="strip bad">The pipeline is not valid, so nothing ran.</div><preclass="snippet">{{ run.error }}</pre><pclass="small mute">Run <code>flow check</code> locally to see the same problems.</p></section>
14
{% else %}
15
<sectionclass="panel flow-graph-box">
16
<svgclass="flow-graph"viewBox="0 0 {{ graph.width }} {{ graph.height }}"width="{{ graph.width }}"height="{{ graph.height }}"role="img"aria-label="Job graph of run {{ run.id }}">
17
{% for e in graph.edges %}<pathclass="edge st-{{ e.status }}"d="{{ e.d }}"/>{% endfor %}
<summary><spanclass="flow-glyph st-{{ l.j.status }}"data-glyph>{{ crate::web::flow::glyph(l.j.status) }}</span><strong>{{ l.j.name }}</strong><spanclass="small mute"data-meta>{{ l.j.status }}{% if let Some(c) = l.j.exit_code %} · exit {{ c }}{% endif %} · {{ l.duration }}{% if !l.j.runner.is_empty() %} · on {{ l.j.runner }}{% endif %}</span>{% if !l.j.receipt_hash.is_empty() %} <spanclass="small mute">· receipt <codetitle="{{ l.j.receipt_hash }}">{{ l.j.receipt_hash|short }}</code></span>{% endif %}</summary>
31
{% if !l.j.error.is_empty() %}<divclass="strip bad">{{ l.j.error }}</div>{% endif %}
32
<preclass="flow-log"data-logdata-seq="{{ l.last_seq }}">{% for line in l.lines %}<spanclass="ln s-{{ line.stream }}"><spanclass="t">{{ line.t / 1000 }}.{{ "{:01}"|format(line.t % 1000 / 100) }}s</span>{{ line.text }}</span>
33
{% endfor %}</pre>
34
{% if l.lines.is_empty() && l.j.status == "queued" %}<pclass="small mute pad">Waiting for a runner{% if !l.j.depends_on().is_empty() %} and for {{ l.j.depends_on().join(", ") }}{% endif %}.</p>{% endif %}
35
{% if l.lines.is_empty() && l.j.status == "skipped" %}<pclass="small mute pad">Skipped: a job it depends on did not pass.</p>{% endif %}