# GAB-314 · RevisionLearningMistakeReview — « Revue d'erreurs (sans juger) »

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

## Pack (structure officielle par-GAB)
```
GAB-314/
  renderer.html            ← moteur revue d'erreurs (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
```

## Archétype pédagogique
Revue d'erreurs **sans jugement** : affiche une liste d'erreurs classées par **typologie** avec leur **fréquence**, permet de cliquer sur chaque erreur pour afficher la **remédiation**, puis un CTA de **preuve de retour** (l'élève confirme avoir refait l'exercice). Principe fondamental : on commente la **réponse**, jamais l'**élève**.

## Champs requis (instance, à plat)
`gab_id` · `review_id` · `errors[]{error_id, typology, frequency, remediation}` · `cta_label` · `cta_action`

Optionnels : `intro_hint` · `errors[].frequency_color` · `proof_of_return_message` · `remediation_panel_prefix` · `error_source`

## Ce qui vient du JSON vs HTML
- **JSON** : chaque erreur (typology, frequency, frequency_color, remediation), le texte introductif, le libellé du bouton CTA, le message de preuve de retour.
- **HTML** : layout liste, fréquence visuelle (box colorée), panel remédiation, bouton structurel, logique de sélection et de désactivation post-CTA.

## Garde-fous (child_safety)
- **Anti-jugement** : les champs `typology` et `remediation` portent sur la réponse, jamais sur l'élève. Le moteur ne préjuge pas du niveau de l'élève.
- **BLOCKED** si `errors` vide / `review_id` absent / `cta_label` absent / `cta_action` absent.
- Le bouton CTA est désactivé après le premier clic (preuve de retour = 1 seule confirmation).

## QA à vérifier
1. Modifier `typology`/`remediation` → rendu change sans toucher au HTML (critère d'or).
2. `errors:[]` → BLOCKED propre.
3. Clic erreur → panel remédiation affiché.
4. Clic CTA → `proof_of_return_message` affiché, bouton désactivé.
5. Responsive 375/768/1024.

## _TODO / contenus manquants
- `error_source` : la référence à l'exercice d'origine n'est pas fournie dans le HTML source (`data-tpl="314"`). Le slot est présent dans le schema mais marqué `_TODO` dans l'instance.

## external_refs / dependencies
- **GAB-315** (RevisionLearningQuickQuiz) : cité dans la zone `do_not_use_when` de GAB-314 comme alternative pour quiz rapide chronométré.
- Source : `INDEX-300-revisionlearning-GAB-311-315-PLAYABLE.html` (stage `data-tpl="314"`, handlers `d314Pick`, `d314Fix`).
