# GAB-352 · MotivationLearningStreakNudge — « Streak non punitif »

**Archétype / renderer_key :** `text_cta` (cartographie) · **module :** EdTechMotivationLearning
**Critère validé :** changer le JSON change le nudge sans modifier le HTML. ✅ check.py 12/12.

## Pack (structure officielle par-GAB)
```
GAB-352/
  renderer.html            ← moteur nudge streak (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` · `streak_nudge_id` · `streak_label` · `streak_subtext` · `action_freeze{label,kind,feedback}` · `action_continue{label,kind,feedback}` · `action_reset{label,kind,feedback}`

Optionnels : `streak_emoji`, `pause_question`, `streak_days`, `_note_dev`.

## Ce qui vient du JSON vs HTML
- **JSON** : compteur de jours, libellés des 3 chips, feedbacks de chaque action, question de pause, message bienveillant.
- **HTML** : layout, chips, panel de feedback, slots de contrat — ne bougent jamais.

## Archétype — anti-addiction, anti-punition
Ce GAB met en œuvre la doctrine DIGIKA « streak non punitif » :
- La série est affichée positivement, mais sans jamais créer d'anxiété.
- 3 actions distinctes : gel (pause sans casse), continuation (sans pression), reset prudent (sans honte).
- Aucun message culpabilisant ne doit apparaître — les `feedback` de l'instance en sont garants.

## Garde-fous (child_safety)
- **Anti-culpabilisation** : `streak_subtext` et les 3 `feedback` DOIVENT rester bienveillants.
- **BLOCKED** si un des 3 `action_*` est absent ou si `streak_nudge_id` / `streak_label` manquent.
- Aucun mécanisme de punition, d'alerte forcée ou de streak anxiogène ne doit être introduit.

## QA à vérifier
1. Modifier `streak_days`/`streak_label` → rendu change sans toucher au HTML (critère d'or).
2. Retirer `action_freeze` → BLOCKED propre.
3. Clic « Mettre en pause » → chip verte + panel vert `action_freeze.feedback`.
4. Clic « Continuer aujourd'hui » → chip verte + panel vert `action_continue.feedback`.
5. Clic « Simuler une série perdue » → chip dorée + panel note `action_reset.feedback`.
6. Instance externe `init(ext)` → rendu change sans modifier le HTML.
7. Responsive 375/768/1024 — aucun débordement horizontal.

## Source
`INDEX-300-motivationlearning-GAB-351-355-PLAYABLE.html` (stage `data-tpl="352"`, handlers `d352Act`, `d352Reset`).

## external_refs / dependencies
- Référence croisée intra-lot : GAB-351 (MotivationLearningSessionNudge) pour sessions courtes.
- Référence croisée intra-lot : GAB-353 (MotivationLearningEffortReward) pour récompenser l'effort (usage exclusif : ne pas utiliser GAB-352 à la place de GAB-353 pour les récompenses).
