Skip to content

[QTI] Backfill all non-raw AssessmentItems to QTI items #6007

Open

Description

@rtibbles

❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.

Overview

Run the one-time global backfill converting every legacy AssessmentItem to type='QTI' + raw_data XML via #6003's conversion, then remove the API-layer dual-read.

Complexity: Medium
Target branch: unstable

Context

The Change

Acceptance Criteria

  • After the backfill, every legacy row is type='QTI' with raw_data XML; only perseus_question rows remain unconverted
  • Rows that fail conversion are surfaced, not silently dropped
  • The backfill is resumable and safe to re-run
  • With the backfill complete, the API serves QTI directly without the dual-read
  • Tests cover the backfill over a mixed fixture

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.

Activity

  1. added theissue type on Jun 28, 2026
  2. 3 remaining items

  3. AlexVelezLl commented on Sep 15, 2026

    @AlexVelezLl
    Member

    Note that we should make sure that the result of this migration is compatible with the publish workflow, if not, items may be migrated, they may potentially not be editable by the qti editor to fix something missing, and on top of that, they may break the publish task.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions