# GAB-131 · ExerciseAdaptiveRemediation — « Remédiation adaptative »

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

## Pack (structure officielle par-GAB)
```
GAB-131/
  renderer.html            ← moteur remédiation adaptative (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
Écran de **remédiation adaptative** : affiché après détection d'erreurs récurrentes sur un même point. Présente un diagnostic textuel + 3 chemins ciblés (fiche de révision, mini-série d'exercices, retour narratif). L'élève choisit son chemin, un feedback confirme la sélection.

## Champs requis (instance, à plat)
`gab_id` · `remediation_id` · `title` · `diagnostic_text` · `paths[]{id,icon,label,tag,description,recommended,feedback_msg}` · `primary_cta{label,action}`

Optionnels : `diagnostic_label`, `use_when`, `do_not_use_when`.

## Ce qui vient du JSON vs HTML
- **JSON** : texte du diagnostic, libellé de chaque chemin, icône, description, tag "conseillé", feedback au clic, libellé du bouton CTA.
- **HTML** : layout carte, 3 slots de chemin, feedback panel, slots panel — aucun contenu pédagogique.

## Garde-fous (child_safety)
- **Anti-invention** : `diagnostic_text` extrait tel quel de la source ; ne jamais inventer un type d'erreur.
- **BLOCKED** si `paths` vide/absent, `diagnostic_text` absent ou `remediation_id` absent.
- Au plus 1 chemin `recommended:true` — signal visuel unique, pas de surcharge.
- `paths.id` : valeurs reconnues `refresh` / `practice` / `story` pour la couleur ; autre valeur → fallback `refresh`.

## QA à vérifier
1. Modifier `diagnostic_text` / `paths[x].label` → rendu change sans toucher au HTML (critère d'or).
2. `paths:[]` → BLOCKED propre.
3. `diagnostic_text` absent → BLOCKED propre.
4. Clic chemin → `feedback_msg` affiché + surbrillance mint.
5. `recommended:true` → fond violet-soft + bordure violette visible.
6. Responsive 375/768/1024 : aucun débordement horizontal.

## external_refs / dependencies
- **GAB-068** : RecommendationCard (recommandation générique — ne pas utiliser si erreur typée détectée).
- **GAB-130** : ExerciseRetry (retry simple sans adaptation — à préférer si erreur isolée).
- Aucun asset externe requis (pas d'image, pas d'audio).

## Source
`INDEX-300-exerciselearning-GAB-131-135-PLAYABLE.html` (stage `data-tpl="131"`, handler `adpPick()`).
