Rubric Specification

If you're looking for the syntax of the YAML language itself, then look here. This page is for the allowed items in a rubric's .yml file.

Minimal Rubric

Here is a rubric with as few items as possible. Everything here is required.

name: My rubric

criteria:
  "first and only criterion":
    worth: 10

All Items

Here is a full rubric with everything specified, with comments for more information about each key.

# -- Rubric Details --
# Required name
name: My rubric
# Optional description. Gets shown to the student when grading
desc: Description of my rubric
# Sanity check. If the sum of all criteria doesn't add to this number,
# an error message will be displayed. Just ensures that you give the correct
# worth to all criteria
total: 100





# -- Deadline verification --
# All of these are optional

# The optional submission deadline. Must be in this format
#   YYYY-MM-DD HH:MM:SS
# It will use the current local timezone.
# If a submission is created after this time, the late flag will be true.
# If you enter a deadline from the past, you will be warned during compilation, but
# compilation will continue.
deadline: 2020-05-21 23:59:59
# If this is set to false, the submission will always have a 
# grade of 0 unless manually changed. Defaults to true (allowing late submission).
# A submission *can* still be submitted if this is false, but its grade will be 0
# and the late flag will be true.
# If this is true, `deadline` functions exactly like `final_deadline`
allow_late: true
# This amount will be subtracted from the grade if the submission is late
late_penalty: 10
# This will subtract this many points per day after the deadline.
# One second after the deadline is the first late day, so -5 points.
# 24 hrs + 1 second after the deadline is the second late day, so -10.
# You probably shouldn't use both this and "late_penalty", as they will 
# both take effect if you provide both.
late_penalty_per_day: 5
# Same format as deadline.
# If this is provided, absolutely no submissions will be graded
# after this time. This is mostly used when you want to set a 
# soft deadline (with `deadline`), then late penalties per day, 
# then a hard deadline.
final_deadline: 2020-05-24 23:59:59




# -- Criteria --
criteria:
  # Each criteria has its name as the key.
  # While the quotes are strictly necessary,
  # they are good practice.
  # I usually indent YAML with 2 spaces.

  "First criterion":
    # The name of the corresponding function. This should be unique.
    # If not specified, the function name will be the criterion's name,
    # lowercased and whitespace replaced with dashes. But it's best to be
    # explicit about this.
    # Should match the function name exactly.
    # Because this is unique, it is used to find criteria within a rubric.
    func: whatever_func
    # Any number (even negative). Lowest number is run first.
    # Criteria without indices do not have consistent order,
    # and may be tested concurrently.
    index: 1
    # A description
    desc: You should do this to fulfil this criterion
    # required point value
    # can be negative
    worth: 50
    # success and failure messages
    # default to "passed" and "failed"
    messages: ["Passed!", "not passed"]
    # This will prevent the criterion from being displayed
    # to the student. Useful if you want hidden requirements 
    # or are grading a test
    hide: false

  # This criterion has all default values
  "Second criterion":
    func: second_criterion
    index: 100
    desc: ""
    worth: 0
    messages: ["passed", "failed"]
    hide: false