# GAB-255 · CollaborationLearningGroupReflection — « Synthèse collective de fin d'activité »

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

## Pack (structure officielle par-GAB)
```
GAB-255/
  renderer.html            ← moteur synthèse collective (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 pédagogique
GAB-255 est le **5e et dernier maillon** de la chaîne CollaborationLearning :
```
GAB-251 CollabIntro → GAB-252 PairTask → GAB-253 SharedAnswer → GAB-254 PeerFeedback → GAB-255 GroupReflection
```
Il ferme le cycle collaboratif par une **synthèse collective metacognitive-lite** : 3 zones fixes (got / watch / next) + next_action vers SmartSelect ou PathMap.

## Champs requis (instance, à plat)
`gab_id` · `group_reflection_id` · `title` · `summary` · `items[]{zone,emoji,label,body}`

Optionnels : `reflection_type` · `reflection_type_enum` · `next_action` · `next_action_label` · `primary_cta{label,action}` · `metacognitive_note` · `accessibility` · `child_safety`

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, 3 items (zone+emoji+label+body), route next_action, libellé CTA, note metacognitive.
- **HTML** : structure 3 zones (got/watch/next), couleurs par zone (sky/gold/violet), bouton CTA, layout, fallback BLOCKED.

## Zones des items
| zone | couleur | sens pédagogique |
|---|---|---|
| `got` | sky (bleu) | Ce qu'on a compris |
| `watch` | gold (or) | Ce qu'on doit surveiller |
| `next` | violet | La suite / prochaine action |

## Enum reflection_type (5 valeurs)
`what_we_learned` · `what_to_review` · `what_worked_together` · `oral_debrief` · `parent_child_summary`

## Garde-fous (child_safety)
- **max_items : 3** — la synthèse doit rester courte (règle pédagogique de la source).
- **no_user_generated_content : true** — les items sont produits par l'instance (contenu auteur), pas par l'élève directement.
- **moderation_required : false** — pas de saisie libre élève dans ce gabarit.
- **BLOCKED** si `group_reflection_id` / `title` / `summary` / `items` absents ou vides.

## next_action
Route vers SmartSelect ou PathMap (ex : `exercise/brevet-3e/pythagore-type-brevet`). Si absent → bloc masqué. Jamais une URL absolue en dur dans le HTML.

## QA à vérifier
1. Modifier `title`/`summary`/`items[].body` → rendu change sans toucher au HTML (critère d'or).
2. `items:[]` → BLOCKED propre.
3. `group_reflection_id` absent → BLOCKED propre.
4. `next_action` présent → bloc next_action visible.
5. `next_action` absent → bloc next_action masqué (`hidden`).
6. Responsive 375/768/1024 — items en colonne sur mobile.
7. CTA → panel confirmation `✅ Activité terminée`.

## Source
`INDEX-300-collaborationlearning-GAB-251-255-PLAYABLE.html` (stage `data-tpl="255"`, handlers `grPick`, `GR_TYPES`, section `<!-- ═══════════ GAB-255 GROUPREFLECTION ═══════════ -->`).
