# GAB-208 · PlayEngineRemediationInsert — « Insert micro-remédiation in-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-208/
  renderer.html            ← moteur insert remédiation (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** surgissant après une erreur fiable détectée IN-SESSION par PlayEngine. Le moteur préserve l'état du module Exercise et garantit le retour à l'étape d'origine.

## Champs requis (instance, à plat)
`gab_id` · `remediation_insert_id` · `title` · `items[]{num,text,mod_type,mod_label}` · `primary_cta{label,action}`

Optionnels : `summary`, `variant`, `variant_note`, `trigger_label`, `trigger_text`, `back_promise`, `skip_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, résumé de durée, libellé et texte du trigger, liste des micro-actions (avec type de module), promesse de retour, libellé des deux CTAs.
- **HTML** : structure bottom_sheet, handle, zones trigger/items/back-promise, boutons structurels, layout responsive.

## Garde-fous
- **BLOCKED** si `title` absent / `items` vides / `primary_cta` absent.
- **items max 3** : remédiation ciblée, pas une session complète.
- **Distinction doctrinaire 208 vs 198** : GAB-208 vit IN-SESSION (PlayEngine garde l'état) — GAB-198 PathMapReviewLoop vit DANS la carte parcours (pas dans une session active).
- **Ne jamais utiliser** pour remédiation longue ou qui casse l'état module.

## QA à vérifier
1. Modifier `title`/`trigger_text`/`items` → rendu change sans toucher au HTML (critère d'or).
2. `items:[]` → BLOCKED propre.
3. `skip_cta` absent → bouton skip masqué, rendu intact.
4. CTA primaire → panel confirmation affiché.
5. Responsive 375/768/1024 — CTAs en colonne sur mobile.

## Dépendances / external_refs
- **GAB-198 PathMapReviewLoop** : alternative quand la remédiation vit dans la carte parcours (pas in-session).
- **PlayEngine session state** : ce gabarit présuppose que le module consommateur (PlayEngine) préserve l'état Exercise entre le déclenchement de l'insert et le retour.

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