Skip to Content

Chapitre 8.5 — masteryScore, moveOn & satisfaction

⏱️ TL;DR — L’AU rapporte (completed, passed, failed) ; c’est le LMS qui juge. Deux réglages, posés dans le cmi5.xml, pilotent ce jugement : masteryScore (le seuil de réussite, de 0 à 1) et moveOn (la condition de satisfaction : Passed, Completed, CompletedAndPassed, CompletedOrPassed, NotApplicable). Quand les statements reçus remplissent la condition moveOn, le LMS considère l’AU « satisfait » et émet lui-même le verbe satisfied — puis fait remonter la satisfaction au block, puis au cours. Pour tester que tout ça est conforme avant de livrer, ADL fournit CATAPULT. Ce chapitre boucle cmi5 : de la règle de satisfaction au choix « cmi5 ou pas ».

🎯 Objectifs

  • Comprendre le rôle exact de masteryScore dans la décision passed/failed.
  • Maîtriser les cinq valeurs de moveOn et leur effet concret.
  • Suivre la remontée de satisfaction : AU → block → cours, et le verbe satisfied.
  • Savoir tester la conformité cmi5 avec CATAPULT.
  • Trancher, en connaissance de cause, quand choisir cmi5 plutôt que SCORM ou xAPI libre.

masteryScore : le seuil

masteryScore est un décimal de 0 à 1 posé sur un <au> (chapitre 8.2). Le LMS le transmet à l’AU dans LMS.LaunchData. Son rôle est simple mais strict : c’est la barre au-dessus de laquelle un résultat vaut passed.

  • Si l’AU rapporte un result.score.scaled au moins égal au masteryScore → il émet passed (success: true).
  • Si le score est en dessous du masteryScore → il émet failed (success: false).
  • Si aucun masteryScore n’est fourni, la réussite est laissée à l’appréciation de l’AU (mais s’il y en a un, l’AU doit en tenir compte — un passed sans score cohérent est non conforme, cf. chapitre 8.4).

Le masteryScore n’est pas à lui seul la condition de satisfaction : il détermine seulement si l’AU passe ou échoue. C’est moveOn qui dit ce qu’il faut pour être satisfait.

moveOn : la condition de satisfaction

moveOn est l’attribut de l’<au> qui répond à : « de quoi le LMS a-t-il besoin pour considérer cet AU comme validé et débloquer la suite ? ». Cinq valeurs :

moveOnL’AU est satisfait quand…Usage typique
Passedun passed est reçuUne évaluation : seul le succès compte
Completedun completed est reçuUne leçon : l’avoir parcourue suffit
CompletedAndPassedcompleted ET passed reçusUn module strict : tout vu et réussi
CompletedOrPassedcompleted OU passed reçuSouple : réussir ou avoir tout parcouru
NotApplicableaucune condition — satisfait dès qu’il a été expérimentéContenu purement informatif

Croisons moveOn et masteryScore sur des cas concrets :

  • Leçon vidéomoveOn="Completed", pas de masteryScore. L’apprenant regarde, l’AU émet completed, c’est satisfait. Aucune notion de réussite.
  • Quiz certifiantmoveOn="Passed", masteryScore="0.8". Il faut réussir (score ≥ 0,8 → passed). Un completed seul ne suffit pas : répondre à toutes les questions sans atteindre 80 % laisse l’AU non satisfait.
  • Quiz d’entraînement souplemoveOn="CompletedOrPassed", masteryScore="0.8". Réussir ou avoir tout fait suffit : un élève à 60 % qui a répondu à tout envoie completed → satisfait quand même.
  • Module exigeantmoveOn="CompletedAndPassed", masteryScore="0.7". Il faut les deux : avoir tout parcouru (completed) et réussi (passed). Manquer l’un des deux = non satisfait.
  • Page d’accueil informativemoveOn="NotApplicable". Satisfait dès l’ouverture ; on ne juge ni complétion ni score.

⚠️ Piège — Confondre Completed et Passed. completed = « parcouru / terminé » ; passed = « réussi ». Mettre moveOn="Completed" sur un examen certifiant, c’est valider un apprenant qui a échoué mais a « fini » le test. Inversement, moveOn="Passed" sur une simple leçon sans évaluation ne pourra jamais être satisfait (aucun passed ne sera jamais émis) : l’apprenant reste bloqué. Choisis moveOn d’après la nature de l’AU.

