# GAB-124 · ExerciseOrdering — « Remise en ordre »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechExerciseLearning
**Critère validé :** changer le JSON change l'exercice sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-124/
  renderer.html            ← moteur remise en ordre (ne pas modifier par instance)
  instance.example.json    ← SOURCE DE VÉRITÉ (contenu réel, à plat)
  schema.contract.json     ← contrat de validation
  README-contract.md       ← ce fichier
```

## Champs requis (instance, à plat)
`gab_id` · `ordering_id` · `question` · `items[]{id,text,correct_position}`

Optionnels : `title`, `instruction`, `submit_label`, `feedback_correct`, `feedback_incorrect`, `accessibility`, `child_safety`.

## Ce qui vient du JSON vs HTML
- **JSON** : question, instruction, chaque item (texte + position correcte), libellé du bouton, feedbacks correct/incorrect.
- **HTML** : liste ordonnée, flèches ▲/▼, moteur de validation, layout, fallback BLOCKED.

## Archétype pédagogique
L'élève voit N items présentés dans un ordre MÉLANGÉ (shuffle à l'init). Il les réordonne avec les flèches ▲/▼ jusqu'à satisfaire l'ordre `correct_position`. La validation colorie en vert les items bien placés, en rouge les autres. Deux feedbacks textuels (correct/incorrect) viennent du JSON.

## Garde-fous (child_safety)
- **Shuffle à l'init** : les items ne sont JAMAIS affichés dans l'ordre correct au départ.
- **BLOCKED** si `items` absent, vide ou < 2 entrées / `question` absente / `ordering_id` absent.
- **Anti-invention** : aucun texte pédagogique en dur dans le HTML.

## QA à vérifier
1. Modifier `question` / `items[].text` → rendu change sans toucher au HTML.
2. `items:[]` → BLOCKED propre.
3. Valider ordre correct → feedback_correct + items verts.
4. Valider ordre incorrect → feedback_incorrect + items rouges sur les mauvaises positions.
5. Injection `ENGINE.init(extInstance)` → rendu change.
6. Responsive 375/768/1024.

## Références externes / dependencies
Aucune dépendance hors-lot. Pas de référence à d'autres GABs dans le code.

### use_when (depuis source)
- Remettre dans le bon ordre (NOTÉ)
- Chronologie, étapes, raisonnement
- Validation finale + correction

### do_not_use_when (depuis source)
- Ordering Memory non noté → GAB-107
- Frise à consulter → GAB-078
- Tri en catégories → GAB-122

## Source
`INDEX-300-exerciselearning-GAB-121-125-PLAYABLE.html` (stage `data-tpl="124"`, handlers `ordMove`, `ordCheck`).
