Gathering the first fleet snapshot…{% if refreshing %} Refresh in progress for {{ refresh_elapsed }}.{% endif %}
{% else %} {% if refreshing %} {% elif refresh_error %} {% elif snapshot_stale %} {% endif %} {# Two config keys naming one machine is a real defect, not a cosmetic one: both are swept, both render, and every job on that machine is counted twice in the jobs table and the JSON API. #} {% for hostname, keys in duplicate_enrolments %} {% endfor %} {# #168: a configured target is a config key, not a machine. Daemon counts are per daemon: a scheduler lane reports its driver's health, so counting it again would repeat the driver. #} {% set r = readiness %}{% if snapshot_age %}updated {{ snapshot_age }} ago{% else %}updated just now{% endif %} · sweep took {{ snapshot.duration_seconds }} s {% if summary.vq_versions %}· vq {{ summary.vq_versions | join(", ") }}{% endif %} {% if not summary.converged %}— fleet is not on one vq version (a rollout state, not a dispatch hold: see readiness below){% endif %}
{{ r.targets.daemon_hosts }} daemon host{{ "" if r.targets.daemon_hosts == 1 else "s" }} and {{ r.targets.scheduler_lanes }} scheduler lane{{ "" if r.targets.scheduler_lanes == 1 else "s" }} on {{ r.resources.machines }} machine{{ "" if r.resources.machines == 1 else "s" }} and {{ r.resources.clusters }} cluster{{ "" if r.resources.clusters == 1 else "s" }}{% if r.resources.unidentified %}, plus {{ r.resources.unidentified }} target{{ "" if r.resources.unidentified == 1 else "s" }} not identified{% endif %}. Dispatch: {{ r.dispatch.open }} open · {{ r.dispatch.held }} held · {{ r.dispatch.unknown }} unknown. Live calculations, each counted once: {{ r.executions.counts.running }} running ({{ r.executions.allocated_cpus }} CPUs allocated), {{ r.executions.counts.queued }} queued{% if r.executions.counts.held %}, {{ r.executions.counts.held }} held{% endif %}{% if r.executions.counts.unconfirmed %}, {{ r.executions.counts.unconfirmed }} unconfirmed{% endif %}.
{% if r.partial %} {% endif %} {% if r.programs %}| program | eligible on (current runtime) | updates | not eligible |
|---|---|---|---|
| {{ p.program }} | {% for e in p.eligible %}{{ e.target }}{% if e.runtime %} ({{ e.runtime }}){% endif %}{% if not loop.last %}, {% endif %}{% else %}none established{% endfor %} | {% for u in p.updates %}
{{ u.target }}: {{ u.state }}{% if u.holds_dispatch %} (dispatch held){% else %} (current runtime unaffected){% endif %}{% if u.action %}
{% else %}-{% endfor %}{{ u.action }}{% endif %} |
{% for h in p.held %} held on {{ h.target }}: {{ h.reason | truncate(200, true) }} {% endfor %}
{% for x in p.refused %}refused on {{ x.target }}: {{ x.reason | truncate(200, true) }} {% endfor %}
{% for u in p.unknown %}unknown on {{ u.target }}: {{ u.reason | truncate(200, true) }} {% endfor %}
{% if not (p.held or p.refused or p.unknown) %}-{% endif %}
|
No target reported a program runtime, an update lease or a refused job.
{% endif %} {% if r.admission_failures %}calls itself {{ card.reported_hostname }}
{% endif %}scheduler phases: {% for phase, n in card.scheduler_queue_counts.items() %}{{ phase }}={{ n }}{% if not loop.last %}, {% endif %}{% endfor %}
{% endif %} {# Program versions the view used to drop, making this page strictly less informative than `vq overview` and unable to answer "which vibe-qc is deployed here?". #} {% if card.envs %}{{ card.admin_down }}
{% elif not card.reachable and card.error %}{{ card.error | truncate(200, true) }}
{% endif %} {% if card.jobs_error %}job listing failed: {{ card.jobs_error | truncate(200, true) }}
{% if card.reachable %}
counts above come from the host overview and are still current; “jobs listed” is not.{% endif %}
{{ card.admin_marker_stale_reason }}
{% endif %} {% if card.reachable and card.readiness and card.readiness.dispatch != "open" %}dispatch {{ card.readiness.dispatch }}: {{ card.readiness.reasons | join("; ") | truncate(300, true) }}
{% endif %}