# GAB-266 · ComprehensionLearningReformulation — « Décoder une consigne d'exercice »

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

## Pack (structure officielle par-GAB)
```
GAB-266/
  renderer.html            ← moteur reformulation consigne (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 pédagogique
GAB-266 appartient à la vague 2 du module **EdTechComprehensionLearning** (chaîne 266→270).
Son rôle : apprendre à décortiquer une consigne d'exercice selon **3 questions clés** :
- 🎯 **Action** — quel verbe, que dois-je faire ?
- 📊 **Données** — qu'est-ce qui est fourni ?
- 📝 **Format** — quelle forme de réponse est attendue ?

Cas d'usage typique : avant épreuve de type brevet/bac, ou quand l'élève saute sur l'exercice sans lire la consigne.

## Champs requis (instance, à plat)
`gab_id` · `reformulation_id` (slug kebab-case unique) · `instruction_text` (consigne brute) · `action_verb` (extrait de la consigne) · `data_label` (résumé des données) · `format_expected` (format de réponse)

Optionnels : `title`, `subtitle`, `instruction_scope`, `instruction_context_label`, `action_verb_desc`, `data_desc`, `format_desc`, `tip_title`, `tip_text`, `primary_cta{label,action}`, `secondary_cta{label,action}`, `icon`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, texte de la consigne, verbe d'action, données, format attendu, libellé du conseil (tip), libellés des boutons CTA.
- **HTML** : grille 3 cellules (action/données/format), bloc consigne, bloc tip, boutons structurels, layout.

## Garde-fous (child_safety)
- **Anti-invention** : `action_verb` doit être un verbe réellement présent dans `instruction_text`. Ne jamais inventer une consigne.
- **BLOCKED** si `reformulation_id`, `instruction_text`, `action_verb`, `data_label` ou `format_expected` sont absents.
- `instruction_scope` doit appartenir à l'enum `['math_problem','text_question','experiment_protocol','writing_task']` — si inconnu, omettre le champ.

## QA à vérifier
1. Modifier `instruction_text` + `action_verb` → rendu change sans toucher au HTML (critère d'or).
2. `instruction_text` absent → BLOCKED propre avec message.
3. `secondary_cta` omis → bouton secondaire masqué (`display:none`).
4. CTA primaire → feedback panel vert (ok).
5. Responsive 375/768/1024 → grille passe à 1 colonne sous 520px.

## Source
`INDEX-300-comprehensionlearning-GAB-266-270-PLAYABLE.html` (stage `data-tpl="266"`, handlers `idPick`, `idTitle`, `idSub`, `idAct`, `idData`, `idFmt`, `idPrim`).
