{
  "gab_id": "GAB-259",
  "renderer_key": "text_cta",
  "oral_practice_id": "opp-grand-oral-terminale-1",
  "_note_dev": "SOURCE DE VÉRITÉ. Entraînement oral à deux : rôles orateur/jury alternés avec timer. Contenu extrait du HTML source INDEX-300 (data-tpl=259, OPP_TYPES grand_oral). Anti-invention : champs absents dans la source portent _TODO.",
  "title": "Grand oral à deux",
  "subtitle": "L'un présente 5 minutes, l'autre joue le jury bienveillant.",
  "icon": "🎤",
  "oral_format": "grand_oral",
  "oral_format_enum": ["grand_oral", "exposé", "présentation", "débat_court"],
  "estimated_duration": "5 min par tour",
  "rounds": 2,
  "context_hint": "AlloBac Terminale",
  "roles": [
    {
      "id": "orateur",
      "label": "ORATEUR",
      "description": "Présente sa partie sans interruption."
    },
    {
      "id": "jury",
      "label": "JURY",
      "description": "Note clarté + structure + 1 question de relance."
    }
  ],
  "items": [
    { "step": 1, "label": "Présentation", "body": "A présente pendant le temps imparti." },
    { "step": 2, "label": "Relance", "body": "B pose 1 question type jury." },
    { "step": 3, "label": "Retour", "body": "2 stars + 1 wish (→ GAB-254)." },
    { "step": 4, "label": "Inversion", "body": "On échange les rôles sur un autre sujet." }
  ],
  "timer_duration_seconds": 300,
  "primary_cta": { "label": "🎤 Démarrer le tour A", "action": "start_tour_a" },
  "secondary_cta": { "label": "Régler timer", "action": "configure_timer" },
  "use_when": [
    "préparation d'épreuve orale",
    "timer disponible et accepté",
    "2 élèves se font confiance"
  ],
  "do_not_use_when": [
    "élève seul (→ Audio enregistrement)",
    "stress = trop élevé sans cadre prof",
    "jury non bienveillant possible"
  ]
}
