SCORM Lab ยท checks

Will breakwrites-before-progress-declared

Progress written before any status

The course saved a bookmark before telling the LMS it had started, and some systems throw that away without saying so.

What you see

Resume simply does not work, from the very first attempt โ€” the learner returns and the course is back at the beginning. Nothing errors, the LMS reports the attempt as started, and the same package resumes perfectly on a different system, which usually sends everyone looking at the content rather than the order of the calls.

What the check looks for

A write to cmi.suspend_data, cmi.location or cmi.progress_measure that happens before the SCO has written any completion or success status.

Why it matters

Nothing in the spec requires a status first, and a conformant LMS keeps everything you send. But some systems gate persistence: they hold progress data until the course has declared itself in progress, and quietly discard whatever arrived before that. The API returns success either way, so the course has no way to notice. Because it passes everywhere else, this tends to be found in production on the one system that gates.

How to fix it

Write your status first. Setting cmi.completion_status to "incomplete" as soon as the session opens costs nothing on a system that does not care and is the difference between working and not on one that does โ€” then write the bookmark.

When this is fine

On a fully conformant LMS the original order is harmless, so this is a portability warning rather than a defect. It is worth fixing anyway: the fix is one line and it removes a failure that is very hard to diagnose remotely.