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
Derive a Perseus archive from QTI items whose interaction type Perseus can express (single/multiple choice, text/math input), published alongside the QTI package so older Kolibri still renders the content.
Complexity: High Target branch: unstable
Context
Older Kolibri renders Perseus; newer renders QTI. The authored source of truth is QTI XML in raw_data.
PerseusExerciseGenerator builds Perseus from structured question/answers, which native QTI items no longer carry.
The pydantic models can read the choice/text-entry subset. Advanced interaction types have no Perseus equivalent.
The Change
For QTI items mapping to a Perseus question type, derive the structured form from the QTI XML and produce a Perseus archive in addition to the QTI package.
Publish QTI only for nodes containing any interaction with no Perseus equivalent — never a partial or invalid Perseus.
Acceptance Criteria
A node of choice/text-input QTI items publishes both a QTI package and a Perseus archive
The derived Perseus matches the QTI item: prompt, choices, correct answers
Claude mapped the existing publish/validation/ricecooker code, proposed the issue breakdown, and drafted each issue; the maintainer steered every decision and reviewed throughout.
Plan: When every assessment item on a node is a native QTI item whose interaction Perseus can express (single/multiple choice, text/math input), publish a Perseus archive in addition to the QTI package, so older Kolibri renders the node; otherwise publish QTI only.
QTI HTML/MathML → Perseus markdown converter
Derive structured Perseus data from a native QTI item
PerseusExerciseGenerator renders native QTI items via the deriver
Publish both archives for derivable nodes; QTI-only fallback
@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
Implemented code following the pre-approved plan using test-driven development (red-green-refactor)
Ran the project's full test suite and linter before committing
For UI changes: captured live screenshots to verify rendering
For backend changes: verified with example API/CLI output
Activity
rtibblesbot commentedon Jul 9, 2026
Plan: When every assessment item on a node is a native QTI item whose interaction Perseus can express (single/multiple choice, text/math input), publish a Perseus archive in addition to the QTI package, so older Kolibri renders the node; otherwise publish QTI only.
PerseusExerciseGeneratorrenders native QTI items via the deriver@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly
How was this generated?
rtibblesbot commentedon Jul 10, 2026
The bot has been waiting for a response for 2 hour(s). It will resume automatically when someone replies.
rtibblesbot commentedon Jul 10, 2026
The bot has been waiting for a response for 2 hour(s). It will resume automatically when someone replies.