{% extends "base.html" %} {% block title %}Scorecard — dvad{% endblock %} {% block content %}
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.
| 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 %} |
Findings per month with acceptance in parentheses. Governance rules and role assignments changed over time — compare within a column, not across the whole row.
| Model | {% for m in sc.months %}{{ m }} | {% endfor %}
|---|---|
| {{ r.model }} | {% for m in sc.months %} {% set cell = r.monthly.get(m) %}{% if cell %}{{ cell.findings }} ({{ "%.0f%%"|format(cell.accepted / cell.findings * 100) if cell.findings else "" }}){% else %}·{% endif %} | {% endfor %}
Every finding where the author pushed back and the reviewer refused to withdraw. {{ sc.split_decisions|length }} on record.
{% if sc.split_decisions %}No split decisions in the scored set.
{% endif %}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 %} | {{ m }} | {% endfor %}||
|---|---|---|---|
| {{ a }} | {% 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 %}{{ pair.reviews }}× {{ pair.a_findings if a_is_a else pair.b_findings }}/{{ pair.b_findings if a_is_a else pair.a_findings }} | {% else %}· | {% endif %} {% endif %} {% endfor %}
The true adversarial axis: how each reviewer fared against each author.
| 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 }} |
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.
| 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 %} |
Dedup, normalization, revision, integration seats. The ledger records no quality signal for these — usage and cost only.
| Role | Model | Reviews | Cost |
|---|---|---|---|
| {{ s.role }} | {{ s.model }} | {{ s.reviews }} | {% if s.cost_usd %}${{ "%.2f"|format(s.cost_usd) }}{% else %}—{% endif %} |