{% extends "base.html" %} {% from "fragments/export_menu.html" import export_menu %} {% block title %}Voxint — review {{ run.media_item.source_path }}{% endblock %} {% block body %}

← queue

{# Review header card (issue #92): the run identity, the claim state, and the journey's actions in one surface. The claim wording is contract text the integration tests assert on — keep it verbatim. #}

{{ run.media_item.source_path }}

{% if token %}

Claimed by you.

{# Verify-and-advance transcript review (issue #53): carries the live claim token so the linear player writes without re-claiming (a fresh claim would kill this tab's token). #} Review transcript →
{% else %}

Not claimed by this tab — decisions are disabled.

{% endif %}
{{ export_menu(run) }} {# Workbench-player island (issues #49 + #55). Mounted OUTSIDE #labels so it survives every htmx innerHTML swap of the decision cards. It owns the