---
title: "Progress written before any status | SCORM Lab"
canonical_url: "https://scorm-lab.com/lint/writes-before-progress-declared"
last_updated: "2026-09-06T12:06:01.123Z"
meta:
  description: "The course saved a bookmark before telling the LMS it had started, and some systems throw that away without saying so."
  "og:description": "The course saved a bookmark before telling the LMS it had started, and some systems throw that away without saying so."
  "og:title": "Progress written before any status"
  "twitter:description": "Free in-browser SCORM debugger. Drop a SCORM 1.2 or 2004 .zip to inspect the API transcript, CMI data model, sequencing and lint. Nothing uploaded unless you choose to share."
  "twitter:title": "Debug any SCORM package in your browser, free"
---

`

# 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.

[Open a package in SCORM Lab](https://scorm-lab.com/) to see whether this applies to yours. It runs in your browser, and nothing is uploaded unless you choose to share it.

Stuck on this one, or seeing it only in a particular LMS? That is usually a short conversation — [scormspecialist.co.uk](https://scormspecialist.co.uk/).