ADR-037 โ Teacher-only material in a solution¶
Status¶
Accepted (2026-09-29, decided by the teacher who owns the product; with the
optional hook studentSolution of QuestionTypeServer in @quiz/core and
studentSolutionView in apps/api/src/modules/live/studentView.ts). No
migration. Settles question 27 of docs/spec/06.
Amended by ADR-063 ยง7: a teacher may explicitly copy an AI justification into the student-visible comment. Grading criteria stay private; there is no automatic disclosure of the justification.
Context¶
A type's toSolution is served whole to the teacher's surfaces, and was
served whole to a student as soon as the feedback policy showed the key
(showKey), which the exercise preset turns on right after hand-in. An
essay's solution carries its grading criteria (rubric) beside the model
answer; a short answer renders an llm matcher (phase 2) as its rubric.
Criteria are how the teacher awards points, not an answer.
Decision¶
- Grading criteria never reach a student, even under
showKey. An essay's model answer does, as the expected answer; without one the student sees no guide at all. - One optional hook,
studentSolution?(solution, config): TSolution | null: the part oftoSolution's result a student may read. Pure; absent means the whole solution. It takes the config becauseshortcannot tell anllmline from anexactone in its rendered list.richreturns{ reference }ornull;shortdrops itsllmlines. - One student exit for a key,
studentSolutionView, besidestudentView; its callers serve it only whenshowKeyholds. The teacher's surfaces keepsolutionView. The correction projection reads the results by question, which keep the teacher's solution: safe, because anllmmatcher is refused at publication (short.llm_not_available). - A circuit's key is its reference alone, for everyone: nothing read its stimuli or grading block from the solution, and the teacher reads them in the editor and the grading details. No hook.
Consequences¶
RichSolution.rubricis optional; the essay's review draws the criteria panel only when it is there.- The essay editor says so: the criteria hint ends "Students never see it", the model answer hint says when a student does.
Alternatives considered¶
- A second forbidden-key list on the solution: a key name cannot say whose a field is; the type can.
- Filtering in the web client by
audience: the rubric would still travel to the browser.