# GAB-104 · MemoryRecallQuestion — « Question de rappel actif »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechMemoryLearning
**Critère validé :** changer le JSON change la question/réponse/libellés sans modifier le HTML. check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-104/
  renderer.html            ← moteur rappel actif (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` · `recall_id` · `question` · `answer`

Optionnels : `title`, `label`, `label_icon`, `think_prompt`, `answer_label`, `reveal_cta`, `self_rating{no,mid,ok}`.

## Ce qui vient du JSON vs HTML
- **JSON** : la question posée à l'apprenant, la réponse à révéler, l'invite de réflexion, le libellé du bouton « Révéler », les libellés des 3 boutons d'auto-évaluation.
- **HTML** : layout de la carte, zone réponse masquée/révélée, cycle reveal/reset, responsive.

## Archétype : rappel actif (retrieval practice)
Ce gabarit implémente la technique du **rappel actif** : l'apprenant est forcé à faire un effort de mémoire *avant* de voir la réponse. Trois niveaux d'auto-évaluation (raté / presque / réussi) permettent un cycle de révision. Aucun scoring automatique — l'honnêteté est celle de l'apprenant.

## Garde-fous (child_safety)
- **Anti-invention** : `question` et `answer` sont extraits de la source. Aucune valeur n'est générée par le renderer.
- **Effort d'abord** : la réponse est masquée par défaut ; elle ne s'affiche qu'après action explicite de l'utilisateur.
- **Cycle reset** : cliquer un bouton d'auto-évaluation réinitialise l'écran (nouveau cycle).
- **BLOCKED** si `question`, `answer` ou `recall_id` absents.

## QA à vérifier
1. Modifier `question` ou `answer` → rendu change sans toucher au HTML (critère d'or).
2. `question` absent → BLOCKED propre.
3. Clic « Révéler » → réponse apparaît, bouton masqué, auto-évaluation visible.
4. Clic bouton auto-évaluation → reset complet du cycle.
5. Responsive 375/768/1024 — boutons empilés sur mobile.

## Source
`INDEX-300-memorylearning-GAB-101-105-PLAYABLE.html` (stage `data-tpl="104"`, handlers `rclReveal` / `rclAgain`, styles `.rcl-*`).
