{% extends "base.html" %} {% import "macros.html" as m %} {% block title %}{{ project.name }} — ProofWarden{% endblock %} {% block head_extra %} {# A live run streams. JS-off: a 3s full-page refresh keeps the lease + console current (read-only poll; print/other views untouched). JS-on: live-console.js removes that meta tag and streams the log over SSE (real-time, Pause, per-run). #} {% if known and broker == 'up' and view == 'running' and data.cards %}{% endif %} {# Catalog config panels get a live effective-config preview (PE — form works JS-off). #} {% if known and view == 'catalog' and data.catalog %}{% endif %} {% endblock %} {% block main %}
{{ project.name }}
{{ project.kind or ('unknown project' if not known else 'test project') }}
{% if broker == 'down' %} warden down {% else %} warden up {% endif %}
{% if not known %} {{ m.empty('?', 'Unknown project', 'No project “' ~ project.slug ~ '” is wired into this console. Point MGF_TEST_WEB_ROOTS at its directory — it needs a fed-resources/ tree (where the warden socket + catalog live).') }} {% else %} {% if broker == 'down' and view != 'history' %}
{{ project.name }}'s test authority is unreachable — no runs can start (fail-closed). Start the warden (testctl serve) to run or manage tests.
{% endif %} {% if outcome %} {% set tone = {'started': 'info', 'coalesced': 'info', 'queued': 'warning', 'refused': 'danger'}.get(outcome.status, 'info') %}
{% if outcome.status == 'started' %}▶ Run started · {{ outcome.test_id }} → {{ outcome.run_id }} · {{ outcome.config_str }}. The warden is the executor — streaming below. {% elif outcome.status == 'coalesced' %}⇄ Single-flight: {{ outcome.test_id }} is already running — attached as a watcher to {{ outcome.run_id }}; did not start a second run. {% elif outcome.status == 'queued' %}⏳ Serialized: {{ outcome.test_id }} queued (position {{ outcome.position }}) — it starts when the lease frees. The console submitted the request; the warden decides. {% else %}⛔ {{ outcome.note }}. {% endif %}
{% endif %} {% include "_" + view + ".html" %} {% endif %} {% endblock %}