# GAB-256 · CollaborationLearningParentChildRevision — « Révision parent-enfant à la maison »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechCollaborationLearning
**Critère validé :** changer le JSON change le rendu sans modifier le HTML. ✅ check.py 12/12.
**Classification :** V1_X · privacy famille · module 17 vague 2 (cas majeur)

## Pack (structure officielle par-GAB)
```
GAB-256/
  renderer.html            ← moteur révision parent-enfant (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
Cadre de révision douce à domicile : **parent + enfant** suivent une routine 4 étapes (Ouvrir → Essayer → Reformuler → Conclure). Le parent n'intervient que sur demande, sans donner la réponse. Pas de note, pas de pression.

## Champs requis (instance, à plat)
`gab_id` · `session_id` · `title` · `roles[]{role_key,label,description}` · `items[]{step,title,body}` · `primary_cta{label,action}`

Optionnels : `subtitle`, `icon`, `revision_scope` (enum), `revision_scope_enum`, `estimated_duration`, `subject_hint`, `safety_block{heading,body}`, `secondary_cta{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : titre, sous-titre, icône, durée, matière, 2 rôles avec libellés, 4 étapes ordonnées, bloc safety, valeurs d'enum revision_scope, libellés des boutons.
- **HTML** : grille rôles, boîte étapes, bloc safety, sélecteur enum, boutons structurels, layout responsive.

## Garde-fous (child_safety — V1_X)
- **Aucune donnée enfant exposée** au prof sans consentement explicite (affiché dans safety_block).
- **Le parent voit uniquement** ce que voit l'enfant — pas de vue élargie.
- **Ton encouraging/calm** suggéré — pas de comparaison inter-élèves.
- **BLOCKED** si `roles` vide · `items` vide · `primary_cta` absent · `session_id` absent.
- V1_X : activation conditionnée par le consentement parental actif (à vérifier côté runtime).

## QA à vérifier
1. Modifier un `body` d'étape → rendu change sans toucher au HTML (critère d'or).
2. `roles:[]` → BLOCKED propre.
3. `items:[]` → BLOCKED propre.
4. `primary_cta` absent → BLOCKED.
5. Clic enum chip → chip active change, aucun reload HTML.
6. `init(extInstance)` → rendu change sans modifier le HTML.
7. Responsive 375/768/1024.

## Source
`INDEX-300-collaborationlearning-GAB-256-260-PLAYABLE.html` (stage `data-tpl="256"`, bloc GAB-256 ParentChildRevision).
