# GAB-315 · RevisionLearningQuickQuiz — « Quiz rapide chronométré »

**Archétype / renderer_key :** `quiz_scoring` (cartographie) · **module :** EdTechRevisionLearning
**Critère validé :** changer le JSON change le quiz (question, choix, timer, feedbacks) sans modifier le HTML. check.py 12/12 ✅

## Pack (structure officielle par-GAB)
```
GAB-315/
  renderer.html            ← moteur quiz chronométré (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` · `quiz_id` · `items[]{item_id, question, choices[]{choice_id,label,correct:boolean}, feedback_correct, feedback_wrong, feedback_timeout}` · `time_limit` · `immediate_feedback`

Optionnels : `title`, `score{mode,label}`, `next_action{label,action}`.

## Ce qui vient du JSON vs HTML
- **JSON** : question, intitulés des choix, quelles réponses sont correctes, durée du timer, feedbacks correct/wrong/timeout, libellé de la next action.
- **HTML** : structure timer + chips + panel + layout, logique moteur (tick, lockChoices, onAnswer), styles DS V2.

## Archétype
Quiz à réponse unique chronométrée avec feedback immédiat. La question est présentée avec N choix ; l'apprenant répond avant la fin du timer. Le résultat est prudent (jamais définitif) : garde-fou pédagogique issu du source hardcodé GAB-315.

## Garde-fous (child_safety & pédagogie)
- **Score prudent par défaut** : le feedback ne présente jamais le score comme définitif (garde-fou explicite dans le source HTML : « Score prudent »).
- **Timeout bienveillant** : temps écoulé sans réponse → message encourageant, on propose de refaire à tête reposée.
- **BLOCKED** si `items` vide / absent, `time_limit` absent/nul, `immediate_feedback` absent.
- **Anti-hardcode** : 0 question/réponse dans le HTML. Tout vient de l'instance.

## QA à vérifier
1. Modifier `question` ou `choices[].label` → rendu change sans toucher au HTML (critère d'or).
2. `items:[]` → BLOCKED propre.
3. Timer atteint 0 → feedback_timeout affiché, chips désactivées.
4. Réponse correcte → chip surlignée mint + feedback_correct.
5. Réponse incorrecte → chip surlignée coral + feedback_wrong + bonne réponse surlignée.
6. `next_action` fourni → bouton « Revoir » visible après réponse/timeout.
7. Responsive 375/768/1024 : aucun débordement.

## Source
`INDEX-300-revisionlearning-GAB-311-315-PLAYABLE.html` (stage `data-tpl="315"`, handlers `d315Start`, `d315Answer`).

## external_refs / dependencies
Aucune dépendance externe hors-lot. Le module EdTechRevisionLearning utilise également :
- GAB-313 (RevisionLearningSpacedRepetitionCard) pour les cartes de répétition espacée.
- GAB-314 (RevisionLearningMistakeReview) pour la revue d'erreurs détaillée.
GAB-315 est conseillé en sortie de GAB-313 (slot `quiz rapide → GAB-315`) et de GAB-314 (slot `quiz rapide → GAB-315`).
