# GAB-182 · LevelTestQuickRetake — « Reprise rapide ciblée »

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

## Pack (structure officielle par-GAB)
```
GAB-182/
  renderer.html            ← moteur reprise rapide (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

GAB-182 est la **carte de reprise rapide ciblée** du module EdTechLevelTest. Elle intervient après une session de remédiation sur une notion précise : l'élève a travaillé un point (fiche méthode, exercices guidés, flashcards), et ce gabarit lui propose un mini-test de vérification (3–5 min, quelques questions) pour confirmer l'ancrage.

**Doctrine LevelTest maintenue :** diagnostic INTERNE, pas de jugement, focus sur une seule notion à la fois.

## Champs requis (instance, à plat)
`gab_id` · `retake_id` · `focus_notion` · `stats[]{value,label}` · `prep_items[]` · `primary_cta{label,action}`

Optionnels : `banner_icon`, `banner_title`, `banner_subtitle`, `focus_description`, `prep_title`, `_note_dev`.

## Ce qui vient du JSON vs HTML

- **JSON** : icône et textes de la bannière, nom de la notion, description contexte, valeurs des 3 stats, liste de préparation, libellé et action du CTA.
- **HTML** : structure de la carte (bannière, bloc focus, grille stats, bloc prep, bouton CTA), couleurs DS V2, responsive.

## Garde-fous (child_safety)

- **BLOCKED** si `focus_notion` absent, `stats` vide, `prep_items` vide, ou `primary_cta.label` absent.
- Le moteur cache la carte et affiche un panel d'erreur rouge en cas de données non conformes.
- Aucun contenu pédagogique n'est inventé : les libellés viennent exclusivement de l'instance JSON.

## External refs / dependencies

| Référence | GAB | Note |
|---|---|---|
| Test complet (non ciblé) | GAB-176 | Alternative si reprise globale souhaitée |
| Remédiation post-erreur | GAB-131 | Précède généralement GAB-182 |
| Revanche mini-jeu | GAB-164 | Format jeu, pas diagnostic |
| Carte des fragilités | GAB-181 | Peut pointer vers GAB-182 par notion |

## QA à vérifier
1. Modifier `focus_notion` ou un `prep_items[]` → rendu change sans toucher au HTML.
2. `focus_notion` absent → BLOCKED propre, carte masquée.
3. `stats:[]` vide → BLOCKED stats vides.
4. CTA cliqué → panel confirmation avec `primary_cta.action`.
5. Injection externe via `GAB182_ENGINE.init(monInstance)` → rendu change.
6. Responsive 375/768 : grille stats passe en 2 colonnes sur mobile étroit.

## Source
`INDEX-300-leveltest-GAB-181-185-PLAYABLE.html` (stage `data-tpl="182"`, CSS `.qr-*`).