💡 Réflexe — Décide moveOn en une phrase : « pour passer à la suite, l’apprenant doit avoir ___ ». « avoir parcouru » → Completed. « avoir réussi » → Passed. « avoir parcouru et réussi » → CompletedAndPassed. « avoir parcouru ou réussi » → CompletedOrPassed. « rien de particulier » → NotApplicable.

La satisfaction remonte : AU → block → cours

Quand la condition moveOn d’un AU est remplie, le LMS (pas l’AU) émet le verbe satisfied sur cet AU. Puis il agrège :

  • Un block est satisfied quand tous ses AU (et sous-blocks) le sont.
  • Le cours est satisfied quand tous ses AU et blocks de premier niveau le sont.

Le LMS émet un satisfied à chaque palier atteint. C’est ce mécanisme qui permet à un LMS de dire « ce module est validé, débloque le suivant » — exactement le jugement que xAPI seul ne savait pas rendre (chapitre 8.1).

🔌 Côté intégration — C’est ici que se joue l’expérience côté LMS client. L’enseignant ne voit ni tes statements ni tes IRI : il voit une coche verte quand l’apprenant a « validé » l’activité, et un déblocage de la suite. Cette coche, c’est le satisfied émis par son LMS à partir de ton moveOn. Un moveOn mal choisi (trop laxiste, ou impossible à satisfaire) se traduit par des tickets support « les élèves restent bloqués » ou « tout le monde est validé sans rien faire ». Le réglage moveOn/masteryScore est un choix pédagogique autant que technique.

Tester la conformité : CATAPULT

Un contenu cmi5 qui « marche chez toi » n’est pas un contenu conforme. Pour le vérifier avant de livrer, ADL fournit le projet CATAPULT (Content Authoring Tools And Player Underpinning Learning Technologies) — la référence outillée de cmi5. On y trouve, en substance :

  • une suite de tests de conformité qui vérifie qu’un AU respecte le protocole (lancement, ordre des verbes, structure des statements defined, catégorie cmi5, cohérence masteryScore/score) ;
  • un lecteur de référence pour exécuter et observer un cours cmi5 ;
  • des bonnes pratiques et outils autour de la structure de cours.

Le réflexe pro : faire passer ton AU et ton cmi5.xml à la suite de conformité avant de les proposer à un client. Un rapport CATAPULT vert, c’est l’équivalent cmi5 d’un test SCORM Cloud réussi — du vérifiable, pas du « ça devrait passer ».

📚 La specmasteryScore, les cinq valeurs de moveOn, la remontée de satisfaction et le verbe satisfied sont définis dans la cmi5 Specification d’ADL (adlnet.gov), section « MoveOn » et « Content Requirements ». CATAPULT est un projet ADL distinct, également documenté sur adlnet.gov. Comme toujours : on enseigne les concepts, on vérifie le détail et la version courante à la source.

Bilan : quand choisir cmi5 ?

Tu as maintenant tout pour trancher. Le raisonnement en un arbre :

En clair :

  • Choisis cmi5 quand le contenu est lancé par un LMS, que tu veux un suivi riche (voire mobile / hors navigateur) et une complétion cadrée, et que le LMS cible sait lire cmi5. C’est le cas idéal : le successeur de SCORM.
  • Reste sur SCORM quand la compatibilité maximale prime (parc de LMS anciens qui ne gèrent pas encore cmi5) et que le suivi basique suffit. SCORM reste ultra-dominant.
  • Reste en xAPI libre (sans cmi5) quand il n’y a pas de lancement LMS : atelier présentiel, appli autonome, simulateur — là où cmi5 n’a pas de prise.

🧭 Sur FormaCampus — Décision finale pour le module « Sécurité numérique ». FormaCampus le publie en cmi5 : lancé depuis le Moodle des écoles, tracé finement (y compris son appli mobile de révision), avec une complétion que Moodle comprend. Ses réglages : moveOn="Completed" sur l’intro et la vidéo (les avoir parcourues suffit), moveOn="CompletedOrPassed" + masteryScore="0.8" sur le quiz (réussir ou avoir tout tenté). Résultat côté école : mêmes coches vertes qu’un SCORM, déblocage automatique de la suite, et un tableau de bord d’analytics que SCORM n’aurait jamais permis. Pour ses anciens clients sous un LMS qui ignore cmi5, FormaCampus continue de livrer la version SCORM — les deux formats coexistent, produits depuis la même source. La bascule SCORM → cmi5 est faite, chantier bouclé.

