You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
One authoritative backend validator that checks any QTI item against the QTI 3.0 schema, independent of source. The frontend surfaces only user-correctable errors; full compliance is guaranteed here.
Complexity: Medium Target branch: unstable
Context
QTI arrives from the editor and from ricecooker, and may use interaction types or constructs the editor never produces.
The sync API accepts writes outside the editor, so the frontend's by-construction validity can't be assumed; QTI must be validated on save, not only at upload and publish.
Publish validates every item in a channel and ricecooker uploads in bulk, so the schema can't be re-parsed per item.
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.
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Overview
One authoritative backend validator that checks any QTI item against the QTI 3.0 schema, independent of source. The frontend surfaces only user-correctable errors; full compliance is guaranteed here.
Complexity: Medium
Target branch: unstable
Context
The Change
Acceptance Criteria
References
AI usage