Overview
Add the QTI assessment-item type and a stable preset→bit ordering for the renderable bitmask — both consumed by Studio and Kolibri.
Context
The Change
- Add a
QTI assessment-item type to constants.exercises.
- Define the preset→bit ordering for the renderable bitmask as append-only: existing presets keep their bit; new presets get the next.
Acceptance Criteria
References
AI usage
Architecture decided with the maintainer across an iterative session: blanket QTI type with the item XML in raw_data; XSD-authoritative validation across all sources; a legacy→QTI global migration with an API-layer dual-read; ricecooker upload delegating to the AssessmentItem serializer; and a Perseus custom-interaction contract confirmed against the QTI 3.0 specification. Claude mapped the existing publish/validation/ricecooker code, proposed the breakdown, and drafted each issue; the maintainer steered every decision and reviewed throughout.
Overview
Add the
QTIassessment-item type and a stable preset→bit ordering for the renderable bitmask — both consumed by Studio and Kolibri.Context
AssessmentItem.typevalues come fromle_utils.constants.exercises; Studio Adding raw deployments app to fle-utils #1 needs aQTIvalue.File.included_presets(studio Separated constants #8, kolibri Trying init file #10) is a bitmask whose bit positions derive from a stable preset ordering — like Kolibri's metadata-label bitmasks, which take each label's bit from its index in the le-utils ordered list.The Change
QTIassessment-item type toconstants.exercises.Acceptance Criteria
constants.exercisesexposes aQTIassessment-item typeReferences
AI usage