{% extends "base.html" %} {% block title %}Voxint — run {{ run.id.hex[:8] }}{% endblock %} {% block body %}

← runs

Run {{ run.id.hex[:8] }}

{{ run.media_item.source_path }}

{% if provenance %} {# URL runs only: the acquisition source, shown as a bare host — never the raw source_url, whose query could carry a signed token. #}

Source: {{ provenance }}

{% endif %} {# Gate on the live status too: a bookmarked/refreshed ?enqueue=deferred URL must not keep asserting "is queued" after the sweep already republished it. #} {% if enqueue_deferred and run.status == "queued" %}

The initial enqueue was deferred because the task broker was unavailable. This run is queued and will start automatically once the broker recovers — no action needed.

{% endif %}
Status
{{ run.status }}
Current stage
{{ run.current_stage or "—" }}
Revision
{{ run.revision }}
Created
{{ run.created_at.strftime("%Y-%m-%d %H:%M:%S") }}
Updated
{{ run.updated_at.strftime("%Y-%m-%d %H:%M:%S") }}
{% if run.error %}

{{ run.error }}

{% endif %} {% if run.status == "failed" %}
{# Carry the revision we rendered so a stale tab's requeue 409s (exact-revision CAS). #} Retries the failed stage ({{ run.current_stage or "—" }}).
{% endif %}

{% if audio_available %}Audio{% endif %} {% if transcript_available %}Transcript{% endif %} {% if run.status == "completed" %}Review{% endif %} {% if not audio_available and not transcript_available %} No audio or transcript yet. {% endif %}

Stage ledger

{% if not stage_runs %}

No stage attempts recorded yet.

{% else %} {% for s in stage_runs %} {% endfor %}
StageAttemptStatusWorker StartedFinishedLease expiresError
{{ s.stage }} {{ s.attempt }} {{ s.status }} {{ s.worker_id or "—" }} {{ s.started_at.strftime("%Y-%m-%d %H:%M:%S") if s.started_at else "—" }} {{ s.finished_at.strftime("%Y-%m-%d %H:%M:%S") if s.finished_at else "—" }} {{ s.lease_expires_at.strftime("%Y-%m-%d %H:%M:%S") if s.lease_expires_at else "—" }} {% if s.error %}{{ s.error }}{% else %}—{% endif %}
{% endif %} {% endblock %}