<pclass="small mute">From the board's own history: when each card joined each column. No estimates; the forecasts sample the weeks the board has had.</p>
<tbody>{% for f in c.forecasts %}<tr><td>{{ f.scope }}</td><td>{{ f.remaining }}</td>
22
{% match f.p50 %}{% when Some(d) %}<td><strong>{{ d }}</strong></td>{% when None %}<tdclass="mute"colspan="2">no forecast: no card has reached Done in the weeks it draws from</td>{% endmatch %}
23
{% if let Some(d) = f.p85 %}<td>{{ d }}</td>{% else if f.p50.is_some() %}<tdclass="mute">beyond ten years</td>{% endif %}</tr>{% endfor %}</tbody>
24
</table></div>
25
{% if let Some(f) = c.forecasts.first() %}<pclass="small mute">From {{ f.weeks_of_history }} week{% if f.weeks_of_history != 1 %}s{% endif %} of throughput (cards reaching Done each week), sampled {{ crate::web::board_charts::TRIALS_SHOWN }} times; the same history gives the same dates all day.</p>{% endif %}
{% if timeline_svg.is_empty() %}<pclass="mute">No iterations yet, and no open card with a milestone. Start an iteration on the board, or give cards milestones, and they appear here.</p>
<pclass="small mute">{% if let Some((l, s)) = days.last() %}{{ l }} left of {{ s }} after {{ days.len() }} day{% if days.len() != 1 %}s{% endif %}{% endif %}.</p>
{% match c.cycle_median_days %}{% when Some(m) %}<pclass="kpi"><spanclass="kpi-v">{{ m }} d</span><spanclass="kpi-l">median</span> · <spanclass="kpi-v">{% if let Some(p) = c.cycle_p85_days %}{{ p }}{% endif %} d</span><spanclass="kpi-l">85th percentile</span></p>
42
<pclass="small mute">From leaving the first column to reaching Done, over {{ c.cycle_finished }} finished card{% if c.cycle_finished != 1 %}s{% endif %}.</p>
43
{% when None %}<pclass="mute">No card has gone from started to Done yet.</p>{% endmatch %}
44
</figure>
45
<figureclass="chart-card"><figcaption>Throughput: cards done each week</figcaption>{{ throughput_svg|safe }}
46
<details><summaryclass="small">the numbers</summary><tableclass="board-table"><thead><tr><thscope="col">Week from</th><thscope="col">Done</th></tr></thead><tbody>{% for (w, n) in week_table %}<tr><td>{{ w }}</td><td>{{ n }}</td></tr>{% endfor %}</tbody></table></details>
<divclass="legend">{% for name in c.columns %}<spanclass="key cf-key cf-{% if loop.last %}5{% else %}{{ loop.index0 % 5 }}{% endif %}">{{ name }}</span>{% endfor %}</div>
50
<pclass="small mute">Cards in each column at the end of each day. A band that keeps widening is where work waits.</p>
51
<details><summaryclass="small">the last fortnight's numbers</summary><divclass="table-wrap"><tableclass="board-table"><thead><tr><thscope="col">Day</th>{% for name in c.columns %}<thscope="col">{{ name }}</th>{% endfor %}</tr></thead><tbody>{% for (d, row) in flow_table %}<tr><td>{{ d }}</td>{% for n in row %}<td>{{ n }}</td>{% endfor %}</tr>{% endfor %}</tbody></table></div></details>