diff --git a/frontend/packages/dashboard/src/builds.js b/frontend/packages/dashboard/src/builds.js index 59eed2f7..848694c2 100644 --- a/frontend/packages/dashboard/src/builds.js +++ b/frontend/packages/dashboard/src/builds.js @@ -157,6 +157,14 @@ const QUEUE_STATE_GLYPH = { done: '✔', failed: '✖', cancelled: '⊘', + // Not-taken branch of an outcome split (e.g. the failure tail on a + // successful deploy) — expected, not an error, so a quiet glyph rather + // than an attention-grabbing one. Only ever visible while the owning + // DAG is still live/failed — a fully-settled green DAG drops off the + // wire entirely (see hive-host-sock::jobs::dag_view). Same glyph + // hivectl uses for the same state (no contract between them, just + // consistent taste). + skipped: '·', }; function firstFailedNode(entry) { diff --git a/frontend/packages/dashboard/src/system-sections.css b/frontend/packages/dashboard/src/system-sections.css index 1f848ac5..131979a8 100644 --- a/frontend/packages/dashboard/src/system-sections.css +++ b/frontend/packages/dashboard/src/system-sections.css @@ -210,6 +210,10 @@ .rqe-node-done { color: var(--green); border-color: color-mix(in srgb, var(--green) 45%, transparent); } .rqe-node-failed { color: var(--red); border-color: var(--red); } .rqe-node-cancelled { opacity: 0.55; text-decoration: line-through; } +/* Not-taken outcome branch — expected, quiet, distinct from cancelled + (dimmed only, no strikethrough: this wasn't dropped mid-flight, it was + never going to run). */ +.rqe-node-skipped { opacity: 0.5; } .rqe-node-arrow { color: var(--muted); } .rqe-node-log { margin-left: 0.1em; text-decoration: none; }