{% extends "base.html" %} {% block title %}Runs · Gauntlet Console{% endblock %} {% block body %}

Runs

{# FR-10.5: while a live process drives the worktree, name the holder and disable launching. The console only surfaces this — the engine lock enforces. #} {% if locked %} {% endif %} {# Launch a new run as a console-owned subprocess (FR-6.1). Disabled while the worktree lock is held (FR-10.5). control.js POSTs to /api/runs. #}
{# FR-1.2: search / status filter / sort. A plain GET form so it works without JS; the server applies the same filters to the JSON API and this page. #}
{% if filter_q or filter_status or filter_sort %}clear{% endif %}
{# The list is always rendered (live.js swaps the tbody on each SSE tick, so an empty run root that later gains a run fills in without a manual refresh). #} {% include "_run_rows.html" %}
SlugStatusCurrent stepCost StepsUpdatedSource
{% if not rows %}

No runs match.

{% endif %} {% endblock %}