{# T-1539: data-verdict drives per-verdict colour (CSS attribute selectors above) #}
{# T-1575: rec_complete=true only when verdict AND rationale present. Verdict-only blocks
render the warning instead of the green GO badge — can't claim a recommendation exists
if the rationale is missing. #}
{% if rec_complete %}
Recommendation{% if verdict and verdict != '?' %} — {{ verdict }}{% endif %}
{% if rec_rationale_html %}
Rationale
{{ rec_rationale_html | safe }}
{% endif %}
{% if rec_evidence_html %}
Evidence
{{ rec_evidence_html | safe }}
{% endif %}
{% elif verdict and verdict != '?' %}
Recommendation{% if verdict %} — {{ verdict }}{% endif %}
⚠ Verdict recorded as {{ verdict }} but the rationale is missing.
A recommendation without a rationale cannot be acted on — ask the agent to fill the
**Rationale:** line in the ## Recommendation section.
{# T-1578: NO-REC banner — agent has not yet written a `## Recommendation` block.
Same cyan theme (#0e7490) as cockpit pill and /approvals filter button. Ranks
above the artifacts-only fallback so "this isn't ready for review" is the
primary signal, even when research artifacts exist. #}
{% elif state == 'NO-REC' %}
Recommendation — NO-REC
The agent has not yet written a ## Recommendation block for this task.
The task isn't ready for review — ask the agent to add a recommendation
(GO / NO-GO / DEFER) with rationale and evidence
before deciding.
{% elif artifacts %}
No recommendation recorded yet. Open the research artifact:
{% for art in artifacts %}
{{ art.name }}{% if not loop.last %},{% endif %}
{% endfor %}
{% endif %}
{# T-1583: Reviewer Verdict — cross-surface parity with /approvals F3 (T-1569).
Silently absent when no `## Reviewer Verdict` block exists in the body
(pre-v1.4 tasks). Distinct CSS class so the visual separation between
agent's recommendation and reviewer's mechanical verdict is clear. #}
{% if reviewer and reviewer.overall %}
{% if reviewer.findings == 0 %}No findings.{% else %}{{ reviewer.findings }} finding{{ 's' if reviewer.findings != 1 else '' }} — see full Reviewer block.{% endif %}
{% endif %}
{# T-1810: flash banners — success/error from POST /review//pause//resolve #}
{% if resolved_flash %}
Paused dispatch resolved — new dispatch {{ resolved_flash }} fired.
{% endif %}
{% if resolve_error %}
Resolve failed — {{ resolve_error }}
{% endif %}
{# T-1810: paused-dispatch panel — web parity for `fw pause resolve`.
Only renders when this task has paused dispatches awaiting resolution.
Slice-5 forward-compat: rows with a matching `retry_of_dispatch_id`
are filtered out automatically by `list_paused_dispatches_for_task`. #}
{% if paused_dispatches %}
Paused Dispatches — Worker awaits your answer
{% for pd in paused_dispatches %}
{% if pd.severity == 'high' %}
HIGH
{% elif pd.severity == 'medium' %}
MED
{% elif pd.severity == 'low' %}
LOW
{% else %}
?
{% endif %}
{{ pd.dispatch_id_short }}{{ pd.age_label }} ago
{% if pd.worker_kind %}· {{ pd.worker_kind }}{% endif %}
Q: {{ pd.question_display }}
{% endfor %}
{% endif %}
{% for item in pending_tier0 %}
Tier 0 Approval Required
{{ item.risk }}
{{ item.command_preview }}
{% endfor %}
{% include '_review_acs.html' %}
{% if artifacts %}
Research Artifacts
{% for a in artifacts %}
{{ a.name }}
{% endfor %}