Applied revision {{ update.revision }}.
{% if update.changed_slots %} Changed: {{ update.changed_slots|join(', ') }}.{% endif %}
{% if update.invalidated_decisions or update.invalidated_challenges %}
⚠ This change unseats {{ update.invalidated_decisions|length }} decision(s) and
{{ update.invalidated_challenges|length }} premise(s) — regenerate the assessment to refresh it.
{% endif %}
{% if update.stale_artifacts %}
Now stale: {{ update.stale_artifacts|join(', ') }}.{% endif %}
{% endif %}
{% if s.readiness.ready %}Ready for implementation
{% elif s.readiness.blocking %}Blocked
{% else %}Ready for assessment{% endif %}
{{ s.readiness.resolved }} / {{ s.readiness.total }} explicit
{% for i in range(s.readiness.total) %}
{% endfor %}
{% if s.readiness.blocking %}
Blocking unknowns: {{ s.readiness.blocking_labels|join(' · ') }}
{% endif %}