# GAB-136 · InteractiveManipulationIntro — « Intro de manipulation »

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

## Pack (structure officielle par-GAB)
```
GAB-136/
  renderer.html            ← moteur intro de manipulation (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` · `intro_id` · `objective` · `rules[]{n,text}` · `primary_cta{label,action}`
Optionnels : `title`, `badge_label`, `result_promise`.

## Ce qui vient du JSON vs HTML
- **JSON** : badge label, objectif pédagogique, liste des règles numérotées, promesse « tu sauras à la fin », libellé du bouton CTA.
- **HTML** : layout carte, numéros de règles (cercles), barre décorative, bouton structurel, bloc résultat, fallback BLOCKED.

## Garde-fous
- **BLOCKED** si `intro_id`, `objective`, `rules` ou `primary_cta` absent.
- `rules` doit contenir au moins 1 élément — tableau vide = BLOCKED.
- `result_promise` optionnel : si absent, le bloc résultat est masqué sans erreur.
- Aucun contenu pédagogique en dur dans le HTML.

## QA à vérifier
1. Modifier `objective` → le titre de la carte change sans toucher au HTML (critère d'or).
2. `rules:[]` → BLOCKED propre.
3. `primary_cta.label` modifié → libellé du bouton change.
4. `result_promise` absent → bloc résultat invisible, pas d'erreur JS.
5. Instance externe injectée via `ENGINE.init(ext)` → rendu change.
6. Responsive 375/768/1024 : aucun débordement horizontal.

## Source
`INDEX-300-interactivelearning-GAB-136-140-PLAYABLE.html` (stage `data-tpl="136"`, handler `peConfirm`).

## Archétype
GAB-136 est une **intro de manipulation** : elle prépare l'élève avant une activité kinésique (déplacement, drag-explore). Elle pose objectif + règles + promesse pédagogique + CTA de lancement. Elle NE contient PAS l'activité elle-même (→ GAB-137 pour drag-explore).

## Références externes (hors-lot)
- `use_when` → intro avant manipulation ou tutoriel court.
- `do_not_use_when` : intro aventure narrative (→ GAB-045), intro session moteur (→ ENG-002), tuto jeu pur (→ Game).
