{% extends "base.html" %} {% block title %}Voxint — evidence pack: {{ source_title }}{% endblock %} {% block cb_breadcrumb %}review / {{ source_title }} / evidence pack{% endblock %} {% block body %} {# Print/PDF evidence pack (issue #331 Phase 7). Pure server render, no island: the browser's Print / Save as PDF is the PDF engine, so this page must read correctly on paper. base.html already forces light tokens under print and hides the shell chrome; the block below adds the document-level print rules. #}

← Back to the transcript

Evidence pack: {{ source_title }}

Recording
{{ source_title }}
Run
{{ run.id }}
{% if media_sha256 %}
Source media SHA-256
{{ media_sha256 }}
{% endif %}
Voxint version
{{ app_version }}
Generated
{{ generated_at.strftime("%Y-%m-%d %H:%M UTC") }}
{% if filtered %}
Filter
Tag-filtered subset (not every highlight on this run)
{% endif %}
{% if stages %} {# open by default: a closed details element is EXCLUDED from browser print/PDF output, and the provenance is the point of the pack. #}
Pipeline provenance
{% for stage, prov in stages.items() %} {% for role, model in prov.roles.items() %}
{{ stage }} / {{ role }}
{{ model.model or "not recorded" }}{% if model.engine %} ({{ model.engine }}){% endif %}{% if model.revision %} @ {{ model.revision }}{% endif %}
{% endfor %} {% endfor %}
{% endif %}
{% if not quotes %}

No highlights on this run{% if filtered %} match the tag filter{% endif %}. Select transcript text in the review console to add one.

{% endif %} {% for q in quotes %}
{% if q.stale %}

Stale — re-anchor before citing. The transcript text this highlight covered has changed since it was captured. The quote below is the captured copy, unverified against the current transcript.

{{ q.captured_quote }}
{% elif not q.renderable %}

Could not resolve against the current transcript. The quote below is the captured copy.

{{ q.captured_quote }}
{% else %} {% for ln in q.quote_lines %}
{% if ln.speaker %}{{ ln.speaker }}:{% endif %} {{ ln.text }} {% if ln.start_seconds is not none and ln.end_seconds is not none %} [{{ "%.2f"|format(ln.start_seconds) }}–{{ "%.2f"|format(ln.end_seconds) }}s] {% endif %}
{% endfor %} {% endif %} {% if q.tags %}

Tags: {% for t in q.tags %}{{ t.name }}{% endfor %}

{% endif %} {% if q.note %}

Note: {{ q.note }}

{% endif %}

Highlight {{ q.id }} {% if q.start_seconds is not none and q.end_seconds is not none %} · {% if q.timing_precision != "word" %}≈ {% endif %}{{ "%.2f"|format(q.start_seconds) }}–{{ "%.2f"|format(q.end_seconds) }}s {% endif %} {% if q.speakers %} · {{ q.speakers|join(", ") }}{% endif %} · captured by {{ q.operator }}
Source text hash {{ q.source_text_hash }} {% if q.clip %}
Audio clip {{ q.clip.filename }}{% if q.clip.sha256 %} (SHA-256 {{ q.clip.sha256 }}){% endif %}{% endif %}

{% endfor %}
{% endblock %}