{{ status_label[st.status] }}
{%- if not st.active %}—{% elif st.hidden %}??:??:??{% else %}{{ st.remaining|clock }}{% endif -%}
{% if st.active %}caged {{ st.elapsed|dur }}{% if st.frozen %} · clock held{% endif %}{% else %}the kennel is quiet{% endif %}
{% if st.active %}
started
{{ st.started_at|local }}
ends
{% if st.hidden %}hidden{% else %}{{ st.end_at|local }}{% endif %}
{# 🔴 base is the SENTENCE and the sentence is the secret. This block already gates `ends`, but end_at = started + base + adjust + frozen and `started` is two rows up — so printing base here undid that gate by arithmetic. adjust/frozen stay: both are announced when they happen, and breaking ONE operand is enough. #}
base
{% if st.hidden %}hidden{% else %}{{ st.base_seconds|dur }}{% endif %}
adjustments
{{ st.adjust_seconds|sdur }}
frozen
{{ st.frozen_seconds|dur }}{% if st.freeze_until %} · thaws {{ st.freeze_until|rel(now) }}{% endif %}
{% if st.note %}
note
{{ st.note }}
{% endif %}
{% endif %}