WR-01: a deterministic server-side guard behind the grader's prompt.
storeGrade drops feedback sharing a run of six words with the rubric
(runs also in the question or model answer do not count) and notes it
for the owner in grading_error.
- graders registry collected at boot from every HasGraders plugin,
manual first; a duplicate or reserved code fails boot
- grading job on queue quizzes_grading with three attempts; a stale
or reviewed answer is never touched; the last failure marks it failed
- learning answers enqueue at once, tests at close; a grade
recalculates a finished attempt and fires AnswerGradedEvent after
commit