{{ paper.shown_status | status_words }} {% if paper.internal_review %}e2er's internal quality review: {{ "%.1f" | format(paper.internal_review.score) }} of 10{% endif %}
{% if subscription %}
No spending limit {% if uncounted_key %}(Google bills your Gemini API key; e2er does not count the cost){% else %}(your subscription){% endif %}
{% else %}
${{ "%.2f"|format(cost_spent) }} of the ${{ "%.2f"|format(cost_cap) }} spending limit
{% endif %}
{% if can_cancel %} {% endif %} {% if can_cancel_attempt %} {% endif %} {% if can_resume and not awaiting_review and not budget_paused %} {% endif %}
{% if pending_queries %}
Data queries wait for your approval. A specialist wants to run these queries on the data warehouse; they run only after you approve them.
{% endif %} {% if elsewhere %}
This run is working in another e2er window. {{ elsewhere_text }} {% if elsewhere.port and not elsewhere.legacy %}If that page says this tab is not signed in, run e2er --port {{ elsewhere.port }} in a terminal: it opens that dashboard signed in.{% endif %} {% if elsewhere.port and not elsewhere.legacy %}Open it there{% endif %}
{% elif awaiting_review %}
The run stopped for you. Read what the specialists wrote, change it if you want, and let it continue. Review now
{% elif paper.shown_status == "completed" %}
The study is finished. Check it and publish it. Verify and publish
{% endif %} {% if tp and tp.steps %}

Steps {{ tp.template_label }}{% if tp.current %} · now: {{ tp.current }}{% endif %}

    {% for st in tp.steps %}
  1. {{ st.label }}{{ st.kind }} {% if st.state == "waiting" or (st.state == "failed" and awaiting_review) %}{{ st.note }} → {% else %}{{ st.note }}{% endif %}
  2. {% endfor %}

Specialists done {{ tp.specialists_done | length }}

{% if tp.specialists_done or tp.specialists_failed %} {% else %}

None yet.

{% endif %}

Checks

{% if tp.checks %} {% else %}

None run yet.

{% endif %}
{% if tp.rounds %}

Rounds of improvement

    {% for r in tp.rounds %}
  1. Round {{ r.round }}{% if r.specialists %}: {{ r.specialists | join(", ") }}{% endif %}{% if r.reason %} ({{ r.reason }}){% endif %} {% if r.ceiling %}
    Ceiling check: {{ r.ceiling }}{% if r.ceiling_reason %} ({{ r.ceiling_reason }}){% endif %}
    {% endif %} {% if r.pivot %}
    Change of approach: {{ r.pivot | join(", ") }}
    {% endif %} {% if r.pivot_refused %}
    Not run as part of the change of approach: {{ r.pivot_refused | join(", ") }} (it would rewrite the whole draft)
    {% endif %} {% if r.ended %}
    The strategist ended the rounds here.
    {% endif %}
  2. {% endfor %}
{% endif %} {% if tp.self_critique %}

Self-critique: {{ tp.self_critique.note }}

{% endif %} {% if tp.polish %}

Polish: {{ tp.polish }}

{% endif %} {% endif %} {% if progress %}
{% if progress.active %}
{% for a in progress.active %} {{ a.name | specialist_label }} {% if a.minutes is not none %}working for {{ a.minutes }} min{% endif %} {% endfor %}
{% elif not progress.terminal %}
Between steps…
{% endif %} {% if progress.elapsed_min is not none %}
{{ progress.elapsed_min }} min since the run started
{% endif %} {% if progress.phases and not (tp and tp.steps) %}
    {% for p in progress.phases %}
  1. {{ p.name | step_label }}
  2. {% endfor %}
{% endif %}
{% endif %} {% if failure and failure.failed and not awaiting_review %}

{{ failure.status | status_words | capitalize }}

{{ failure.headline }}

{% if failure.specialists %} {% endif %} {% for h in failure.hints %}

{{ h }}

{% endfor %} {% if failure.raw and failure.raw != failure.headline %}
Technical details
{{ failure.raw }}
{% endif %}
{% elif paper.last_error and not awaiting_review and not failure.failed %}
Technical details
{{ paper.last_error }}
{% endif %}
What happened ({{ events | length }} most recent entries) {% if not events %}

Nothing yet.

{% else %}
    {% for e in events %}
  1. {{ e.event_type | event_label }} {% if e.specialist %}{{ e.specialist | specialist_label }} {% elif e.stage %}{{ e.stage | step_label }}{% endif %}
  2. {% endfor %}
{% endif %}