# GAB-254 · CollaborationLearningPeerFeedback — « Retour d'un pair sur un travail »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechCollaborationLearning
**Critère validé :** changer le JSON change le titre/sous-titre/items/cta sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-254/
  renderer.html            ← moteur peer feedback (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` · `peer_feedback_id` · `title` · `subtitle` · `peer_feedback_type` · `items[]{type,icon,label,hint,placeholder_text}` · `primary_cta`

Optionnels : `peer_feedback_type_enum`, `peer_feedback_variants`, `secondary_cta`, `safety{header,body}`, `accessibility`, `child_safety`.

## Archétype
**Feedback guidé entre pairs** — structure 2 étoiles + 1 souhait (two_stars_one_wish), avec enum strict de 5 variantes. Chaque variante dispose de son titre, sous-titre et libellé de CTA propres dans `peer_feedback_variants`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, liste des items (icône, label, hint, placeholder), libellé des CTAs, enum des variantes, bloc safety.
- **HTML** : structure de carte, coloration des rows star/wish, layout, moteur de switch variante.

## Garde-fous (child_safety — V1_X)
- **Bloc safety non-négociable** : `safety.body` contient le cadre de modération auto — ne pas supprimer.
- **Scope parole** : on parle du travail, jamais de la personne — règle inscrite dans `child_safety.scope`.
- **BLOCKED** si `items` vide / `peer_feedback_type` absent / `title` absent.
- **V1_X** : ce GAB expose un mécanisme de feedback entre élèves — la modération doit être active côté serveur avant toute publication.

## QA à vérifier
1. Instance conforme `two_stars_one_wish` → 3 items (2 étoiles + 1 souhait), 0 erreur.
2. Clic enum chip `oral_feedback` → titre/sous-titre/cta mis à jour depuis `peer_feedback_variants`.
3. `items:[]` → BLOCKED propre.
4. CTA primaire → panel de confirmation.
5. Bloc safety visible, non modifiable par l'instance.
6. Responsive 375/768/1024.

## Source
`INDEX-300-collaborationlearning-GAB-251-255-PLAYABLE.html` (stage `data-tpl="254"`, handlers `pfPick`, `PF_TYPES`).
