# GAB-393 · DataLearningGraphRead — « Lire un graphique : ventes mensuelles »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechDataLearning
**Critère visé :** changer le JSON change le rendu sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-393/
  renderer.html            ← moteur DataLearningGraphRead (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` · `graph_read_id` · `graph_ref` · `graph_type` · `axis_definitions` · `read_task`

Optionnels : `legend_items`, `unit_notice`, `scale_notice`, `source_notice`, `data_table_fallback`, `fallback_text_summary`.

## Archétype
Lecture guidée d'un graphe : axes d'abord, puis légende, puis sélection d'une valeur. Avertit si l'échelle est tronquée. Repli tableau si le graphe est indisponible.

## BLOCKED si
- graph_read_id absent
- graph_ref absent
- graph_type absent ou hors énum
- axis_definitions absent (x et y requis)
- read_task absent

## Source
Pas de playable hardcodé pour 391-395 (data-sources s'arrêtent à GAB-390). Matière première = **CORE-GAB-REGISTRY GAB-393**. Conversion Core → pack serveur, format identique aux GAB 001-390.
