# GAB-021 · SessionRecapChecklist — « Récap de fin + action suivante »

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

## Pack (structure officielle par-GAB)
```
GAB-021/
  renderer.html            ← moteur récap fin de session (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` · `recap_id` · `title` · `key_points[]` · `primary_cta{label,action}`
Optionnels : `icon`, `summary`, `secondary_cta`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre affiché, emoji trophée, chaque point clé, libellé du bouton CTA, message de confirmation au clic.
- **HTML** : carte gold, trophée animé (trophy-bob), animation staggered des items, bouton structurel, layout, panel feedback.

## Garde-fous (child_safety)
- **Anti-invention** : aucun contenu pédagogique hardcodé. Titre, points clés et CTA viennent tous du JSON.
- **BLOCKED** si `key_points` vide / `title` absent / `primary_cta` absent / `recap_id` absent.
- **Animation** : respecte `prefers-reduced-motion`.
- **0 contenu en dur** dans le HTML — vérifiable en lisant `renderer.html`.

## QA à vérifier
1. Modifier un item de `key_points` → il s'affiche sans toucher au HTML (critère d'or).
2. `key_points:[]` → BLOCKED propre.
3. `primary_cta` absent → BLOCKED propre.
4. Clic CTA → `confirm_message` affiché sous le bouton.
5. Responsive 375/768/1024.
6. Injection externe `ENGINE.init({...})` → rendu change.

## use_when / do_not_use
- **use_when** : fin de session pour résumer les acquis, orienter vers l'action suivante, ancrer ce qui vient d'être appris.
- **do_not_use_when** : célébration pure (→ GAB-022), demander un avis (→ GAB-023), en cours de session (→ ENG-004).

## Source
`INDEX-300-playkit-GAB-021-025-PLAYABLE.html` (stage `data-tpl="21"`, bloc `<!-- GAB-021 -->`, handler `peConfirm`).

## external_refs / dependencies
- **GAB-022** (RewardVisualCelebration) : célébration visuelle pure — à utiliser à la place si l'objectif est émotionnel, pas pédagogique.
- **GAB-023** (FeedbackStarsPrompt) : collecte d'avis étoiles — différent du récap.
- **ENG-004** : récap en cours de session (hors périmètre PlayKit).
