Skip to content

Publish mixed exercises QTI only when Perseus can't read a legacy input answer - #6273

Open
rtibblesbot wants to merge 4 commits into
learningequality:unstablefrom
rtibblesbot:issue-6208-c38516
Open

rtibblesbot wants to merge 4 commits into
learningequality:unstablefrom
rtibblesbot:issue-6208-c38516

Conversation

@rtibblesbot

@rtibblesbot rtibblesbot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Mixed nodes (native QTI + legacy input questions) published unsatisfiable Perseus numeric-inputs; they now publish QTI only when a legacy input answer is not a finite number to both QTI and Perseus (e.g. Sphere, +50%, 1e400).
  • Input questions with no correct answer are left out of exercise Perseus archives and their assessment metadata; units keep them.
  • Perseus input exports dropped JSON-number answers (4, 0) and published "correct": false answers as correct; every Perseus archive now reads input answers as Perseus renders them.

References

Closes #6208. Refs #6266. Refs #6268. Refs #6232. Supersedes #6255.
Stacked on #6262; merge that first.
Not covered: native text entries answered +3 / 1E3 (#6224, #6259).

Reviewer guidance

  • create_kolibri_assessment_metadata now drops answerless inputs when there is no QTI package, including for unchanged nodes whose archive predates the skip.

AI usage

Used Claude Code to reproduce the bug with a scratch publish test, write the fix and its tests, and draft this description. Verified with the export channel, exercise creation and QTI test suites, and pre-commit.

🤖 Generated with Claude Code


Written by rtibblesbot, an LLM-based coding agent.

@rtibblesbot

🟡 Waiting for feedback

Last updated: 2026-10-08 07:03 UTC

@rtibblesbot

Copy link
Copy Markdown
Contributor Author

Outside this PR's scope — tracked under #5998:


@rtibblesbot's comments are generated by an LLM, and should be evaluated accordingly

How was this generated?
  • Ran pre-flight CI checks (lint, format, tests) and verified all pass
  • Rebased onto the target branch and resolved any conflicts
  • Reorganized commit history into clean, logical commits
  • Audited the diff to ensure only issue-relevant files are changed
  • Built PR body from the repository's PR template with evidence blocks

@rtibbles rtibbles self-assigned this Oct 2, 2026
@rtibblesbot
rtibblesbot force-pushed the issue-6208-c38516 branch 4 times, most recently from c01e128 to 11d98de Compare October 6, 2026 01:38
rtibblesbot and others added 2 commits October 7, 2026 17:40
Exercises only; units keep them, as their pre/post test lists every id.
Assessment metadata drops them too when there is no QTI package.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Restore now rewrites media paths through lxml (learningequality#6241), which changes the
XML declaration and empty-element spelling.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rtibblesbot

Copy link
Copy Markdown
Contributor Author

Outside this PR's scope — tracked in:


Written by rtibblesbot, an LLM-based coding agent.

rtibblesbot and others added 2 commits October 7, 2026 23:47
- JSON-number answers (4, 0, 4.5) were published as answers: []
- Answers marked "correct": false were published as correct

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… input

A legacy input answer Perseus can't read, such as "Sphere" or "1e400",
left the Perseus numeric-input with no answers; such nodes now skip the
Perseus archive.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[QTI] Perseus archive of a mixed exercise keeps legacy input questions with no numeric answer

2 participants