# GAB-023 · FeedbackStarsPrompt — « Feedback étoiles rapide »

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

## Pack (structure officielle par-GAB)
```
GAB-023/
  renderer.html            ← moteur feedback étoiles (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` · `feedback_id` · `title` · `body` · `primary_cta` · `star_labels{1..N}`

Optionnels : `icon`, `hint`, `star_count` (défaut 5), `thank_you_message`.

## Ce qui vient du JSON vs HTML
- **JSON** : l'icône, le titre (question), le corps de texte, le libellé du CTA, les labels d'étoiles par valeur, le message post-envoi, l'indice hint.
- **HTML** : la carte, les boutons étoiles (générés dynamiquement selon `star_count`), le guard CTA (bouton inactif sans sélection), le layout.

## Archétype
Feedback léger non-bloquant affiché en fin de session. L'élève note de 1 à N étoiles ; chaque valeur affiche un label textuel ; le bouton CTA s'active après sélection ; après clic CTA, le message `thank_you_message` s'affiche. Aucune donnée pédagogique n'est en dur.

## Garde-fous (child_safety)
- **Non-bloquant** : le feedback ne doit jamais bloquer la progression de l'élève.
- **BLOCKED** si `title` / `body` / `primary_cta` / `star_labels` absents.
- **Guard CTA** : le bouton reste visuellement inactif tant qu'aucune étoile n'est sélectionnée (`pointer-events:none` + style `muted`).
- **Anti-invention** : aucun texte en dur dans le HTML — chaque libellé vient du JSON.

## QA à vérifier
1. Modifier `title`/`body` → rendu change sans toucher au HTML (critère d'or).
2. `star_labels:{}` vide → BLOCKED propre.
3. Clic étoile 3 → résultat « 3/5 — Pas mal » ; clic étoile 5 → « 5/5 — Excellent ! ».
4. Clic CTA avant sélection → rien ne se passe (guard actif).
5. Clic CTA après sélection → `thank_you_message` affiché.
6. `star_count:3` → 3 étoiles affichées, labels 1/2/3 utilisés.
7. Responsive 375/768/1024.

## Source
`INDEX-300-playkit-GAB-021-025-PLAYABLE.html` (stage `data-tpl="23"`, handlers `// GAB-023`).

## external_refs / dependencies
Aucune dépendance hors-lot. GAB-023 est autonome dans EdTechPlayKit.
Cross-références contextuelles (non requises) : GAB-021 SessionRecapChecklist (récap avant feedback), GAB-022 RewardVisualCelebration (célébration avant feedback).
