Every exercise separates two things:
- Presentation: the fragments a learner sees and the pieces they manipulate (prompt,
options, tokens, pairs, blanks). These are compositions of
bindings, the same as any lesson content.
- Evaluation: how a response is graded. Correctness always refers to stable IDs or to
accepted-value bindings, never to duplicated display values.
The stable core is a small set of evaluation strategies. An exercise type is an
authoring and interaction template layered on top, and several types can share one
strategy.
Shared shape
ChoiceOption is reused wherever an exercise offers addressable pieces: options, pair
items, and tokens.
Evaluation strategies
Accepted-value bindings usually point at a field such as field_alternate_answers, so
“a cat” and “cats” both pass without duplicating text in the exercise. Typed grading uses
NormalizationRules for case, whitespace, punctuation, or script (for example accepting
kana for kanji).
Types at a glance
select-image is mechanically multiple-choice with image-valued option bodies and an
audio prompt. It is a distinct template that shares the selected-options strategy, with
presentation.layout set to image-grid.
Type-specific bodies
Distractors
Distractors stay explicit for every type: options, unpaired right items, and unused
tokens are all stored. Distractor queries are editor tooling only: the author selects a
pool, Studio proposes candidates, and the chosen distractors are saved explicitly.
Where grading runs
Auto-gradable types resolve entirely from authored IDs, ordering, pairs, or normalized
text, so Studio can preview and grade them.
speaking is different. It needs a microphone and on-device speech recognition, so
recording and scoring run only in the learner application. Studio authors the target
phrase and strictness; it does not record or score, and nothing is uploaded.