First evaluation attempt, before any answer endpoint or grade freeze existed:
python tools/evaluate_answers.py

AssertionError at the obligation-index coverage check:
assert sorted(x['index'] for x in parts) == list(range(len(q['requirements'])))

Both assessor files used [1,2,3,4] for all72responses, meaning the first through
fourth supplied obligations. Each assessor independently confirmed this ordinal
interpretation without changing any output. The evaluator was not weakened or
edited. The raw first files were preserved byte-for-byte; a recorded mechanical
index normalization subtracts1. No score, reason, evidence flag or answer changed.
See answer-index-normalization.json and normalize_answer_indices.py.
