{% extends "base.html" %} {% block title %}Grade run — FreeWeight{% endblock %} {% block content %}

Grade run {{ run_id[:8] }}

{% if error %} {% endif %} {% if view %}

{{ view.goal_name }} declares {{ view.criteria | length }} {{ 'criterion' if view.criteria | length == 1 else 'criteria' }} graded by a person rather than a rule or a jury. Blinded and shuffled: which model wrote these is not shown and is not fetched, and the order is not the order they were produced in. Every grade is saved the moment you submit it; the run's composite and its capability evidence are refreshed with it.

Graded
{{ view.recorded }} / {{ view.expected }}

{{ view.samples | length }} samples × {{ view.criteria | length }} human criteria.

Complete
{{ 'yes' if view.complete else 'not yet' }}

{% if view.complete %}Every sample measures the whole rubric. See the evidence. {% else %}Ungraded criteria are excluded from the composite and the applied weight says so.{% endif %}

{% if view.samples %} {% for sample in view.samples %}

Sample {{ loop.index }} of {{ view.samples | length }} task {{ sample.case_id }}

{{ sample.response_text }}
{% for criterion in view.criteria %} {% set existing = sample.grades.get(criterion.key) %} {% endfor %}
Grade this sample on each human criterion. Notes stay beside the grade.
Criterion Your grade
{{ criterion.name }} weight {{ '%.2f' % criterion.weight }} {% if criterion.descriptors %}
what the points mean
{% for point, text in criterion.descriptors | dictsort(reverse=true) %}
{{ point }}
{{ text }}
{% endfor %}
{% endif %}
Grade {% for point in range(1, criterion.scale_points + 1) %} {% endfor %}
{% if existing %} graded {{ existing.grade }} {% endif %}
{% endfor %} {% else %}

Nothing to grade

This run stored no completed samples with their text. A goal run stores every response by default, so a run with none either failed every sample or was cancelled.

{% endif %} {% elif not error %}

No run to grade.

{% endif %} {% endblock %}