{% extends "base.html" %} {% block title %}Scorecard — dvad{% endblock %} {% block content %}
{{ sc.review_count }} scored reviews {% if sc.months %} · {{ sc.months[0] }} → {{ sc.months[-1] }}{% endif %} · plan / code / integration modes (spec has no governance pass) · {% if show_test %} hide test reviews {% else %} include test reviews {% endif %}
{# ── Reviewer leaderboard ─────────────────────────────────────────── #}

Reviewers

Every model that ever sat a reviewer seat. Click a column to sort. Conviction is the share of contested findings where the model refused to withdraw — the split-decision temperament that makes an adversarial reviewer worth paying for.

{% for r in sc.reviewers %} {% endfor %}
Model Reviews Findings Per review Accepted Hit rate Escalated Crit/High Consensus Contested Stood ground Conviction Vindicated Cost $ / accepted
{{ r.model }} {{ r.reviews }} {{ r.findings }} {{ r.findings_per_review }} {{ r.accepted }} {{ "%.0f%%"|format(r.hit_rate * 100) if r.hit_rate is not none else "—" }} {{ r.escalated }} {{ r.critical }}/{{ r.high }} {{ "%.0f%%"|format(r.consensus_rate * 100) if r.consensus_rate is not none else "—" }} {{ r.contested }} {{ r.stood_ground }} {{ "%.0f%%"|format(r.conviction_rate * 100) if r.conviction_rate is not none else "—" }} {{ r.vindicated }} {% if r.cost_usd %}${{ "%.2f"|format(r.cost_usd) }}{% else %}—{% endif %} {% if r.cost_per_accepted is not none %}${{ "%.3f"|format(r.cost_per_accepted) }}{% else %}—{% endif %}
{# ── Monthly trend ────────────────────────────────────────────────── #}

Monthly trend

Findings per month with acceptance in parentheses. Governance rules and role assignments changed over time — compare within a column, not across the whole row.

{% for m in sc.months %}{% endfor %} {% for r in sc.reviewers if r.findings > 0 %} {% for m in sc.months %} {% set cell = r.monthly.get(m) %} {% endfor %} {% endfor %}
Model{{ m }}
{{ r.model }}{% if cell %}{{ cell.findings }} ({{ "%.0f%%"|format(cell.accepted / cell.findings * 100) if cell.findings else "" }}){% else %}·{% endif %}
{# ── Split decisions ──────────────────────────────────────────────── #}

Split decisions

Every finding where the author pushed back and the reviewer refused to withdraw. {{ sc.split_decisions|length }} on record.

{% if sc.split_decisions %}
{% for d in sc.split_decisions %}
{{ d.reviewer }} vs {{ d.author or "?" }} {{ d.severity }} {{ d.final_resolution.replace('_', ' ') }} {{ d.project }} · {{ d.mode }} · {{ d.date }}
{{ d.description }}
{% endfor %}
{% else %}

No split decisions in the scored set.

{% endif %}
{# ── Head-to-head matrix ──────────────────────────────────────────── #}

Head-to-head

Reviewer pairs that sat the same review. Cell shows shared reviews and findings (row model / column model). Hover a cell for the full account.

{% for m in h2h_models %}{% endfor %} {% for a in h2h_models %} {% for b in h2h_models %} {% if a == b %} {% else %} {% set pair = h2h_lookup.get(a, {}).get(b) %} {% if pair %} {% set a_is_a = pair.model_a == a %} {% else %} {% endif %} {% endif %} {% endfor %} {% endfor %}
{{ m }}
{{ a }} {{ pair.reviews }}× {{ pair.a_findings if a_is_a else pair.b_findings }}/{{ pair.b_findings if a_is_a else pair.a_findings }} ·
Full matchup accounts ({{ sc.head_to_head|length }})
{# ── Reviewer vs author ───────────────────────────────────────────── #}

Reviewer vs. author

The true adversarial axis: how each reviewer fared against each author.

{% for v in sc.reviewer_vs_author %} {% endfor %}
Reviewer Author Reviews Findings Accepted Rate Pushback Stood ground Escalated
{{ v.reviewer }} {{ v.author }} {{ v.reviews }} {{ v.findings }} {{ v.accepted }} {{ "%.0f%%"|format(v.accept_rate * 100) if v.accept_rate is not none else "—" }} {{ v.author_pushback }} {{ v.stood_ground }} {{ v.escalated }}
{# ── Authors ──────────────────────────────────────────────────────── #}

The author's chair

How models behave when defending their own work. Accept rate is agreeableness toward incoming findings; hold rate is how often a challenged rejection was maintained instead of folding.

{% for a in sc.authors %} {% endfor %}
Model Reviews authored Groups answered Accept rate Pushbacks Folded Held Hold rate Cost
{{ a.model }} {{ a.reviews }} {{ a.responded }} {{ "%.0f%%"|format(a.accept_rate * 100) if a.accept_rate is not none else "—" }} {{ a.contests }} {{ a.folded }} {{ a.held }} {{ "%.0f%%"|format(a.hold_rate * 100) if a.hold_rate is not none else "—" }} {% if a.cost_usd %}${{ "%.2f"|format(a.cost_usd) }}{% else %}—{% endif %}
{# ── Service roles ────────────────────────────────────────────────── #}

Service roles

Dedup, normalization, revision, integration seats. The ledger records no quality signal for these — usage and cost only.

{% for s in sc.service_roles %} {% endfor %}
RoleModelReviewsCost
{{ s.role }} {{ s.model }} {{ s.reviews }} {% if s.cost_usd %}${{ "%.2f"|format(s.cost_usd) }}{% else %}—{% endif %}

Methodology

{% endblock %} {% block scripts %} {% endblock %}