# GAB-304 · DocumentLearningExtractInformation — « Extraire l'info utile »

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

## Pack (structure officielle par-GAB)
```
GAB-304/
  renderer.html            ← moteur extraction (ne pas modifier par instance)
  instance.example.json    ← SOURCE DE VÉRITÉ (à plat)
  schema.contract.json     ← contrat de validation
  README-contract.md       ← ce fichier
```

## Champs requis (instance, à plat)
`gab_id` · `target_question` · `items[]{label,useful,why}` (info utile vs inutile)
Optionnels : `info_type`, `evidence_zone`, `instruction`, `success_feedback`.

## Ce qui vient du JSON vs HTML
- **JSON** : la question cible, les items (utiles / leurres) + leur `why`, les feedbacks.
- **HTML** : chips cliquables, zone de question, layout, fallback.

## Garde-fous
- **Rejet des données inutiles** : un item `useful:false` est une donnée hors-sujet pour CETTE question (ex : couleur du sceau) — l'élève apprend à ne PAS l'extraire.
- **Anti-invention** : items et feedbacks viennent de l'écran source.
- **BLOCKED** si `target_question` absente / `items` vide / aucun item `useful:true`.

## QA à vérifier
1. Modifier un item → rendu change sans toucher au HTML. 2. `items:[]` → BLOCKED. 3. Clic item inutile → feedback « donnée inutile pour cette question ». 4. Responsive 375/768/1024.

## Source
`INDEX-300-documentlearning-GAB-301-305-PLAYABLE.html` (stage `data-tpl="304"`, handler `d304Pick`).
