# GAB-206 · PlayEngineSessionResumeComposite — « Reprendre ta session ? »

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

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

## Archétype
Bottom_sheet de reprise d'une session composite multi-modules interrompue.
Apparaît au retour utilisateur sur une session commencée. Affiche : titre/sous-titre, résumé de progression, barre de progression, dernière étape atteinte, note de version, 3 CTA (reprendre / recommencer / plus tard).

## Champs requis (instance, à plat)
`gab_id` · `session_resume_id` · `title` · `summary` · `progress{current_step,total_steps,percent,label}` · `primary_cta{label,action,confirm_msg}`

## Champs optionnels
`subtitle` · `variant` · `variant_note` · `session_name` · `last_step{icon,label,text,module_chip}` · `version_note{icon,text}` · `secondary_cta{label,action,confirm_msg}` · `tertiary_cta{label,action,note_msg}`

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, résumé, nom de session, progression (current/total/percent), dernière étape, note de version, libellés et messages des 3 CTA.
- **HTML** : layout bottom_sheet, barre de progression (largeur CSS via %, injectée), structure des blocs, gestion des panels de feedback.

## Garde-fous
- **BLOCKED** si `session_resume_id`, `title`, `summary`, `progress` ou `primary_cta` absent.
- Ce GAB ne s'affiche que si la session est vraiment commencée ET que l'état serveur est fiable (version session validée).
- Si version incompatible côté serveur → PlayEngine route vers VersionMismatch, pas vers ce GAB.
- Pour une reprise session simple (non composite) → GAB-006 (SessionResumePrompt).

## Conditions d'usage
- **use_when** : session composite vraiment commencée · état multi-modules fiable côté serveur · version session validée.
- **do_not_use_when** : SessionResumePrompt simple (→ GAB-006) · aucun state fiable · version incompatible (→ VersionMismatch).

## QA à vérifier
1. Modifier `progress.percent` → barre CSS change sans toucher au HTML (critère d'or).
2. `progress` absent → BLOCKED propre.
3. `primary_cta` absent → BLOCKED propre.
4. Clic CTA primary → `confirm_msg` affiché.
5. Clic CTA tertiary → `note_msg` affiché.
6. Instance externe injectée via `ENGINE.init(ext)` → rendu change sans modifier le HTML.
7. Responsive 375/768/1024 — bottom_sheet sans débordement.

## external_refs / dependencies
- **GAB-006** (SessionResumePrompt) : gabarit simplifié pour reprise session non composite — à utiliser si la session n'est pas multi-modules.
- **VersionMismatch** (non numéroté dans ce lot) : gabarit de fallback si la version session est incompatible serveur.

## Source
`INDEX-300-playengine-composite-GAB-206-210-PLAYABLE.html` (stage `data-tpl="206"`, handlers `peConfirm`/`peNote`).
