{# Shared run identity + two-step review sequence (issue #117, Phase B). Rendered at the top of BOTH review surfaces: the workbench ("who is speaking", step 1) and the transcript stepper ("check the words", step 2). It gives the operator one recognizable run name and a clear "where am I in the sequence" orientation, so the two screens read as one journey instead of two unrelated pages. STATIC BY CONSTRUCTION: a pure function of (run, current_step). It owns NO progress counter and NO claim/action controls. Step 1 progress stays inside the htmx-swapped #labels region; Step 2 progress stays inside the ReviewStepper island and its server fallback; the claim-state line and the one dominant Continue per step stay with each page. A shared header cannot own live progress without going stale the moment the operator acts (plan §6 review note). #} {% macro review_journey(run, current_step) %}

{{ run_source_title(run) }}

Added {{ run.created_at.strftime("%Y-%m-%d") }} · {{ run.id.hex[:8] }}

{# role="list"/"listitem" restore list semantics under `.review-steps`' `list-style: none`, which Safari/VoiceOver otherwise strip (review finding). #}
  1. Step 1 of 2 Who is speaking
  2. Step 2 of 2 Check the words
{% endmacro %}