EXP-039: modeled explicitly (was an inline dict[str, str])
so the generated JSON-Schema / TS types carry the structured
{src, label, is_correct?} shape instead of a loose string
map. extra="forbid" + the two required fields replace the
former key-subset / src+label-present checks; the
"exactly one correct" rule stays in _validate_picture_choice_fields.
is_correct stays a str ("true" marks the answer) for
backward compatibility with authored content, not a bool.
One image option in a PICTURE_CHOICE exercise.
EXP-039: modeled explicitly (was an inline
dict[str, str]) so the generated JSON-Schema / TS types carry the structured{src, label, is_correct?}shape instead of a loose string map.extra="forbid"+ the two required fields replace the former key-subset / src+label-present checks; the "exactly one correct" rule stays in_validate_picture_choice_fields.is_correctstays astr("true"marks the answer) for backward compatibility with authored content, not abool.