# GAB-113 · MemoryHintReveal — « Indice progressif »

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

## Pack (structure officielle par-GAB)
```
GAB-113/
  renderer.html            ← moteur indice progressif (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` · `hint_card_id` · `question` · `hints[]{index,text}` · `answer`

Optionnels : `cta_hint_label`, `cta_next_hint_label`, `cta_reveal_label`.

## Ce qui vient du JSON vs HTML
- **JSON** : texte de la question, chaque indice (index + texte), la réponse finale, les libellés des boutons CTA.
- **HTML** : layout de la carte, rendu progressif des blocs indice/réponse, bouton structurel, animation, fallback BLOCKED.

## Archétype
Gabarit `text_cta` : affichage textuel progressif déclenché par CTA. L'élève révèle les indices un par un avant la réponse. Réduit la frustration sans donner la réponse immédiatement. Utiliser quand il existe au moins 1 indice pertinent ; préférer GAB-101 si on veut révéler directement, GAB-104 si pas d'aide.

## Garde-fous (child_safety)
- **BLOCKED** si `hints` absent/vide, `question` absente, `answer` absente.
- Les indices sont triés par `index` ascendant côté moteur (ordre garanti indépendamment de l'ordre dans le JSON).
- Contenu de l'instance extrait STRICTEMENT du HTML source — aucun contenu inventé.

## QA à vérifier
1. Modifier `question`/`hints`/`answer` → rendu change sans toucher au HTML (critère d'or).
2. `hints:[]` → BLOCKED propre.
3. Clic 1 → indice 1 affiché, libellé CTA change.
4. Clic final → réponse affichée, bouton masqué.
5. Instance externe injectée via `ENGINE.init(ext)` → rendu change dynamiquement.
6. Responsive 375/768/1024 — aucun débordement.

## Source
`INDEX-300-memorylearning-GAB-111-115-PLAYABLE.html` (stage `data-tpl="113"`, handler `hntNext()`).
