{
  "status": "FINAL",
  "date": "2026-10-26",
  "notCertification": true,
  "normativeSources": {
    "WCAG": "WCAG 2.2 A/AA",
    "WCAG2ICT": "Note W3C publiée 2025-12-11 https://www.w3.org/TR/wcag2ict/",
    "EN301549": "V3.2.1 (2021-03), https://www.etsi.org/deliver/etsi_en/301500_301599/301549/03.02.01_60/en_301549v030201p.pdf"
  },
  "criteria": [
    {
      "criterion": "1.1.1",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "pdf-fixtures"
      ],
      "notes": "UI : images de commande nommées, images décoratives exclues, descriptions de photos éditables et conservées. Contenus historiques, qualité des descriptions et documents auteurs restent hors conclusion globale."
    },
    {
      "criterion": "1.2.1",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de lecteur audio/vidéo natif ni média temporel fourni par l’interface. Les pièces jointes externes et les contenus scolaires ne sont pas déclarés conformes par cette exclusion."
    },
    {
      "criterion": "1.2.2",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de lecteur audio/vidéo natif ni média temporel fourni par l’interface. Les pièces jointes externes et les contenus scolaires ne sont pas déclarés conformes par cette exclusion."
    },
    {
      "criterion": "1.2.3",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de lecteur audio/vidéo natif ni média temporel fourni par l’interface. Les pièces jointes externes et les contenus scolaires ne sont pas déclarés conformes par cette exclusion."
    },
    {
      "criterion": "1.2.4",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de lecteur audio/vidéo natif ni média temporel fourni par l’interface. Les pièces jointes externes et les contenus scolaires ne sont pas déclarés conformes par cette exclusion."
    },
    {
      "criterion": "1.2.5",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de lecteur audio/vidéo natif ni média temporel fourni par l’interface. Les pièces jointes externes et les contenus scolaires ne sont pas déclarés conformes par cette exclusion."
    },
    {
      "criterion": "1.3.1",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "platform-talkback",
        "structured-reading"
      ],
      "notes": "Rôles, états, relations et titres exposés. Titres/listes du corps riche rendus en paragraphes natifs structurés avec liens conservés. Structure/ordre logique de tous les contenus auteurs et tableaux PDF non attestés."
    },
    {
      "criterion": "1.3.2",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "platform-talkback"
      ],
      "notes": "Ordre de contrôle et groupes de panneaux inspectés. Ordre de lecture humain exhaustif et logique des PDF non vérifiés."
    },
    {
      "criterion": "1.3.3",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Les instructions de l’interface utilisent des libellés et actions nommés ; aucune opération requise n’est expliquée par sa seule position/couleur."
    },
    {
      "criterion": "1.3.4",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "source-review"
      ],
      "notes": "Aucun verrou d’orientation. Navigation en paysage avec texte 200 % vérifiée ; cette preuve ne certifie pas la mise en page de documents externes."
    },
    {
      "criterion": "1.3.5",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "source-review"
      ],
      "notes": "Email et mots de passe sont identifiés par ContentType/KeyboardType. Autofill, collage et gestionnaires de mots de passe ne sont pas désactivés."
    },
    {
      "criterion": "1.4.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Sélection des catégories/réponses/délais et états de publication exposés par texte, rôles ou états ; la couleur n’est pas leur seul indicateur."
    },
    {
      "criterion": "1.4.2",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de son automatique, contenu au survol, contenu défilant automatiquement ni commande par mouvement du téléphone dans les écrans audités ; à revalider si ces fonctions sont ajoutées."
    },
    {
      "criterion": "1.4.3",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "canonical-colors",
        "system-preferences"
      ],
      "notes": "Paires canoniques claires/sombres contrôlées et appliquées ; pas de mesure de chaque pixel de chaque état, avatar et contenu auteur."
    },
    {
      "criterion": "1.4.4",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "a11y-interface"
      ],
      "notes": "200% vérifié pour menus, profil, mot de passe, notifications, actions, suppression, agenda et texte PDF. Formulaire rempli, choix et dialogue de langue vérifiés à 320 dp/200 % avec le clavier ouvert ; aucune conclusion universelle sur tous les écrans et appareils."
    },
    {
      "criterion": "1.4.5",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "L’interface utilise du texte natif ; les logos de marque sont distincts des instructions. Les images contenant du texte des auteurs ne sont pas couvertes."
    },
    {
      "criterion": "1.4.10",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "a11y-interface"
      ],
      "notes": "Écrans principaux défilables et plusieurs parcours contrôlés à 320 dp ; toutes les combinaisons de petit écran/paysage/agrandissement ne sont pas attestées."
    },
    {
      "criterion": "1.4.11",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "canonical-colors",
        "system-preferences"
      ],
      "notes": "Palette des champs, surfaces et contraste accru contrôlée. Contraste de tous les états de focus et contenus externes à compléter."
    },
    {
      "criterion": "1.4.12",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pour les contrôles Compose sans balisage ni mécanisme plateforme de modification des espacements, WCAG2ICT n’impose pas d’inventer ce réglage. Cette exclusion ne vaut pas pour les contenus riches convertis/PDF, dont l’évaluation reste non vérifiée. Le fontScale 200 % est une preuve distincte."
    },
    {
      "criterion": "1.4.13",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de son automatique, contenu au survol, contenu défilant automatiquement ni commande par mouvement du téléphone dans les écrans audités ; à revalider si ces fonctions sont ajoutées."
    },
    {
      "criterion": "2.1.1",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "source-review"
      ],
      "notes": "Tab/Shift+Tab sortent des champs, Entrée et raccourcis modifiés restent disponibles ; commandes de zoom/pan clavier. Navigation de tous les parcours au clavier/switch non attestée."
    },
    {
      "criterion": "2.1.2",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Piège Tab des TextField corrigé dans les 16 champs. Régression : sortir du commentaire par Shift+Tab, activer Envoyer puis Fermer ; retours et fermeture des dialogues testés."
    },
    {
      "criterion": "2.1.4",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Les raccourcis simples de la visionneuse ne fonctionnent que lorsqu’elle détient le focus. Les champs ne capturent pas Ctrl/Alt/Meta pour la navigation Tab."
    },
    {
      "criterion": "2.2.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Avant envoi, réglage explicite 10/30/60/120 secondes selon capacité serveur. Session : avertissement deux minutes et prolongation volontaire répétable avant expiration. Les échéances serveur ne sont jamais raccourcies localement."
    },
    {
      "criterion": "2.2.2",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de son automatique, contenu au survol, contenu défilant automatiquement ni commande par mouvement du téléphone dans les écrans audités ; à revalider si ces fonctions sont ajoutées."
    },
    {
      "criterion": "2.3.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Aucun flash rapide introduit par les animations de l’interface. Contenus externes non évalués."
    },
    {
      "criterion": "2.4.1",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Menu principal limité à l’accueil, panneaux regroupés ; stratégie exhaustive de contournement avec chaque technologie d’assistance non évaluée."
    },
    {
      "criterion": "2.4.2",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "source-review"
      ],
      "notes": "Écrans et panneaux possèdent titres visibles et paneTitle ; les dialogues ont un intitulé de fonction."
    },
    {
      "criterion": "2.4.3",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "platform-talkback"
      ],
      "notes": "Retour, restauration de focus et ordre clavier du commentaire testés. Ordre de lecture de toutes les transitions avec tous les services non attesté."
    },
    {
      "criterion": "2.4.4",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Actions d’interface nommées et liens explicites. Pertinence du texte des liens rédigés par les auteurs non vérifiée."
    },
    {
      "criterion": "2.4.5",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Menu, journal, notifications exactes et sections dédiées constituent plusieurs accès ; applicabilité et couverture globale des ensembles de contenus à compléter."
    },
    {
      "criterion": "2.4.6",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Titres et labels des champs demeurent disponibles avec du texte rempli ; labels de commandes explicites, réponses et choix de délai nommés."
    },
    {
      "criterion": "2.4.7",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "platform-talkback"
      ],
      "notes": "Focus fonctionnel observé et styles natifs conservés ; visibilité de chaque état de focus au clavier/AT non évaluée exhaustivement."
    },
    {
      "criterion": "2.4.11",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "a11y-interface"
      ],
      "notes": "Clavier, barre d’annulation et formulaires défilables testés sur les dimensions ciblées. Toutes les combinaisons appareil/IME n’ont pas été évaluées."
    },
    {
      "criterion": "2.5.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface"
      ],
      "notes": "Zoom/pan des photos et PDF disponibles par boutons, sans geste multipoint."
    },
    {
      "criterion": "2.5.2",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "source-review"
      ],
      "notes": "Actions par contrôles Compose standards sur activation ; suppressions confirmées et envois annulables. Les gestes de pan ne publient aucune donnée."
    },
    {
      "criterion": "2.5.3",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "french-language"
      ],
      "notes": "Noms accessibles des contrôles reprennent leurs labels. Un nom agrégé de bouton a été contrôlé sans doublon dans l’arbre Android."
    },
    {
      "criterion": "2.5.4",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Pas de son automatique, contenu au survol, contenu défilant automatiquement ni commande par mouvement du téléphone dans les écrans audités ; à revalider si ces fonctions sont ajoutées."
    },
    {
      "criterion": "2.5.7",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface"
      ],
      "notes": "Déplacer la vue agrandie est possible au moyen de commandes directionnelles, sans glisser."
    },
    {
      "criterion": "2.5.8",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Cibles principales 48 dp et composants Material ; agenda bascule en liste lorsque sept colonnes de 48 dp ne tiennent pas."
    },
    {
      "criterion": "3.1.1",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "french-language"
      ],
      "notes": "Interface annotée fr-FR. LocaleSpan réellement observés sur Android29 et36 anglais ; locale de fenêtre observée sur API36. Descriptions sans span sur Android29–33 non vérifiées ; aucune affirmation globale multi-version."
    },
    {
      "criterion": "3.1.2",
      "status": "vérifié",
      "scope": "Corps riche des publications : passages dont la langue est explicitement déclarée ; hors noms, titres, messages/commentaires en texte simple et contenus historiques non déclarés.",
      "evidence": [
        "passage-language",
        "french-language"
      ],
      "notes": "Pour les passages déclarés explicitement : lang hérité, reset de langue inconnue, LocaleSpan natif et liens/styles préservés. Les anciens éditeurs ne peuvent effacer silencieusement cette métadonnée. Aucune détection de la langue des contenus historiques ni vérification de la justesse de chaque déclaration auteur n’est revendiquée."
    },
    {
      "criterion": "3.2.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite",
        "a11y-interface"
      ],
      "notes": "Le focus ne publie ni ne supprime de contenu. Les commandes nécessitent une activation explicite."
    },
    {
      "criterion": "3.2.2",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite"
      ],
      "notes": "Les changements de type/audience modifient le formulaire ; Envoyer/Publier/Programmer restent des actions explicites. Autosave conserve le contenu et ne valide pas une émission."
    },
    {
      "criterion": "3.2.3",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite"
      ],
      "notes": "Destinations principales et commandes de retour cohérentes entre journal, détail, compte et rédactions."
    },
    {
      "criterion": "3.2.4",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review",
        "android-suite"
      ],
      "notes": "Composants communs pour actions, types, menu, annulation, description et champs de saisie."
    },
    {
      "criterion": "3.2.6",
      "status": "non applicable",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review"
      ],
      "notes": "Aucun mécanisme d’assistance humaine répétée intégré aux écrans natifs audités. Le support et la documentation publics sont évalués séparément."
    },
    {
      "criterion": "3.3.1",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Erreurs de mot de passe, descriptions de photo, conflits, réseau et expiration affichées sans effacer les brouillons."
    },
    {
      "criterion": "3.3.2",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Labels persistants des champs, consignes de réponses distinctes, date facultative, description et contraintes de longueur explicites."
    },
    {
      "criterion": "3.3.3",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "android-suite"
      ],
      "notes": "Les erreurs locales indiquent une correction ; erreurs d’accès ne révèlent pas d’information privée. Reprise, réessai et comparaison de brouillons conservés."
    },
    {
      "criterion": "3.3.4",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite"
      ],
      "notes": "Suppression avec question et identité de publication ; émission annulable ; aucune écriture irréversible par simple focus ou fermeture."
    },
    {
      "criterion": "3.3.7",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "android-suite"
      ],
      "notes": "Brouillons locaux, restauration après reprise et erreurs, données déjà fournies conservées. Les champs sensibles sont purgés après réussite selon les règles de sécurité."
    },
    {
      "criterion": "3.3.8",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "source-review",
        "android-suite"
      ],
      "notes": "Aucun défi cognitif ajouté ; collage et autofill permis pour l’authentification. Validation des identifiants assurée par le serveur."
    },
    {
      "criterion": "4.1.2",
      "status": "non vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "platform-talkback",
        "a11y-interface"
      ],
      "notes": "Noms, rôles, états, champs et actions contrôlés ; un parcours réel TalkBack traverse le pont Android. Exhaustivité de toutes les surfaces/versions non affirmée."
    },
    {
      "criterion": "4.1.3",
      "status": "vérifié",
      "scope": "Application Android native ; contenus fournis par les écoles distincts",
      "evidence": [
        "a11y-interface",
        "source-review"
      ],
      "notes": "Erreurs, annulations et résultats exposés comme live regions polies ; aucun compte à rebours annoncé chaque seconde. Réception vocale exhaustive non effectuée."
    }
  ],
  "softwareAdditional": [
    {
      "requirement": "EN 11.5.2.1–2 et 11.5.2.4",
      "status": "non applicable",
      "notes": "Application cliente ; ni système plateforme ni technologie d’assistance."
    },
    {
      "requirement": "EN 11.5.2.3,5,7–12",
      "status": "non vérifié",
      "evidence": [
        "platform-talkback",
        "a11y-interface"
      ],
      "notes": "Primitives Compose et services Android standard : noms, valeurs, texte, relations et actions observés sur le parcours cible ; couverture exhaustive à compléter."
    },
    {
      "requirement": "EN 11.5.2.6",
      "status": "non vérifié",
      "evidence": [
        "pdf-fixtures"
      ],
      "notes": "Pas de tableau de données interactif dans l’interface ciblée ; les tableaux des documents externes ne sont pas reconstruits par l’extraction texte."
    },
    {
      "requirement": "EN 11.5.2.13–16",
      "status": "non vérifié",
      "evidence": [
        "platform-talkback",
        "android-suite"
      ],
      "notes": "Focus et événements observés, sélection/IME conservés. Toutes les modifications programmatiques par chaque service d’assistance ne sont pas attestées."
    },
    {
      "requirement": "EN 11.5.2.17",
      "status": "non vérifié",
      "evidence": [
        "platform-talkback",
        "android-suite"
      ],
      "notes": "Modification des valeurs et du texte : champs éditables natifs et saisie/IME contrôlés. La modification de tous les champs et valeurs par les méthodes de chaque technologie d’assistance n’a pas été vérifiée."
    },
    {
      "requirement": "EN 11.6.1",
      "status": "non applicable",
      "notes": "Contrôle utilisateur des fonctions d’accessibilité de plateforme : l’application cliente n’est pas une plateforme."
    },
    {
      "requirement": "EN 11.6.2",
      "status": "vérifié",
      "evidence": [
        "source-review",
        "system-preferences",
        "platform-talkback"
      ],
      "notes": "Absence de perturbation des fonctions d’accessibilité : dans les parcours API36 testés, TalkBack et les préférences/filtres Android restent actifs ; aucune neutralisation de ces fonctions par l’application. Cette preuve ne couvre pas toutes les variantes constructeur."
    },
    {
      "requirement": "EN 11.7",
      "status": "non vérifié",
      "evidence": [
        "system-preferences",
        "android-suite"
      ],
      "notes": "Thème système, contraste API 34+, police plateforme, gras système et taille suivis ; inversion/monochrome ne bloquent pas les scénarios. Variantes constructeur et rendu final des filtres non mesurés."
    },
    {
      "requirement": "EN 11.8",
      "status": "non vérifié",
      "evidence": [
        "a11y-interface",
        "android-suite",
        "passage-language"
      ],
      "notes": "La rédaction permet de déclarer et conserver la langue des passages et les descriptions de photo. La conversion conserve les structures connues, styles et liens. Les autres obligations de création et transformation de tous les contenus, ainsi que la qualité des déclarations auteur, n’ont pas toutes été vérifiées."
    },
    {
      "requirement": "EN 12.1–12.2",
      "status": "non vérifié",
      "notes": "Documentation/support publics évalués dans le rapport web. Assistance humaine et documents externes non certifiés par cet audit natif."
    }
  ],
  "product": "Cour de récré — Android",
  "version": "0.2.42",
  "versionCode": 44,
  "methodology": "Inspection des écrans et du code, tests Compose et modèle, arbre Android AccessibilityNodeInfo et événements avec TalkBack réel. Aucun test d’usage humain exhaustif ni certification.",
  "statusLegend": {
    "vérifié": "Vérifié uniquement dans le périmètre décrit et avec les preuves indiquées.",
    "échec": "Une limite concrète empêche le critère dans le périmètre indiqué.",
    "non applicable": "La précondition est absente du périmètre indiqué.",
    "non vérifié": "Preuves insuffisantes pour une conclusion globale."
  },
  "interfaceScope": [
    "Connexion et école",
    "Journal et détail",
    "Menu central/classes/catégories",
    "Compte/profil/mot de passe",
    "Notifications et message exact",
    "Messages/destinataires/conversation",
    "Publication/rich text/type/audience/réponses/rendez-vous/pièces jointes/programmation",
    "Commentaire dédié et brouillons",
    "Réactions et réponses par enfant",
    "Photos/album/description/association enfant/téléchargement",
    "Documents/PDF/texte/export explicite",
    "Agenda",
    "Mes publications/suppression/conflit",
    "Envois différés/annulation/récupération"
  ],
  "environment": {
    "androidApi": 36,
    "additionalAndroidApi": 29,
    "additionalAndroidScope": "22 tests ciblés et démarrage signé minifié ; la suite complète de 387 tests et TalkBack concernent API36.",
    "compose": "1.12.1",
    "talkBack": "16.0.0.738667889",
    "deviceLanguage": "en",
    "interfaceLanguage": "fr-FR",
    "fictionalDataOnly": true,
    "personalPhoneUsed": false
  },
  "limitations": [
    "Aucune certification ou conformité globale WCAG/EN n’est revendiquée. Les tests automatisés et les événements TalkBack ne remplacent pas une écoute humaine de tous les parcours.",
    "Android 10/API29, version minimale, a été vérifié par 22 tests ciblés et un démarrage signé minifié hors ligne. La suite complète de 387 tests concerne API36 ; API30–35 et les adaptations des constructeurs ne sont pas évalués. Les LocaleSpan des textes UI ont été observés sur API29 et36 ; la locale de fenêtre pour les descriptions sans span a été observée sur API36 seulement, cette API étant indisponible avant API34.",
    "La langue d’un passage du corps riche d’une publication peut être déclarée explicitement et conservée ; aucune détection automatique ni langue inventée n’est appliquée. Les noms, titres, commentaires et messages en texte simple ne disposent pas de métadonnées de langue par passage. Ce périmètre multilingue, les contenus historiques et les déclarations erronées des auteurs ne sont pas couverts par la vérification des passages riches déclarés.",
    "L’extraction du texte PDF nécessite Android 15/API 35. Un PDF image peut ne fournir aucun texte ; l’extraction ne rétablit pas les tableaux balisés, la structure complète ni un ordre logique garanti. L’interface propose l’application PDF externe et demande une alternative accessible si nécessaire.",
    "Les descriptions des photos historiques, l’utilité des nouvelles descriptions et les documents fournis par les écoles ne sont pas certifiés. Le nouveau parcours permet de saisir les descriptions et bloque une nouvelle publication sans description lorsque le serveur annonce cette capacité.",
    "Les filtres d’inversion et de couleur sont gérés par Android. Leur activation ne bloque pas les scénarios testés ; les captures UiAutomation ne constituent pas une mesure du rendu final du compositeur.",
    "Les réglages de délai, de description de photo et la prolongation volontaire nécessitent les capacités serveur correspondantes. Les anciennes versions conservent leur contrat de dix secondes ; elles ne peuvent consulter une opération longue créée ailleurs qu’à son entrée dans leurs onze dernières secondes."
  ],
  "evidenceCatalog": {
    "android-suite": "Suite Android complète : navigation, restauration privée, droits, édition, IME, réponses, programmation, annulation, erreurs et reprise.",
    "a11y-interface": "Tests ciblés des noms de champs remplis, rôles radio, délai avant action, agenda 320 dp/200 %, zoom/pan sans glisser, descriptions photo, session et clavier matériel.",
    "platform-talkback": "TalkBack activé sur émulateur dédié : nom, champ éditable, action Android et événement de focus ; aucune conclusion sur la parole réellement écoutée.",
    "passage-language": "Sélection ou paragraphe : déclaration BCP47, héritage et langue inconnue distincts ; undo/édition/publication/réouverture, code malformé refusé. LocaleSpan réel sur titre français et lien anglais dans une liste.",
    "french-language": "Appareils anglais API29 et36 : LocaleSpan français sur libellé, nom sans doublon ; absence de langue forcée sur titre et brouillon auteur. Locale française de fenêtre observée sur API36 seulement.",
    "system-preferences": "Thème sombre, contraste API 34+, gras système, police plateforme, inversion et filtre monochrome ; réglages restaurés après essai.",
    "structured-reading": "Titres natifs, collections/listes, paragraphes et liens conservés dans la lecture riche ; aperçu développé/replié testé.",
    "pdf-fixtures": "PDF texte fictif et PDF image fictif, reflow du texte, changement de page, zoom/pan, export externe explicite.",
    "canonical-colors": "Palette claire/sombre canonique ; paires sémantiques contrastées. Compteur sur photo : voile fixe viewerStage à 70 % et texte blanc, contraste minimal calculé 7,225:1 sur fond blanc. Les états et contenus non mesurés ne sont pas assimilés à ces paires.",
    "source-review": "Inspection du code et du manifeste correspondant à la version évaluée."
  },
  "additionalSourceNotes": {
    "textSpacing": "https://www.w3.org/TR/wcag2ict/#applying-sc-1-4-12-text-spacing-to-non-web-documents-and-software",
    "tabNavigation": "https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/commands",
    "windowLocale": "https://developer.android.com/reference/android/view/accessibility/AccessibilityWindowInfo#getLocales()"
  },
  "counts": {
    "vérifié": 28,
    "échec": 0,
    "non applicable": 11,
    "non vérifié": 16
  },
  "sourceCommit": "3ac4b35f66bf6df06e8258db046de2c5994c679c",
  "sourceTree": "3992f2197c6eff4222649bcaf96511a8246ea70d",
  "designSystem": {
    "version": "0.1.23",
    "commit": "6597ca232ca22a1653f3bb908d268c9d0ca7cd1b"
  },
  "validation": {
    "jvm": {
      "status": "PASS",
      "tests": 73,
      "failures": 0,
      "errors": 0,
      "skipped": 0,
      "suites": 10
    },
    "lint": {
      "debug": {
        "status": "PASS",
        "issuesBySeverity": {
          "Warning": 4,
          "Hint": 2
        }
      },
      "demo": {
        "status": "PASS",
        "issuesBySeverity": {
          "Warning": 4,
          "Hint": 2
        }
      }
    },
    "androidInstrumentation": {
      "variant": "debug",
      "tests": 387,
      "failures": 0,
      "status": "PASS",
      "reportSha256": "84696be0b8d944695db7623082a6eb12a7c3bef23f9063c2256bd4287293b7be"
    },
    "systemPreferenceScenarios": {
      "tests": 4,
      "failures": 0,
      "settingsRestored": true,
      "reportSha256": "0b9b20501cf5025ef5d567ff5f7b6dac4c7ceaf51993e9540cfec88eed1ce9f7"
    },
    "signedMinifiedSmoke": {
      "variant": "demo",
      "status": "PASS",
      "scope": "Démarrage et écran de connexion français hors ligne, sans saisie d’identifiants ; installation de test retirée et réglages réseau restaurés.",
      "reportSha256": "c039fa45fea119835ef6ec8247bc9ce2064c9b7a08f4921fe21a337cbae9cb4e"
    },
    "minimumAndroidSupplement": {
      "androidApi": 29,
      "instrumentationTests": 22,
      "failures": 0,
      "variant": "debug",
      "signedMinifiedOfflineSmoke": "PASS",
      "scope": "Champs et clavier matériel, édition et lecture riches, langues explicites dans l’arbre Android, IME, rendu PDF isolé et refus des PDF malformés. Le message UI de repli texte PDF avant API35 a été relu dans le code, sans test UI de ce message.",
      "reportSha256": "82fd67194cea0a9162d284a737c896cb278ec857b8ee0889236a7004b81d1b5a"
    },
    "buildManifestSha256": "5217fc3a39745140a1f327096ecb97274e5bbc95050935ae4b46c0db67e83bb4",
    "artifacts": [
      {
        "variant": "demo",
        "sha256": "3677f1f1c879fe2cb7b88294712dd4eb056608d2f2e6d17930e69f334ba665ca",
        "bytes": 5825165,
        "signatureVerified": true
      },
      {
        "variant": "debug",
        "sha256": "c0dcf2221e6583c69fa2e64dbfee3d1f08d4c7b2e37738df50d5a6a05e55da82",
        "bytes": 39184650,
        "signatureVerified": true
      },
      {
        "variant": "androidTest",
        "sha256": "7e977d75cf64ffdb0dad60066948db6a50d89c66bd9b7d89dbbaaa54ee4da85a",
        "bytes": 4677375,
        "signatureVerified": true
      }
    ],
    "personalPhoneTested": false,
    "humanSpokenEvaluationCompleted": false
  }
}
