# GAB-273 · MethodLearningAnswerStructure — « Structure de réponse attendue »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechMethodLearning
**Critère validé :** changer le JSON change les slots, critères et patterns sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-273/
  renderer.html            ← moteur structure de réponse (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` · `structure_id` · `task_type` · `answer_slots[]{slot_index,slot_type,label,content,starter?}` · `ordering_rules` · `success_criteria[]`

Optionnels : `title`, `subtitle`, `sentence_starters[]`, `forbidden_patterns[]`, `primary_cta{label,action}`, `secondary_cta{label,action}`, `example_full`, `why_rationale`, `rubric_ref`, `word_count_guidance`, `source_metadata`.

## Ce qui vient du JSON vs HTML
- **JSON** : chaque slot (label, type, contenu, starter), les critères, les patterns interdits, le rationale pédagogique, le **libellé** des boutons, l'exemple complet.
- **HTML** : layout zones (template/critères/forbidden/why), structure du textarea, slot color-coding par type (intro=sky/body=violet/conclusion=mint), fallback BLOCKED.

## Archétype
GAB-273 est le 3e maillon de la chaîne MethodLearning (271 Intro → 272 StepByStep → **273 Structure** → 274 Justification → 275 ExamChecklist). Il porte la **couche structuration de production écrite** : slots ordonnés, critères mesurables, patterns à bloquer (anti-réponse vide, anti-calcul sans annonce).

## Garde-fous
- **Anti-réponse vide** : `forbidden_patterns` listés et affichés visuellement avec ✕ ; le moteur bloque si `success_criteria` est vide.
- **Ordre des slots imposé** : le renderer affiche les slots dans l'ordre du tableau `answer_slots`, sans réordonnancement.
- **BLOCKED** si `structure_id` absent / `task_type` absent / `answer_slots` vides / `ordering_rules` absent / `success_criteria` vides.
- **Sentence starters** : débloquent la rédaction — affichés en italique sous chaque slot via le champ `starter`.

## QA à vérifier
1. Modifier un `content`/`starter` de slot → rendu change sans toucher au HTML (critère d'or).
2. `answer_slots:[]` → BLOCKED propre.
3. `success_criteria:[]` → BLOCKED propre.
4. CTA primaire → textarea + bouton Rendre s'affichent.
5. CTA secondaire → `example_full` affiché.
6. Responsive 375/768/1024.

## Source
`INDEX-300-methodlearning-GAB-271-275-PLAYABLE.html` (stage `data-tpl="273"`, section `<!-- ═══════════ GAB-273 ANSWERSTRUCTURE ═══════════ -->`).
