{
  "contract_version": "gab_380_contract_v1",
  "gab_id": "GAB-380",
  "canonical_name": "CareerLearningEmptyState",
  "module_owner": "EdTechCareerLearning",
  "renderer_key": "text_cta",
  "required_fields": [
    "gab_id",
    "empty_state_id",
    "empty_title",
    "empty_message",
    "actions",
    "no_fake_career"
  ],
  "optional_fields": [
    "title",
    "state_label",
    "prompt",
    "use_when",
    "do_not_use_when",
    "child_safety",
    "accessibility"
  ],
  "field_types": {
    "empty_title": "string",
    "empty_message": "string",
    "prompt": "string",
    "actions": "array<{id,label,type,result_state,feedback}>",
    "no_fake_career": "boolean (DOIT être true — garde-fou anti-invention)",
    "use_when": "array<string>",
    "do_not_use_when": "array<string>",
    "child_safety": "object{no_invention,needs_boss_review:boolean,domain}",
    "accessibility": "object{keyboard_navigable,focus_visible,prefers_reduced_motion,fallback_text}"
  },
  "constraints": [
    "no_fake_career DOIT valoir true : on ne fabrique JAMAIS de fausse fiche métier — on diagnostique et on oriente.",
    "actions.type limité aux pistes non-inventantes : diagnostic, alternative_source, admin_report.",
    "alternative_source pointe vers une source vérifiée (ONISEP, conseiller) — jamais de contenu métier généré ici.",
    "primary action = chip structurel (HTML), libellé et feedback venant du JSON.",
    "GAB SENSIBLE orientation/career : aucune donnée métier ne doit être hallucinée dans l'instance."
  ],
  "blocked_conditions": [
    "empty_title absent",
    "empty_message absent",
    "actions vides",
    "no_fake_career != true"
  ],
  "accessibility": [
    "keyboard_navigable",
    "focus_visible",
    "prefers_reduced_motion",
    "fallback_text"
  ],
  "qa_cases": [
    { "case": "instance conforme", "expected": "rendu complet (carte vide + chips pistes), 0 erreur" },
    { "case": "actions:[]", "expected": "BLOCKED listant actions vides" },
    { "case": "no_fake_career omis ou false", "expected": "BLOCKED — garde-fou anti-invention" },
    { "case": "clic action diagnostic", "expected": "feedback de reformulation, état clarification_needed, aucun contenu métier inventé" },
    { "case": "clic admin_report", "expected": "signalement admin + message élève simple, aucune fiche fabriquée" },
    { "case": "instance externe injectée", "expected": "le rendu change sans modifier le HTML" },
    { "case": "responsive 375/768/1024", "expected": "aucun débordement horizontal" }
  ],
  "traceability": {
    "derived_from_core_gab": "GAB-380",
    "note": "Ce schema VALIDE l'instance. Le contrat pédagogique complet (input_contract/validation_logic/feedback_scoring_logic) vit dans le CORE-GAB officiel, pas ici (évite la duplication). GAB SENSIBLE : revue Boss requise avant prod."
  }
}
