{
  "gab_id": "GAB-233",
  "renderer_key": "text_cta",
  "encouragement_id": "enc-partial-success-pythagore-001",
  "_note_dev": "SOURCE DE VÉRITÉ. Encouragement humain non-infantilisant par Ketty. Le moteur sélectionne l'une des 6 variantes via encouragement_context. Anti-flatterie : contenu factuel et contextuel, jamais générique. Fréquence limitée max 1×/session. Le HTML (layout, avatar, balises) ne change pas ; seuls ces champs changent le rendu.",
  "encouragement_context": "partial_success",
  "avatar_emoji": "🦊",
  "context_tag": "PARTIAL_SUCCESS",
  "title": "Tu es sur la bonne voie",
  "body": "La formule est <b>bonne</b>. Il reste juste à écrire la justification clairement. Ce n'est pas une note ratée — c'est une étape qu'on règle ensemble.",
  "hint": "💡 <b>Indice :</b> une phrase courte suffit pour expliquer pourquoi Pythagore s'applique.",
  "anti_flatter_note": "l'encouragement est <b>contextuel et factuel</b>. Pas de \"bravo génial fantastique !\" générique. Ketty parle d'humain à humain, jamais d'enfant à infantile. <b>Fréquence limitée</b> pour éviter la lassitude (max 1 par session).",
  "context_variants": {
    "after_effort": {
      "context_tag": "AFTER_EFFORT",
      "title": "Tu as bossé là-dessus",
      "body": "Tu <b>as pris le temps</b> de réfléchir avant de répondre. Que la réponse soit juste ou pas, cette attitude est exactement la bonne pour progresser.",
      "hint": "💡 <b>Continue :</b> la régularité dans cet effort va payer sur les exercices brevet."
    },
    "after_mistake": {
      "context_tag": "AFTER_MISTAKE",
      "title": "Une erreur, ça se règle",
      "body": "Cette erreur <b>n'est pas grave du tout</b> — c'est exactement le point qu'on travaille ensemble. Tu n'es pas en retard, tu es en train d'apprendre.",
      "hint": "🔧 <b>Prochaine étape :</b> on reprend juste l'étape qui a coincé, sans tout refaire."
    },
    "partial_success": {
      "context_tag": "PARTIAL_SUCCESS",
      "title": "Tu es sur la bonne voie",
      "body": "La formule est <b>bonne</b>. Il reste juste à écrire la justification clairement. Ce n'est pas une note ratée — c'est une étape qu'on règle ensemble.",
      "hint": "💡 <b>Indice :</b> une phrase courte suffit pour expliquer pourquoi Pythagore s'applique."
    },
    "resume": {
      "context_tag": "RESUME",
      "title": "Content de te revoir",
      "body": "Tu avais commencé cette session il y a quelques heures. <b>On reprend où tu t'étais arrêté</b>, sans repasser par le début. Pas de pression.",
      "hint": "⏯ <b>Reprise :</b> dernière étape vue = identification de l'hypoténuse."
    },
    "before_retry": {
      "context_tag": "BEFORE_RETRY",
      "title": "Tu peux réessayer",
      "body": "Maintenant que tu sais ce qui coinçait, <b>tu as toutes les cartes en main</b>. Le retry n'est pas une seconde chance — c'est ta vraie tentative équipée.",
      "hint": "🎯 <b>Stratégie :</b> garde ta formule, ajoute juste la justification avant."
    },
    "after_progress": {
      "context_tag": "AFTER_PROGRESS",
      "title": "Tu progresses concrètement",
      "body": "Sur les 5 derniers exercices, tu as <b>amélioré ta rédaction de 40%</b>. C'est mesurable, c'est réel. Pas de flatterie ici.",
      "hint": "📈 <b>Cap suivant :</b> tenir ce niveau sur 3 exercices type brevet."
    }
  },
  "primary_cta": { "label": "▶ Continuer", "action": "next_step" },
  "max_per_session": 1,
  "accessibility": {
    "role": "region",
    "aria_label": "Encouragement Ketty"
  },
  "child_safety": {
    "anti_flatter": true,
    "no_reward_trigger": true,
    "tone": "human_to_human"
  }
}
