{# The round thread — each round's feedback items paired with the project's answers, plus the agent's own raised concerns. `thread.rounds` is newest-first; `answered` (derived) = every feedback item has a matching answer (spec §5.6). #} {% import "macros.html" as m %} {% if thread.has_rounds %} {% for r in thread.rounds %}

Round v{{ r.round }}

{% if r.unreadable %} unreadable — {{ r.reason }} {% else %} {{ 'answered' if r.answered else 'open' }} {{ m.derived() }} {% endif %}
{% if not r.unreadable %}
from {{ r.feedback.authored_by }} · {{ r.feedback.authored_at }}
{% for pair in r['items'] %}
{{ pair.item.id }} {{ pair.item.kind }} {% if pair.item.priority %}priority {{ pair.item.priority }}{% endif %} {% if pair.item.applies_to %}{{ pair.item.applies_to.view }} · {{ pair.item.applies_to.ref }}{% endif %} {{ pair.item.title }}

{{ pair.item.body }}

{% if pair.answer %}
↩ response {{ pair.answer.status }}
{% if pair.answer.body %}

{{ pair.answer.body }}

{% endif %} {% if pair.answer.evidence %}

evidence · {{ pair.answer.evidence }}

{% endif %}
{% else %}
awaiting a response
{% endif %}
{% endfor %} {% if r.agent_raised %}
the project agent raised
{% for ar in r.agent_raised %}
{{ ar.id }}{{ ar.kind }} {{ ar.body }} {% if ar.evidence %}· {{ ar.evidence }}{% endif %}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %} {% else %} {{ m.empty_inline("No feedback rounds yet", "Compose feedback above — it's delivered into the project's feedback/ inbox and threads here with the project's response.") }} {% endif %}