{# SPA partial: task detail loaded into index.html via HTMX OOB swaps.
Update channels:
• Initial load: renders all events + starts SSE via JS EventSource.
• SSE "event": appends event_fragment.html fragments to #phase-events-list.
• Pipeline OOB: polls /tasks/{id}/pipeline-oob every 2s, swaps OOB attrs.
• SSE "close": stops streaming, triggers final OOB fetch. #}
{# ── Header OOB swaps ── #}
{{ task.name }}
{{ task.id }}
{{ task.status }}
{% if task.current_phase %}
phase {{ task.current_phase }}
{% else %}
—
{% endif %}