# GAB-330 · ResearchLearningResearchEmptyState — « Recherche sans résultat »

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

## Pack (structure officielle par-GAB)
```
GAB-330/
  renderer.html            ← moteur état vide de recherche (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` · `empty_state_id` · `title` · `actions[]{id,label,kind,feedback,state_label}`

Optionnels : `icon`, `body`, `prompt_label`, `no_invented_sources_notice`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre de l'état vide, icône, corps descriptif, libellé de la question, liste des actions avec feedback par action, notice anti-invention, résumé fallback.
- **HTML** : layout, carte vide, chips d'action, panneau feedback, slots de contrat — structure fixe.

## Archétype
GAB-330 est un **état vide pédagogique** (empty state) déclenché quand une recherche documentaire ne renvoie aucun résultat. Il ne punit pas l'élève ; il diagnostique et propose 3 pistes : reformuler, trouver une source alternative, demander de l'aide. Le gabarit garantit qu'aucune source n'est inventée.

## Garde-fous (child_safety)
- **Anti-hallucination** : `no_invented_sources_notice` affiché dès le chargement — rappel visible que jamais une référence n'est inventée.
- **Feedbacks contrôlés** : chaque texte de feedback vient du JSON, révisable sans rebuild.
- **BLOCKED** si `title` absent / `actions` vides / `empty_state_id` absent.
- `kind:'help'` déclenche un style visuel distinct (vert/mint) pour différencier l'aide humaine des actions autonomes.

## QA à vérifier
1. Modifier `title` / `body` / `actions[].feedback` → rendu change sans toucher au HTML (critère d'or).
2. `actions:[]` → BLOCKED propre.
3. Clic chip `kind:'primary'` → panneau vert (ok).
4. Clic chip `kind:'help'` → panneau gris/note (aide humaine).
5. Notice `no_invented_sources_notice` visible dès le chargement.
6. Responsive 375/768/1024.

## external_refs / dependencies
- GAB-324 (ResearchLearning — résultats présents) : à utiliser quand des résultats existent (référence dans le `do_not_use_when` de GAB-330 source).
- GAB-325 (fiabilité simple) : mentionné dans la navigation du module lot GAB-326-330.
- Ketty (mascotte IA) : mentionnée dans l'action `help` comme interlocutrice alternative au prof.

## Source
`INDEX-300-researchlearning-GAB-326-330-PLAYABLE.html` (stage `data-tpl="330"`, handlers `d330Act`, `d330Help`).
