# GAB-270 · ComprehensionLearningSummaryCheck — « Résumé condensé multiformats (TLDR) »

**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-270/
  renderer.html            ← moteur résumé TLDR (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
```

## Archétype
Écran de **résumé condensé multi-formats** (TLDR density). Présente le même contenu compressé en 3 niveaux : 1 phrase (~14 mots), paragraphe (~50 mots), flash emojis. L'apprenant choisit sa densité via les chips enum (`multi_3 / one_sentence / paragraph_50w / emoji_flash`). Le mode `multi_3` affiche les 3 formats simultanément avec un bloc « Pourquoi 3 niveaux ».

## Champs requis (instance, à plat)
`gab_id` · `summary_card_id` · `title` · `tldr_one{label,word_count_display,text}` · `tldr_medium{label,word_count_display,text}` · `density_variants[]{key,title,subtitle,primary_cta_label}`

Optionnels : `subtitle`, `icon`, `tldr_density`, `tldr_emoji{label,count_display,text}`, `reason_block{heading,text}`, `primary_cta{label,action}`, `secondary_cta{label,action}`, `fallback_text_summary`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, texte de chaque format (1 phrase / 50 mots / emojis), libellé du bouton primaire, bloc raison, 4 variantes de densité.
- **HTML** : layout grille formats, chips enum, boutons structurels CTA, rendu reason block, slots panel.

## Garde-fous (child_safety)
- **Anti-invention** : aucun texte pédagogique hardcodé dans le HTML. Les exemples (Révolution française) sont dans l'instance JSON, remplaçables sans toucher au moteur.
- **BLOCKED** si `title` absent, `tldr_one` absent, `tldr_medium` absent, `density_variants` vide ou absent, `summary_card_id` absent.
- `reason_block.text` autorise uniquement les balises `<b>` (sanitisation stricte côté moteur).

## QA à vérifier
1. Modifier le contenu de `tldr_one.text` → rendu change sans toucher au HTML (critère d'or).
2. `density_variants:[]` → BLOCKED propre avec message lisible.
3. Clic chip `one_sentence` → affichage format unique, titre + CTA changent.
4. Clic chip `multi_3` → 3 formats + reason_block.
5. Responsive 375/768/1024 — aucun débordement horizontal.

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