Vigil punishes its own punish function. Is this according spec?
The ever vigilant watchers of your code have found malfeasance in:
def punish(line, offense):
Crime: Raised 'list assignment index out of range' which was not caught.
Each has been dealt an appropriate punishment.