{% extends "base.html" %} {% block title %}Voxint — run {{ run.id.hex[:8] }}{% endblock %} {% block body %}
{{ run.id.hex[:8] }}{{ run.media_item.source_path }}
Source: {{ provenance }}
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 %}{{ run.error }}
{% endif %} {% if run.status == "failed" %} {% if run.current_stage in ("transcribe", "diarize_embed") %} {# Static guidance only — no live probe on this page (a health check here would add model-service latency to every failed-run view and flap with service health; the setup wizard's SERVICES step owns live reachability). #}This stage needs the model services (ASR / diarizer / embedder).
If they aren't running, start a compute tier —
docker compose -f compose.yaml -f compose.gpu.yaml up -d (NVIDIA GPU) or
docker compose -f compose.yaml -f compose.cpu.yaml up -d (no GPU;
needs HF_TOKEN in .env either way) — wait for them to come
up, then requeue.
{% if audio_available %}Audio{% endif %} {% if transcript_available %}Transcript{% endif %} {% if run.status == "completed" %}Review{% endif %} Export (JSON) {% if not audio_available and not transcript_available %} No audio or transcript yet. {% endif %}
{% if source_metadata %} {# Scraped acquisition context (issue #36) — write-once, shown apart from the operator's own notes so human and scraped input are never conflated. The URLs here are sanitized allowlist values (absolute http(s), no userinfo), unlike the raw source_url, which never reaches a template. #}{{ source_metadata.extractor }}{% if source_metadata.extractor_version %} (yt-dlp {{ source_metadata.extractor_version }}){% endif %}{{ source_metadata.description }}
No stage attempts recorded yet.
{% else %}| Stage | Attempt | Status | Worker | Started | Finished | Lease expires | Error |
|---|---|---|---|---|---|---|---|
| {{ 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 %} |