{{ "%.1f"|format(m2.value) if m2.value is not none else "N/A" }}
{{ m2.get("unit", "versions") }}
{% if m2.get("sample_count") is not none %}{{ m2.sample_count }} specs sampled{% if m2.get("min") is not none %} ({{ m2.min }}–{{ m2.max }}){% endif %}{% endif %}
{% set m4 = metrics.get("M4", {}) %}
M4
Spec-to-Implemented Duration
{{ "%.1f"|format(m4.value) if m4.value is not none else "N/A" }}
{{ m4.get("unit", "hours") }}
{% if m4.get("sample_count") is not none %}{{ m4.sample_count }} specs{% if m4.get("median") is not none %} (median: {{ "%.1f"|format(m4.median) }}h){% endif %}{% endif %}
{{ "%.0f"|format(m6.value * 100) ~ "%" if m6.value is not none else "N/A" }}
defects / specs implemented
{% if m6.get("numerator") is not none %}{{ m6.numerator }} defects / {{ m6.denominator }} specs{% endif %}
{% set m10 = metrics.get("M10", {}) %}
M10
Defect Resolution Time
{{ "%.1f"|format(m10.value) if m10.value is not none else "N/A" }}
{{ m10.get("unit", "hours") }}
{% if m10.get("sample_count") is not none %}{{ m10.sample_count }} resolved{% if m10.get("median") is not none %} (median: {{ "%.1f"|format(m10.median) }}h){% endif %}{% endif %}
{% set m11 = metrics.get("M11", {}) %}
M11
Regression Rate
{{ "%.0f"|format(m11.value * 100) ~ "%" if m11.value is not none else "N/A" }}
failed / total assertion runs
{% if m11.get("numerator") is not none %}{{ m11.numerator }} failed / {{ m11.denominator }} runs{% endif %}