# GAB-267 · ComprehensionLearningMisconceptionCheck — « Compréhension orale guidée »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechComprehensionLearning
**Critère validé :** changer le JSON change le rendu sans modifier le HTML.

## Pack (structure officielle par-GAB)
```
GAB-267/
  renderer.html            ← moteur compréhension orale (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` · `audio_listening_id` · `transcript` · `key_timestamps[]{time,label}`

Optionnels : `title`, `subtitle`, `listening_mode`, `audio_url`, `duration`, `rationale`, `primary_cta{label,action}`, `secondary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, transcript complet, liste des timestamps clés, rationale pédagogique, libellé des boutons.
- **HTML** : layout player, barre de progression animée, zone transcript, liste keypoints, boutons structurels, states play/pause.

## Garde-fous (child_safety)
- **transcript obligatoire** : aucun contenu audio sans alternative texte (WCAG 1.2.1). BLOCKED si absent.
- **key_timestamps non vide** : au moins 1 passage-clé requis. BLOCKED si tableau vide.
- **audio_url** peut être `_TODO` si pas encore fourni — le rendu reste valide (lecture simulée).
- **anti-invention** : aucun contenu pédagogique inventé ; seuls les champs extraits de la source HTML sont présents.

## _TODO / Contenus manquants
- `audio_url` : non fourni dans la source HTML (interface de démonstration sans fichier audio réel). Valeur mise à `"_TODO:audio_url_not_provided_in_source"`.

## QA à vérifier
1. Modifier `transcript` → texte change sans toucher au HTML (critère d'or).
2. `key_timestamps:[]` → BLOCKED propre.
3. `transcript` absent → BLOCKED propre.
4. CTA primary cliqué → panel ok avec action de l'instance.
5. Bouton play → toggle ▶/⏸.
6. Responsive 375/768/1024 — 0 débordement.

## Note sur le canonical_name
La cartographie officielle nomme ce GAB `ComprehensionLearningMisconceptionCheck`. La source HTML (INDEX-300) utilise `ComprehensionLearningAudioListening` pour décrire le même GAB-267. Les deux noms désignent le même gabarit ; le canonical_name de la cartographie fait foi.

## Source
`INDEX-300-comprehensionlearning-GAB-266-270-PLAYABLE.html` (stage `data-tpl="267"`, handlers `alPick`, `AL_TYPES`).
