# GAB-316 · RevisionLearningFlashReview — « Révision flash »

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

## Pack (structure officielle par-GAB)
```
GAB-316/
  renderer.html            ← moteur flash review (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` · `flash_review_id` · `flash_item` · `essential` · `confidence_labels[]`

Optionnels : `detail`, `cta_reveal_label`, `cta_dont_know_label`, `exit_unknown_message`, `confidence_feedback`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : la question (`flash_item`), la réponse essentielle (`essential`), l'explication complémentaire (`detail`), les libellés de confiance (`confidence_labels`), les textes des boutons, le message de sortie si l'élève ne sait pas, le feedback de confiance.
- **HTML** : flux reveal / dontKnow / confidence, layout card, boutons structurels, panels (warn/ok/note), slots display.

## Flux utilisateur
1. L'élève voit la question (`flash_item`) avec deux boutons.
2. **Révéler l'essentiel** → affiche `essential` + panel note `detail` + boutons de confiance (`confidence_labels`).
3. **Je ne sais pas** → panel warn `exit_unknown_message` — sortie propre du flash.
4. Sélection d'un niveau de confiance → panel ok `confidence_feedback` + boutons désactivés.

## Garde-fous (child_safety)
- **Anti-invention** : `flash_item` et `essential` extraits de la source HTML uniquement (INDEX-300 GAB-316).
- **Sortie propre** : si l'élève ne sait pas, le message oriente vers une explication, sans culpabiliser.
- **BLOCKED** si `flash_item` / `essential` / `confidence_labels` absents ou vides.
- **Confiance = signal**, jamais une note officielle.

## QA à vérifier
1. Modifier `flash_item` / `essential` → rendu change sans toucher au HTML.
2. `confidence_labels:[]` → BLOCKED propre.
3. Clic « Je ne sais pas » → panel warn avec `exit_unknown_message`.
4. Clic « Révéler » → `essential` visible + panel `detail` + boutons confiance.
5. Sélection confiance → panel ok + tous boutons désactivés.
6. Responsive 375/768/1024.

## Source
`INDEX-300-revisionlearning-GAB-316-320-PLAYABLE.html` (stage `data-tpl="316"`, handlers `d316Show`, `d316Dont`, `d316Conf`).
