{% extends "base.html" %} {% block title %}Voxint — run {{ run.id.hex[:8] }}{% endblock %} {% block body %}
{{ run.id.hex[:8] }}{{ sidecar_title }}
{% endif %}{{ 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 %} {% if media_delete_result %}Deleted {{ media_delete_result.files }} derived audio file{{ "" if media_delete_result.files == 1 else "s" }}{% if media_delete_result.missing %} ({{ media_delete_result.missing }} already gone){% endif %}{% if media_delete_result.failed %}, {{ media_delete_result.failed }} could not be removed and will be swept later{% endif %}. The original source recording was kept.
{% endif %} {% if run_archived %}This run is archived — hidden from the runs list and the review queue. All its data is intact; un-archive to restore it.
{% 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) —
wait for them to come up, then requeue. The shipped models run offline; an
HF_TOKEN is only needed if you overrode diarization to a gated
pipeline.
{% if audio_available %}Audio{% endif %} {% if transcript_available %}Transcript{% endif %} {% if run.status == "completed" %}Review{% endif %} Complete run archive (JSON) {% if transcript_available %}(transcript & subtitle exports are on the Transcript page){% endif %} {% if media_reclaimed_at %} Media reclaimed on {{ media_reclaimed_at.strftime("%Y-%m-%d") }} (transcript and decisions kept; re-run from source to restore audio). {% elif not audio_available and not transcript_available %} No audio or transcript yet. {% endif %}
{% if run_terminal %} {# Archive / un-archive + derived-media deletion (issue #5). Only terminal runs (completed / failed / cancelled) — a live run must be cancelled first. #}{{ source_metadata.extractor }}{% if source_metadata.extractor_version %} (yt-dlp {{ source_metadata.extractor_version }}){% endif %}{{ source_metadata.description }}
The model each stage saw just before it ran. This is observed immediately before the attempt, not read back from the output, so it records which model answered rather than proving the exact build.
{% for stage in model_provenance %}Not recorded. This run finished before model provenance was added, no attempt of this stage completed, or the latest completed attempt did not record it.
{% else %}{{ role.model }}{% else %}no model name reported{% endif %}
{% if role.engine %} engine {{ role.engine }}{% endif %}
{% if role.revision %}{{ role.revision }}{% endif %}
{% if role.decode_config_hash %}{{ role.decode_config_hash[:12] }}{% endif %}
The vocabulary hint transcription saw for this run, the terms from your glossary and the run's domain pack. It records what the model was told to expect, not that every term was spelled this way.
{% if run.initial_prompt %}{{ run.initial_prompt }}
Not recorded. This run has not been transcribed yet, had no vocabulary, or it finished before Voxint began recording the applied glossary.
{% endif %}{{ language_label(run.detected_language) }}
{% if run.detected_language_probability is not none %}Whisper language-detection score: {{ "%.2f" | format(run.detected_language_probability) }}. This is the model's own score for its language guess, not a measure of transcript accuracy. It reflects the whole recording as one language; a recording that mixes languages still gets a single detected language. Short or mostly silent recordings can produce low or arbitrary detections.
{% else %}No detection score was recorded for this run.
{% endif %} {% else %}Not recorded. This run has not been transcribed yet, or it finished before Voxint began recording the detected language.
{% endif %}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 %} |