# GAB-279 · MethodLearningTransferToNewExercise — « Transférer méthode source → target »

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

## Pack (structure officielle par-GAB)
```
GAB-279/
  renderer.html            ← moteur transfert (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` · `transfer_id` · `method_ref` · `source_task{label,title,body}` · `target_task{label,title,body}` · `transfer_prompts` · `success_criteria`

Optionnels : `title`, `subtitle`, `support_level`, `similarities[]`, `differences[]`, `trap_warnings`, `help_level1`, `why_explicit`, `primary_cta{label,action}`, `secondary_cta{label,action}`, `source_metadata`.

## Ce qui vient du JSON vs HTML
- **JSON** : tâche source, tâche target, liste de similarités, liste de différences, piège de transfert, consigne, aide niveau 1, justification pédagogique, libellés des CTAs.
- **HTML** : grilles compare/diff, bloc pièges, bloc raison, boutons structurels, layout responsive.

## Garde-fous (child_safety)
- **Anti-invention** : les contenus pédagogiques (similarités, différences, pièges) viennent UNIQUEMENT de l'instance — jamais générés par le moteur.
- **BLOCKED** si `transfer_id` / `method_ref` / `source_task` / `target_task` / `transfer_prompts` / `success_criteria` absent.
- **Blocs conditionnels** : `trap_warnings` et `why_explicit` sont masqués (`hidden`) si absents de l'instance.
- **Échappement HTML** : toutes les valeurs textuelles sont échappées avant injection DOM.

## QA à vérifier
1. Modifier `source_task.title` → rendu change sans toucher au HTML (critère d'or).
2. `transfer_id` manquant → BLOCKED propre.
3. `similarities:[]` → colonne ≈ vide, 0 erreur JS.
4. CTA primaire → panel « Transfert : [transfer_prompts] ».
5. CTA secondaire → panel « Aide niveau 1 : [help_level1] ».
6. Responsive 375px : grilles compare + diff passent en 1 colonne.

## Archétype pédagogique
Ce GAB représente le moment de **transfert de méthode** : l'élève a maîtrisé une méthode sur un exercice source, et doit maintenant l'appliquer à un exercice inédit (target). Le rendu rend explicites les similarités, les différences et les pièges pour éviter l'échec de transfert implicite.

**Utiliser quand** : méthode source maîtrisée, target suffisamment proche, preuve d'autonomie attendue.
**Ne pas utiliser quand** : source pas maîtrisée (→ PracticeLoop), écart trop grand entre tâches, domaines complètement différents.

## Source
`INDEX-300-methodlearning-GAB-276-280-PLAYABLE.html` (stage `data-tpl="279"`, handlers `gabReveal`).
