SCORM Error 405: Incorrect Data Type [Element: cmi.core.session_time]cmi.core.session_time was written in the SCORM 2004 ISO 8601 duration format on a SCORM 1.2 package. 1.2 expects HHHH:MM:SS.SS; the write is rejected outright.
The two editions use genuinely different time formats, and neither accepts the other's. SCORM 1.2's CMITimespan is H+:MM:SS with an optional 1–2-decimal fraction of a second — commonly written HHHH:MM:SS.SS, e.g. "0005:23:07.10". SCORM 2004's CMITimespan is an ISO 8601 duration — P, an optional date part, T, then hours/minutes/seconds, e.g. "PT5H23M7S". A 2004-style "PT..." string fails the 1.2 regex outright, the runtime rejects the write with error 405 ("Incorrect Data Type" — this is the same TYPE_MISMATCH code the engine also returns for other malformed 1.2 values, not specific to time), and whatever session_time the LMS already held is left unchanged.
A timing helper written once and shared between a 1.2 and a 2004 build without branching its output format — common in hand-rolled wrappers, and in courses ported from a 2004 template to a 1.2 target (or the reverse) where the duration formatter was not updated to match.
In the Transcript tab, find the SetValue call on cmi.core.session_time — errorCode 405 sits on that row, and expanding it shows the literal value the SCO tried to write; a leading "PT" is the tell. The CMI tab will then show session_time unchanged, because the write never took.
Format session_time as HHHH:MM:SS.SS for SCORM 1.2 (hours can run past 24 — up to 4+ digits) and as an ISO 8601 duration (PT#H#M#S) for SCORM 2004. If the formatter is shared code, branch it on the SCORM version the package actually declares rather than hard-coding one format.
Open the package in SCORM Lab to see this error fire in the Transcript or Console tab. It runs in your browser, and nothing is uploaded unless you choose to share it.
Still stuck after the fix? Bring the package to a SCORM consult.