Skip to content

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

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 #6'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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions