SCORM Experts / When it breaks

Completion, passed, and the difference nobody agrees on

Two systems can both be right and still disagree about whether somebody finished.

The data model distinguishes between whether a learner finished the material and whether they met a threshold. Content can set either, both, or in some configurations neither, and delivery systems differ in which one they use to decide that a course is done. This is the single most common source of the complaint that a learner completed something and the record does not show it.

The trouble is that both behaviours are defensible. A system that treats completion as finishing the material is right for a briefing. A system that treats it as meeting the threshold is right for an assessment. When the content sets one and the platform reads the other, nothing is broken in either component and the result is still wrong.

The practical approach is to decide, per course, what completion is supposed to mean, then confirm by test that the content sets it and the platform reads it. This is a five-minute check with one test learner and it removes an entire category of dispute. It should be done once per authoring tool and per platform combination, not once per course, because the behaviour is a property of the pair.

Where a result matters, record it somewhere that does not depend on the interpretation. A stored attempt with a score and a date is unambiguous in a way that a completion flag is not, and it is what somebody will want if the record is ever questioned.

There is a related trap in how completion is displayed to the learner. Content that sets its status at the moment the last page is reached, rather than when the module is properly exited, can show complete to the learner and report nothing to the platform, because the final communication never occurred. The learner is then entirely correct that they finished and entirely unable to prove it, which is the worst configuration of facts for everybody involved. Testing the exit path, not just the content path, is what catches this.