{% extends "base.html" %} {% block title %}{{ phase.key }}{% endblock %} {% block body %} {% if phase.frozen %}
freeze_exception: true with a freeze_exception_reason, and planning is blocked outright. garden unfreeze {{ phase.key }} lifts it.{{ closing_review.stage.replace('_', ' ') }}{% if closing_review.personas %} · roles {{ closing_review.personas|join(', ') }}{% endif %}{% if closing_review.source %} · source {{ closing_review.source }}{% endif %}{% if closing_review.evidence %} · evidence {{ closing_review.evidence[:12] }}{% endif %}{% if closing_review.reason %}
{{ closing_review.reason }}{% endif %}
spent ${{ '%.2f' % spent }}{% if budget %} of ${{ '%.2f' % budget }}{% if spent >= budget %} · budget exceeded, dispatch paused{% endif %}{% endif %} · default owner {{ phase.owner or 'unassigned' }} · {{ rows|selectattr('0.pr')|list|length }} PR(s) tracked · fixed brief cost ~{{ '{:,}'.format(fixed_tokens) }} tokens (head + rules + digest + product + goals){% if retro_pending %} · retro: waiting for personas ({{ retro_pending.done }} of {{ retro_pending.total }}){% endif %}
| id | status | owner | p | tier | title | deps | pr | review | ci | rev | brief | tokens | cost |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ stage(eff, 18) }}{{ eff.replace('_',' ') }} | {{ owner or 'unassigned' }} | {{ priority_label(t.priority) }} | {{ t.difficulty }} | {{ t.title }} | {{ t.depends_on|join(', ') }} | {% if t.pr %}#{{ t.pr.rsplit('/', 1)[-1] }}{% if st.pr_draft %} draft{% endif %}{% endif %} | {% if st.last_review %}auto: {% if st.last_review.get('verdict') %}{{ st.last_review.get('verdict').replace('_', ' ') }}{% else %}incomplete{% endif %}{% endif %}{% if st.review_decision %}{% if st.last_review %} · {% endif %}{{ st.review_decision.lower().replace('_', ' ') }}{% endif %} | {{ (st.checks or '').lower() }} | {{ st.revisions or '' }} | ~{{ '{:,}'.format(brief_tok) }} | {% if u.runs %}{{ '{:,}'.format(u.input_tokens) }} / {{ '{:,}'.format(u.cache_read_input_tokens) }} / {{ '{:,}'.format(u.output_tokens) }}{% endif %} | {% if u.runs %}${{ '%.2f' % u.cost_usd }}{% endif %} |
| {% if hide_done and hidden_count %}all {{ hidden_count }} tasks are done{% else %}no tasks yet{% endif %} | |||||||||||||
| tier | tasks | done | avg rev | first-pass |
|---|---|---|---|---|
| {{ tier }} | {{ d.tasks }} | {{ d.done }} | {{ d.avg_revisions }} | {% if d.first_pass_rate is not none %}{{ (d.first_pass_rate * 100)|round|int }}%{% endif %} |