{% extends "base.html" %} {% block title %}Pipeline Dashboard{% endblock %} {% block content %}

Pipeline Dashboard

Total Specs
{{ summary.spec_total }}
Test Procedures
{{ summary.test_procedure_count }}
Work Items
{{ summary.work_item_total }}
Pipeline Events
{{ summary.pipeline_event_count }}
{# ── Throughput ────────────────────────────────────── #}

Throughput

{% set m2 = metrics.get("M2", {}) %}
M2
Spec Revision Rounds
{{ "%.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 %}
{# ── Quality ───────────────────────────────────────── #}

Quality

{% set m6 = metrics.get("M6", {}) %}
M6
Defect Injection Rate
{{ "%.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 %}
{# ── Coverage ──────────────────────────────────────── #}

Coverage

{% set m16 = metrics.get("M16", {}) %}
M16
Verified with Passing Tests
{{ "%.0f"|format(m16.value * 100) ~ "%" if m16.value is not none else "N/A" }}
verified specs with all tests passing
{% if m16.get("numerator") is not none %}{{ m16.numerator }} of {{ m16.denominator }} verified specs{% endif %}
{% set m17 = metrics.get("M17", {}) %}
M17
Stale Test Ratio
{{ "%.0f"|format(m17.value * 100) ~ "%" if m17.value is not none else "N/A" }}
tests older than 30 days or never run
{% if m17.get("numerator") is not none %}{{ m17.numerator }} stale / {{ m17.denominator }} total{% endif %}
{% set m18 = metrics.get("M18", {}) %}
M18
Specs Without Tests
{{ m18.value if m18.value is not none else "N/A" }}
implemented specs with no linked tests
{% if m18.get("denominator") is not none %}of {{ m18.denominator }} implemented/verified{% endif %}
{% if m18.get("spec_ids") %}
Show affected specs
    {% for sid in m18.spec_ids[:20] %}
  • {{ sid }}
  • {% endfor %} {% if m18.spec_ids|length > 20 %}
  • ... and {{ m18.spec_ids|length - 20 }} more
  • {% endif %}
{% endif %}
{# ── Lifecycle ─────────────────────────────────────── #}

Lifecycle

{% set m12 = metrics.get("M12", {}) %}
M12
Spec Retirement Rate
{{ "%.0f"|format(m12.value * 100) ~ "%" if m12.value is not none else "N/A" }}
retired / (retired + active)
{% if m12.get("numerator") is not none %}{{ m12.numerator }} retired / {{ m12.denominator }} total{% endif %}
{% endblock %}