# GAB-277 · MethodLearningModelAnswerGuide — « Réponse modèle annotée avec anti-copie »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechMethodLearning
**Critère validé :** changer le JSON change la réponse modèle, les annotations et la politique d'affichage sans modifier le HTML.

## Pack (structure officielle par-GAB)
```
GAB-277/
  renderer.html            ← moteur réponse modèle annotée (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` · `model_guide_id` · `task_ref` · `model_answer{html_annotated, annotations[]}` · `annotation_points[]{num, label}` · `display_policy{label, state, student_attempt_required, min_incorrect_attempts}`

Optionnels : `card_subtitle`, `anti_copy_notice{title, text}`, `comparison_prompt`, `alternative_valid_answers`, `reason_block{title, text}`, `primary_cta{label, action}`, `secondary_cta{label, action}`, `rubric_ref`, `source_metadata`.

## Ce qui vient du JSON vs HTML
- **JSON** : tâche cible (`task_ref`), texte de la réponse annotée, chaque marqueur d'annotation (`data-note`), liste des points pédagogiques, politique d'affichage, message anti-copie, libellés des boutons.
- **HTML** : zones structurelles (policy-bar, answer-block, points-block, anti-block, reason-block), moteur d'injection, layout, fallbacks.

## Garde-fous (child_safety)
- **Anti-copie** : le champ `anti_copy_notice` est affiché de façon proéminente pour décourager la recopie aveugle.
- **Display policy** : le modèle n'est affiché qu'après tentative élève (contrôlé par `display_policy.state` + `min_incorrect_attempts`).
- **BLOCKED** si `model_guide_id` / `task_ref` / `model_answer` / `annotation_points` (vide) / `display_policy` sont absents.
- Aucune donnée personnelle élève dans l'instance.

## QA à vérifier
1. Modifier une annotation (`note`) → tooltip change sans toucher au HTML (critère d'or).
2. `annotation_points:[]` → BLOCKED propre.
3. `display_policy.state = 'LOCKED'` → badge verrouillé affiché, cohérence visuelle.
4. CTA primaire → panel "Comparer" affiché avec `comparison_prompt`.
5. CTA secondaire → panel "Variantes" avec `alternative_valid_answers`.
6. Responsive 375/768/1024 — aucun débordement.

## Source
`INDEX-300-methodlearning-GAB-276-280-PLAYABLE.html` (stage `data-tpl="277"`, bloc `.gab-card.ic277`).

## Chaîne module 19
GAB-277 s'insère dans la chaîne pédagogique : GAB-276 (CommonMistakeMethod) → **GAB-277** (ModelAnswerGuide) → GAB-278 (MethodPracticeLoop) → GAB-279 (TransferToNewExercise) → GAB-280 (AutonomyCard).