💡 Réflexe — « cmi5 partout » n’est pas la bonne conclusion. cmi5 brille pour le contenu lancé par un LMS. Pour brancher un outil vivant dans un LMS (ton appli qui rend un service et renvoie des notes), ce n’est pas cmi5 qu’il te faut : c’est LTI. C’est le sujet de la partie suivante.

✏️ Exercices

Exercice 1 — Choisis le moveOn. Pour chaque AU, donne le moveOn (et un masteryScore si utile) : (a) une vidéo d’introduction sans quiz ; (b) un examen final certifiant à 70 % ; (c) un TP où l’on veut que l’élève ait tout fait et réussi ; (d) une page « mentions légales » à afficher.

✅ Solution

(a) moveOn="Completed", pas de masteryScore — l’avoir regardée suffit. (b) moveOn="Passed", masteryScore="0.7" — seul le succès à 70 % valide ; un simple « terminé » ne doit pas passer. (c) moveOn="CompletedAndPassed" (plus un masteryScore selon le barème) — il faut les deux. (d) moveOn="NotApplicable" — contenu informatif, satisfait dès l’affichage, aucune notion de réussite ni de complétion.

Exercice 2 — Débogue la satisfaction. Un quiz a moveOn="Passed" et masteryScore="0.8". Un élève répond à toutes les questions, obtient 0,6, et se plaint que « le module ne se valide pas ». Est-ce un bug ? Que se passe-t-il exactement, et que changer si le métier voulait qu’« avoir tout tenté » suffise ?

✅ Solution

Ce n’est pas un bug : c’est le comportement correct. Avec moveOn="Passed", seul un passed satisfait l’AU. À 0,6 (sous le seuil de 0,8), l’AU émet failed, pas passed — donc le LMS n’émet pas satisfied et ne débloque rien. L’élève a « terminé » mais échoué. Si le métier voulait qu’« avoir tout tenté » suffise, il fallait moveOn="CompletedOrPassed" : l’AU aurait aussi émis completed, ce qui, avec CompletedOrPassed, aurait satisfait l’AU malgré l’échec. Le « bug » est en réalité un choix de moveOn inadapté au besoin pédagogique.

🧠 Quiz de révision

1. À quoi sert masteryScore, et où l’AU le reçoit-il ?

C’est le seuil de réussite (0 à 1). L’AU le reçoit dans LMS.LaunchData au lancement, et s’en sert pour trancher : score au moins égal au seuil → passed ; score en dessous → failed. À lui seul, il ne décide pas de la satisfaction — c’est moveOn qui le fait.

2. Cite les cinq valeurs de moveOn et leur effet.

Passed (satisfait si passed), Completed (satisfait si completed), CompletedAndPassed (les deux), CompletedOrPassed (l’un ou l’autre), NotApplicable (aucune condition : satisfait dès l’expérience). Le choix dépend de la nature de l’AU (leçon vs évaluation).

3. Qui émet satisfied, et comment la satisfaction remonte-t-elle ?

C’est le LMS (pas l’AU) qui émet satisfied, quand la condition moveOn d’un AU est remplie. Elle remonte ensuite : un block est satisfait quand tous ses AU le sont ; le cours l’est quand tous ses AU/blocks de premier niveau le sont. Le LMS émet un satisfied à chaque palier.

4. À quoi sert CATAPULT ?

C’est le projet ADL de référence pour cmi5 : une suite de tests de conformité (protocole de lancement, ordre des verbes, structure des statements, catégorie cmi5, cohérence score/masteryScore), un lecteur de référence et des bonnes pratiques. On y fait passer son contenu avant de livrer, comme un test SCORM Cloud pour SCORM.

5. Dans quels cas cmi5 n’est-il PAS le bon choix ?

Quand il n’y a pas de lancement LMS (atelier présentiel, appli autonome, simulateur) → xAPI libre. Quand la compatibilité avec des LMS anciens qui ignorent cmi5 prime et que le suivi basique suffit → SCORM. Et pour brancher un outil vivant dans un LMS avec renvoi de notes → LTI (Partie 9), pas cmi5.


Partie suivante : LTI — brancher un outil — passer du « contenu qu’on lance » à « l’outil qu’on branche », connecté et capable de renvoyer des notes.

Last updated on