In August 2009 ADL [1] released the new SCORM 2004 4th Edition.

The documentation provided by ADL now includes a detailed list of requirements for the conformance test.
This list is rather long, it includes more than 600 items just for the LMS part – which at first sight feels rather overwhelming, but seems to be the general nature of SCORM documentation with its current 1149 pages.

There are a few tasks to complete, before we can start testing the environment.
The issues to be solved first include:
#663038: Implement SCO import
#663040: Implement objectives
#663042: Implement interactions
#663026: Implement reporting

After those are implemented, the next steps to become SCORM conformant involves a lot of testing.
This can be semi automated with the SCORM Test Suite [2] on a Windows system.
And could probably be almost fully automated with Drupals built in Simple Test framework and the Fireunit plugin for Firebug, Firefox for JS specific tests.

Attached is the list of requirements relevant to the LMS part of the specification.
Things to do with this list are:

  • Check if the requirement is implemented
  • Implement the requirement if not yet done
  • And in the long-term:
    • Write a 'Simple Test' test case for each requirement if possible [2]
    • Write a 'Fireunit' test case if necessary (for JS only functionality) [3]

[1] http://adlnet.gov
[2] http://www.adlnet.gov/Technologies/scorm/SCORMSDocuments/2004%204th%20Ed...
[2] http://drupal.org/simpletest
[3] http://fireunit.org/

Launch Compliance Requirements

#675562: REQ_22: The LMS shall launch the learning resources defined in the content package manifest (imsmanifest.xml) based on the <reso
#675566: REQ_22.1: The LMS shall be able to launch a SCORM 2004 4th Ed. compliant SCO. SCOs are identified in an imsmanifest.xml as a <re
#675568: REQ_22.2: The LMS shall be able to launch a SCORM asset. Assets are identified in an imsmanifest.xml as a <resource> with an att
#675570: REQ_23: The LMS shall launch learning resources using Hypertext Transfer Protocol (HTTP).
#675572: REQ_24: The LMS shall launch a learning resource in a Document Object Model (DOM) frameset child window, or new browser (DOM) wi
#675574: REQ_25: The LMS shall only launch one SCO at a time. From the LMS’ perspective there may only be one "currently executing" SCO.

API Implementation Compliance Requirements

#675578: REQ_1: The LMS shall implement the API so that it can be invoked via ECMAScript (JavaScript).
#675582: REQ_1.1: The LMS’ API implementation shall allow its methods to be invoked using ECMAScript (JavaScript).
#675584: REQ_1.2: The LMS shall implement all API implementation method parameters as ECMAScript characterstrings.
#675586: REQ_1.3: The LMS shall implement all API implementation method return values as ECMAScript characterstrings.
#675590: REQ_1.4: The LMS’ API implementation method names shall be case-sensitive.
#675592: REQ_1.5: The LMS’ API method parameters and return values that represent integers, real numbers, durations, and times shall be e
#675612: REQ_2: The LMS shall implement the API so that is accessible via a DOM object.
#675614: REQ_2.1: The LMS’ API implementation shall be made accessible as an instantiated object in the DOM environment of the SCO.
#675618: REQ_2.2: The LMS’ API implementation shall be instantiated in any of the following DOM elements:
#675620: REQ_2.2.1: The LMS’ API Implementation can be located in any window in the chain of parents of the window within which the SCO i
#675624: REQ_2.2.2: The LMS’ API Implementation can be located in the opener window of the window within which the SCO is launched.
#675628: REQ_2.2.3: The LMS’ API Implementation can be located in any window in the chain of parents of the opener window within which th
#675630: REQ_2.3: The LMS’ API instance shall be instantiated before the SCO is launched.
#675632: REQ_2.4: The API instance, provided by an LMS, shall be responsible for maintaining a communication session with 1 and only 1 SC
#675634: REQ_2.5: The LMS’ API instance shall be a DOM object named API_1484_11.
#675636: REQ_2.6: The LMS’ API instance (DOM object) shall have an attribute named version.
#675638: REQ_2.6.1: The LMS’ API instance (DOM object) version attribute shall have the first three characters of its value be: 1.0.
#675642: REQ_2.6.2: If there are more than three characters in the value of the API instance's version attribute the fourth character sha
#675656: REQ_3: An LMS’ API Implementation States shall be implemented as:
#675658: REQ_3.1: When an LMS’ API is instantiated it shall have a starting error code of 0.
#675660: REQ_3.2: If a non-empty characterstring parameter is passed to a method that requires an empty characterstring parameter (e.g. I
#675666: REQ_4: The LMS shall adhere to the following Initialize() API method requirements:
#675668: REQ_4.1: The LMS shall implement the Initialize() API method with the following signature: return_status = Initialize("").
#675670: REQ_4.1.1: The parameter passed into the Initialize() API method shall be an empty characterstring ("").
#675674: REQ_4.2: If the communication session has not been initialized and the Initialize() API method is invoked and fails, the LMS sha
#675676: REQ_4.3: If the communication session has been initialized and the Initialize() API method is invoked again, the LMS shall set t
#675678: REQ_4.4: If the communication session has been terminated and the Initialize() API method is invoked, the LMS shall set the erro
#675680: REQ_4.5: If the communication session has not been initialized and the Initialize() API method is successful, the LMS shall set
#675682: REQ_5: The LMS shall adhere to the following Terminate() API method requirements:
#675684: REQ_5.1: The LMS shall implement the Terminate() API method with the following signature: return_status = Terminate("").
#675686: REQ_5.1.1: The LMS shall implement the Terminate() API method with the following signature: return_status = Terminate("").
#675688: REQ_5.2: If the communication session has been initialized and the Terminate() API method is successful, the LMS shall set the e
#675690: REQ_5.2.1: If the communication session has been initialized and the Terminate() API method is successful, the LMS shall persist
#675692: REQ_5.2.1.1: If the persistence of data fails, the LMS shall set the error code to General Commit Failure (391) and return false
#675696: REQ_5.3: If the communication session has been initialized and the Terminate() API method fails, the LMS shall set the error cod
#675698: REQ_5.4: If the communication session has not been initialized and the Terminate() API method is invoked, the LMS shall set the
#675700: REQ_5.5: If the communication session has been terminated and the Terminate() API method is invoked, the LMS shall set the error
#675704: REQ_6: The LMS shall adhere to the following GetValue() API method requirements:
#675706: REQ_6.1: The LMS shall implement the GetValue() API method with the following signature: return_value = GetValue(parameter).
#675708: REQ_6.1.1: The parameter shall be a data model element name for which a value is to be retrieved.
#675710: REQ_6.2: If the communication session has been initialized and the GetValue() API method is invoked successfully, the LMS shall
#675712: REQ_6.3: If the communication state has been initialized and the GetValue() API method is invoked where the parameter is not rec
#675714: REQ_6.4: If the communication state has been initialized and the GetValue() API method is invoked where the parameter is recogni
#675716: REQ_6.5: If the communication state has been initialized and the GetValue() API method is invoked where the request is for a dat
#675720: REQ_6.6: If the communication state has been initialized and the GetValue() API method is invoked where the request is for a dat
#675722: REQ_6.7: If the communication state has been initialized and the GetValue() API method is invoked unsuccessfully and no specific
#675724: REQ_6.8: If the communication state has not been initialized and the GetValue() API method is invoked, the LMS shall set the err
#675732: REQ_6.9: If the communication state has been terminated and the GetValue() API method is invoked, the LMS shall set the error co
#675736: REQ_6.10: If the communication session has been initialized and the GetValue() API method is invoked where parameter is not spec
#675738: REQ_6.11: If the communication state has been initialized and the GetValue() API method is invoked requesting the children of a
#675740: REQ_6.12: If the communication state has been initialized and the GetValue() API method is invoked requesting the number of entr
#675742: REQ_7: The LMS shall adhere to the following SetValue() API method requirements:
#675744: REQ_7.1: The LMS shall implement the SetValue() API method with the following signature: return_status = SetValue(parameter_1, p
#675746: REQ_7.1.1: parameter_1 shall be a characterstring value representing a complete identification of a data model element within a
#675748: REQ_7.1.2: parameter_2 shall be a characterstring value representing the value to which the contents of parameter_1 are to be se
#675750: REQ_7.2: If the communication session has been initialized and the SetValue() API method is successful, the LMS shall set the er
#675754: REQ_7.3: If the communication session has been initialized and the SetValue() API method is invoked where parameter_1 is not rec
#675756: REQ_7.4: If the communication session has been initialized and the SetValue() API method is invoked where parameter_1 is recogni
#675760: REQ_7.5: If the communication session has been initialized and the SetValue() API method is invoked where parameter_1 is read-on
#675762: REQ_7.6: If the communication session has been initialized and the SetValue() API method is invoked where parameter_2 does not m
#675764: REQ_7.7: If the communication session has been initialized and the SetValue() API method is invoked where parameter_2 matches th
#675768: REQ_7.8: If the communication session has been initialized and the SetValue() API method is invoked where relevant dependencies
#675772: REQ_7.9: If the communication session has not been initialized and the SetValue() API method is invoked, the LMS shall set the e
#675776: REQ_7.10: If the communication session has been terminated and the SetValue() API method is invoked, the LMS shall set the error
#675778: REQ_7.11: If the communication state has been initialized and the SetValue() API method is invoked unsuccessfully and no specifi
#675782: REQ_7.12: If the communication state has been initialized and the SetValue() API method is invoked on a data model element that
#675784: REQ_7.13: If the communication session has been initialized and the SetValue() API method is invoked where parameter_1 is not sp
#675786: REQ_7.14: If the communication session has been initialized and the SetValue() API method is invoked where a SCO attempted to se
#675788: REQ_7.15: If the communication session has been initialized and the SetValue() API method is invoked where a SCO attempted to se
#675790: REQ_8: The LMS shall adhere to the following Commit() API method requirements:
#675792: REQ_8.1: The LMS shall implement the Commit() API method with the following signature: return_status = Commit("").
#675794: REQ_8.1.1: The parameter passed into the Commit() API method shall be an empty characterstring ("").
#675798: REQ_8.2: If the communication session has been initialized and the Commit() API method is successful, the LMS shall set the erro
#675800: REQ_8.2.1: During a Commit() API method call, the LMS shall persist any data that was set, and has not been persisted since the
#675802: REQ_8.3: If the communication state has been initialized and the Commit() API method fails, the LMS shall set the error code to
#675804: REQ_8.4: If the communication state has not been initialized and the Commit() API method is invoked, the LMS shall set the error
#675806: REQ_8.5: If the communication state has been terminated and the Commit() API method is invoked, the LMS shall set the error code
#675808: REQ_9: The LMS shall adhere to the following GetLastError() API method requirements:
#675810: REQ_9.1: The LMS shall implement the GetLastError() API method with the following signature: return_status = GetLastError().
#675812: REQ_9.2: Regardless of the API's state (Not Initialized, Running, Terminated) the LMS shall return a characterstring (convertibl
#675814: REQ_9.3: If an LMS receives subsequent calls to GetLastError() with no other interceding calls to any other API methods, then th
#675816: REQ_10: The LMS shall adhere to the following GetErrorString() API method requirements:
#675818: REQ_10.1: The LMS shall implement the GetErrorString() API method with the following signature: return_text = GetErrorString(par
#675820: REQ_10.2: The parameter passed into the LMS’ GetErrorString() API method shall be the characterstring representing an error code
#675824: REQ_10.3: Regardless of the API's state (Not Initialized, Running, Terminated), the LMS shall return any text associated with th
#675826: REQ_10.4: If the parameter passed to GetErrorString() is not known, the LMS shall return an empty characterstring ("").
#675828: REQ_11: The LMS shall adhere to the following GetDiagnostic() API method requirements:
#675830: REQ_11.1: The LMS shall implement the GetDiagnostic() API method with the following signature: diagnostic_text = GetDiagnostic(p
#675832: REQ_11.2: Regardless of the API's state (Not Initialized, Running, Terminated), the LMS shall return diagnostic information for
#675834: REQ_11.2.1: The textual characterstring returned shall have a maximum length of 255 characters.
#675836: REQ_11.3: Regardless of the API's state (Not Initialized, Running, Terminated), the LMS shall return an empty characterstring ("
#675838: REQ_11.4: The parameter passed into the LMS’ GetDiagnostic() API method shall be a characterstring.

Run-Time Environment Data Model Compliance Requirements

#676306: REQ_55: The LMS shall implement the cmi._version data model element.The LMS shall implement the cmi._version data model element.
#676330: REQ_55.1: The LMS shall implement the cmi._version data model element as read-only.The LMS shall implement the cmi._version data
#676350: REQ_55.2: The LMS shall implement the cmi._version data model element as a characterstring.
#676354: REQ_55.3: If a SCO invokes a GetValue() request to retrieve the cmi._version, then the LMS shall return the characterstring 1.0.
#676356: REQ_57: The LMS shall support at least the Smallest Permitted Maximum (SPM) of 250 comments from learner.
#676358: REQ_57.1: The LMS shall implement the cmi.comments_from_learner._children data model element.
#676362: REQ_57.1.1: The LMS shall implement the cmi.comments_from_learner._children data model element as a read-only.
#676366: REQ_57.1.2: The LMS shall implement the cmi.comments_from_learner._children data model element as a characterstring.
#676368: REQ_57.1.3: If a SCO invokes a GetValue() request to retrieve the cmi.comments_from_learner._children, then the LMS shall return
#676372: REQ_57.2: The LMS shall implement the cmi.comments_from_learner._count data model element.
#676374: REQ_57.2.1: The LMS shall implement the cmi.comments_from_learner._count data model element as read-only.
#676394: REQ_57.2.2: The LMS shall implement the cmi.comments_from_learner._count data model element as a non-negative integer.
#676396: REQ_57.2.3: If a SCO invokes a GetValue() request to retrieve the cmi.comments_from_learner._count, then the LMS shall return a
#676400: REQ_57.3: The LMS shall implement the cmi.comments_from_learner.n.comment data model element.
#676402: REQ_57.3.1: The LMS shall implement the cmi.comments_from_learner.n.comment data model as read/write.
#676404: REQ_57.3.2: The LMS shall implement the cmi.comments_from_learner.n.comment data model element as a characterstring with an SPM
#676406: REQ_57.3.3: If the SCO invokes a GetValue() request on the cmi.comments_from_learner.n.comment data model element where the inde
#676408: REQ_57.3.4: If the SCO invokes a SetValue() request on the cmi.comments_from_learner.n.comment data model element where the inde
#676410: REQ_57.4: The LMS shall implement the cmi.comments_from_learner.n.location data model element.
#676412: REQ_57.4.1: The LMS shall implement the cmi.comments_from_learner.n.location data model element as read/write.
#676414: REQ_57.4.2: The LMS shall implement the cmi.comments_from_learner.n.location data model element as a characterstring with an SPM
#676416: REQ_57.4.3: If the SCO invokes a GetValue() request on the cmi.comments_from_learner.n.location data model element where the ind
#676418: REQ_57.4.4: If the SCO invokes a SetValue() request on thecmi.comments_from_learner.n.location data model element where the inde
#676420: REQ_57.5: The LMS shall implement the cmi.comments_from_learner.n.timestamp datamodel element.
#676422: REQ_57.5.1: The LMS shall implement the cmi.comments_from_learner.n.timestamp datamodel element as read/write.
#676424: REQ_57.5.2: The LMS shall implement the cmi.comments_from_learner.n.timestamp datamodel element as a time (second,10,0). This va
#676426: REQ_57.5.3: If the SCO invokes a GetValue() request on thecmi.comments_from_learner.n.timestamp data model element where the ind
#676428: REQ_57.5.4: If the SCO invokes a SetValue() request on thecmi.comments_from_learner.n.timestamp data model element where the ind
#676430: REQ_58: The LMS shall support at least the SPM of 100 comments from the LMS.
#676432: REQ_58.1: The LMS shall implement the cmi.comments_from_lms._children data modelelement.
#676434: REQ_58.1.1: The LMS shall implement the cmi.comments_from_lms._children data modelelement as read-only.
#676436: REQ_58.1.2: The LMS shall implement the cmi.comments_from_lms._children data modelelement as a characterstring.
#676438: REQ_58.1.3: If a SCO invokes a GetValue() request to retrieve thecmi.comments_from_lms._children, then the LMS shall return a co
#676440: REQ_58.2: The LMS shall implement the cmi.comments_from_lms._count data modelelement.
#676444: REQ_58.2.1: The LMS shall implement the cmi.comments_from_lms._count data modelelement as read-only.
#676446: REQ_58.2.2: The LMS shall implement the cmi.comments_from_lms._count data modelelement as non-negative integer.
#676448: REQ_58.2.3: If a SCO invokes a GetValue() request to retrieve thecmi.comments_from_lms._count, then the LMS shall return the num
#676450: REQ_58.3: The LMS shall implement the cmi.comments_from_lms.n.comment data modelelement.
#676452: REQ_58.3.1: The LMS shall implement the cmi.comments_from_lms.n.comment data modelelement as read-only.
#676454: REQ_58.3.2: The LMS shall implement the cmi.comments_from_lms.n.comment data modelelement as a localized_string_type with an SPM
#676456: REQ_58.3.3: If the SCO invokes a GetValue() request on thecmi.comments_from_lms.n.comment data model element where the index (n)
#676458: REQ_58.4: The LMS shall implement the cmi.comments_from_lms.n.location data modelelement.
#676460: REQ_58.4.1: The LMS shall implement the cmi.comments_from_lms.n.location data modelelement as read-only.
#676462: REQ_58.4.2: The LMS shall implement the cmi.comments_from_lms.n.location data modelelement as a characterstring with an SPM of 2
#676464: REQ_58.4.3: If the SCO invokes a GetValue() request on thecmi.comments_from_lms.n.location data model element where the index (n
#676468: REQ_58.5: The LMS shall implement the cmi.comments_from_lms.n.timestamp data modelelement.
#676470: REQ_58.5.1: The LMS shall implement the cmi.comments_from_lms.n.timestamp data modelelement as read-only.
#676472: REQ_58.5.2: The LMS shall implement the cmi.comments_from_lms.n.timestamp data modelelement as a time (second,10,0). This value
#676476: REQ_58.5.3: If the SCO invokes a GetValue() request on thecmi.comments_from_lms.n.timestamp data model element where the index (
#676478: REQ_59: The LMS shall implement the cmi.completion_status data model element.
#676492: REQ_59.1: The LMS shall implement the cmi.completion_status data model element asread/write.
#676496: REQ_59.2: The LMS shall implement the cmi.completion_status data model element as a stateconsisting of the following vocabulary
#676500: REQ_59.3: The LMS shall initialize the value of the cmi.completion_status data modelelement to the default value of unknown.
#676504: REQ_59.4: The LMS shall implement the cmi.completion_status such that it has the followingeffect on sequencing behaviors:
#676506: REQ_59.4.1: If the SCO or LMS sets the cmi.completion_status of the SCO to unknown, thenthe LMS’ sequencing implementation shall
#676508: REQ_59.4.2: If the SCO or LMS sets the cmi.completion_status of the SCO to completed, thenthe LMS’ sequencing implementation sha
#676510: REQ_59.4.3: If the SCO or LMS sets the cmi.completion_status of the SCO to incomplete,then the LMS’ sequencing implementation sh
#676512: REQ_59.4.4: If the SCO or LMS sets cmi.completion_status of the SCO to not attempted,then the LMS’ sequencing implementation sha
#676514: REQ_59.5: The LMS shall evaluate the value of the cmi.completion_status data model elementand return the result in the response
#676516: REQ_59.5.1: If a cmi.completion_threshold is defined for the SCO and thecmi.progress_measure data model element's value is set b
#676518: REQ_59.5.2: If a cmi.completion_threshold is defined for the SCO and thecmi.progress_measure data model element's value is set b
#676520: REQ_59.5.3: If a cmi.completion_threshold is defined for the SCO and thecmi.progress_measure data model element is never set by
#676522: REQ_59.5.4: If no cmi.completion_threshold is defined for the SCO the LMS shall rely on thevalue set for the cmi.completion_stat
#676524: REQ_60: The LMS shall implement the cmi.completion_threshold data model element.
#676526: REQ_60.1: The LMS shall implement the cmi.completion_threshold data model element asread-only.
#676528: REQ_60.2: The LMS shall implement the cmi.completion_threshold data model element asreal (10,7). The data model element shall su
#676530: REQ_60.3: The LMS shall initialize this data model element using the element value of theSCORM 2004 4th Ed. Content Packaging Ex
#676532: REQ_60.4: The LMS shall initialize this data model element using the attribute value of theSCORM 2004 4th Ed. Content Packaging
#676534: REQ_60.5: If a SCO attempts to retrieve the cmi.completion_threshold and no completionthreshold was defined in the content packa
#676536: REQ_61: The LMS shall implement the cmi.credit data model element.
#676538: REQ_61.1: The LMS shall implement the cmi.credit data model element as read-only.
#676540: REQ_61.2: The LMS shall implement the cmi.credit data model element as a state consisting ofthe following vocabulary tokens:•
#676542: REQ_61.3: The LMS shall initialize the value of the cmi.credit data model element to thedefault value of credit.
#676544: REQ_62: The LMS shall implement the cmi.entry data model element.
#676546: REQ_62.1: The LMS shall implement the cmi.entry data model element as read-only.
#676548: REQ_62.2: The LMS shall implement the cmi.entry data model element as a state consisting ofthe following vocabulary tokens:•
#676550: REQ_62.3: The LMS shall initialize the cmi.entry data model element based on the followingrules:
#676554: REQ_62.3.1: If this is the first learner session on a learner attempt, then the LMS shall set thecmi.entry to ab-initio prior to
#676556: REQ_62.3.2: If the learner attempt on the SCO is being resumed from a suspended learner session(cmi.exit is set to suspend), the
#676558: REQ_62.3.3: For all other conditions, the LMS shall set the cmi.entry to an empty characterstring("").
#676560: REQ_63: The LMS shall implement the cmi.exit data model element.
#676562: REQ_63.1: The LMS shall implement the cmi.exit data model element as write-only.
#676564: REQ_63.2: The LMS shall implement the cmi.exit data model element as a state consisting ofthe following vocabulary tokens:• t
#676568: REQ_63.3: The LMS shall initialize the value of the cmi.exit data model element to the defaultvalue of “” (empty characterstring
#676570: REQ_63.4: The LMS shall implement cmi.exit such that it has the following effect onsequencing behaviors:
#676572: REQ_63.4.1: If the SCO sets cmi.exit to time-out, the LMS shall process an "Exit All"navigation request when the SCO is taken aw
#676574: REQ_63.4.2: If the SCO sets cmi.exit to suspend, the LMS sequencing implementation shallbehave as if the Activity is Suspended v
#676576: REQ_63.4.3: If the SCO sets cmi.exit to logout, the LMS sequencing implementation shallprocess a "Exit All" navigation request w
#676578: REQ_63.5: If there are additional learner sessions within a learner attempt, the cmi.exit datamodel element’s value shall be res
#676580: REQ_64: The LMS shall support at least the SPM of 250 interactions.
#676582: REQ_64.1: The LMS shall implement the cmi.interactions._children data model element.
#676586: REQ_64.1.1: The LMS shall implement the cmi.interactions._children data model element asread-only.
#676588: REQ_64.1.2: The LMS shall implement the cmi.interactions._children data model element as acharacterstring.
#676590: REQ_64.1.3: If a SCO invokes a GetValue() request to retrieve the cmi.interactions._children,then the LMS shall return a comma-s
#676592: REQ_64.2: The LMS shall implement the cmi.interactions._count data model element.
#676594: REQ_64.2.1: The LMS shall implement the cmi.interactions._count data model element as read-only.
#676596: REQ_64.2.2: The LMS shall implement the cmi.interactions._count data model element as anon-negative integer.
#676598: REQ_64.2.3: If a SCO invokes a GetValue() request to retrieve the cmi.interactions._count, thenthe LMS shall return the number o
#676600: REQ_64.3: The LMS shall implement the cmi.interactions.n.id data model element.
#676602: REQ_64.3.1: The LMS shall implement the cmi.interactions.n.id data model element as aread/write.
#676604: REQ_64.3.2: The LMS shall implement the cmi.interactions.n.id data model element as along_identifier_type with an SPM of 4000 ch
#676606: REQ_64.3.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.id data modelelement where the index (n) provided
#676608: REQ_64.3.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.id data modelelement where the index (n) provided
#676610: REQ_64.3.5: If the SCO invokes a SetValue() request on the cmi.interactions.n.id data modelelement and the value of the identifi
#676612: REQ_64.4: The LMS shall implement the cmi.interactions.n.type data model element.
#676614: REQ_64.4.1: The LMS shall implement the cmi.interactions.n.type data model element asread/write.
#676616: REQ_64.4.2: The LMS shall implement the cmi.interactions.n.type data model element as a stateconsisting of the following vocabul
#676618: REQ_64.4.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.type data modelelement where the index (n) provide
#676620: REQ_64.4.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.type data modelelement where the index (n) provide
#676622: REQ_64.5: The LMS shall support at least 10 (SPM) interaction's objectives.
#676624: REQ_64.5.1: The LMS shall implement the cmi.interactions.n.objectives._count data modelelement.
#676626: REQ_64.5.1.1: The LMS shall implement the cmi.interactions.n.objectives._count data modelelement as read-only.
#676628: REQ_64.5.1.2: The LMS shall implement the cmi.interactions.n.objectives._count data modelelement as a non-negative integer.
#676630: REQ_64.5.1.3: If a SCO invokes a GetValue() request to retrieve thecmi.interactions.n.objectives._count, then the LMS shall retu
#676632: REQ_64.5.2: The LMS shall implement the cmi.interactions.n.objectives.m.id data modelelement.
#676634: REQ_64.5.2.1: The LMS shall implement cmi.interactions.n.objectives.m.id data model elementas read/write.
#676636: REQ_64.5.2.2: The LMS shall implement the cmi.interactions.n.objectives.m.id data modelelement as a long_identifier_type with an
#676638: REQ_64.5.2.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.objectives.m.iddata model element where the inde
#676640: REQ_64.5.2.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.objectives.m.iddata model element where the inde
#676642: REQ_64.5.2.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.objectives.m.id, t
#676644: REQ_64.5.2.6: If a SCO invokes a SetValue() request on the cmi.interactions.n.objectives.m.idwhere the value of the id is identi
#676646: REQ_64.6: The LMS shall implement the cmi.interactions.n.timestamp data model element.
#676648: REQ_64.6.1: The LMS shall implement the cmi.interactions.n.timestamp data model element asread/write.
#676650: REQ_64.6.2: The LMS shall implement the cmi.interactions.n.timestamp data model element asa time (second,10,0). This value shall
#676652: REQ_64.6.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.timestamp datamodel element where the index (n) pr
#676654: REQ_64.6.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.timestamp datamodel element where the index (n) pr
#676656: REQ_64.6.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.timestamp, then the
#676658: REQ_64.7: The LMS shall implement the cmi.interactions.n.correct_responses data modelelements.ADL Note: The SPM value for the nu
#676660: REQ_64.7.1: The LMS shall implement the cmi.interactions.n.correct_responses._count datamodel element.
#676662: REQ_64.7.1.1: The LMS shall implement the cmi.interactions.n.correct_reponses._count datamodel element as read-only.
#676664: REQ_64.7.1.2: The LMS shall implement the cmi.interactions.n.correct_responses._count datamodel element as a non-negative intege
#676666: REQ_64.7.1.3: If a SCO invokes a GetValue() request to retrieve thecmi.interactions.n.correct_responses._count, then the LMS sha
#676668: REQ_64.7.2: The LMS shall implement the cmi.interactions.n.correct_responses.m.patterndata model element.
#676670: REQ_64.7.2.1: The LMS shall implement the cmi.interactions.n.correct_responses.m.patterndata model element as read/write.
#676672: REQ_64.7.2.2: The LMS shall implement the cmi.interactions.n.correct_responses.m.patterndata model element to adhere to the appr
#676674: REQ_64.7.2.3: If the SCO invokes a GetValue() request on thecmi.interactions.n.correct_responses.m.pattern data model element wh
#676676: REQ_64.7.2.4: If the SCO invokes a SetValue() request on thecmi.interactions.n.correct_responses.m.pattern data model element wh
#676678: REQ_64.7.2.5: If the cmi.interactions.n.id and cmi.interactions.n.type have not been set prior tothe request to set the cmi.inte
#676680: REQ_64.7.2.6: If the interaction type (cmi.interactions.n.type) is true-false then the LMSshall manage 1 and only 1 correct resp
#676682: REQ_64.7.2.6.1: If a SCO attempts to set more than one correct response pattern then the LMS shallset the error code to 351 and
#676684: REQ_64.7.2.7: If the interaction type (cmi.interactions.n.type) is choice then the LMS shallmanage at least 10 correct response
#676686: REQ_64.7.2.7.1: If the interaction type (cmi.interactions.n.type) is choice then correct responsepatterns shall be unique for a
#676688: REQ_64.7.2.7.1.1: If a correct response pattern for a choice interaction type, within the scope of a SCO,is found not to be uniq
#676690: REQ_64.7.2.8: If the interaction type (cmi.interactions.n.type) is fill-in then the LMS shallmanage at least 5 correct response
#676692: REQ_64.7.2.9: If the interaction type (cmi.interactions.n.type) is long-fill-in then the LMSshall manage at least 5 correct resp
#676694: REQ_64.7.2.10: If the interaction type (cmi.interactions.n.type) is likert then the LMS shallmanage 1 and only 1 correct respons
#676696: REQ_64.7.2.10.1: If a SCO attempts to set more than one correct response pattern then the LMS shallset the error code to 351 and
#676698: REQ_64.7.2.11: If the interaction type (cmi.interactions.n.type) is matching then the LMS shallmanage at least 5 correct respons
#676700: REQ_64.7.2.12: If the interaction type (cmi.interactions.n.type) is performance then the LMSshall manage at least 5 correct resp
#676702: REQ_64.7.2.13: If the interaction type (cmi.interactions.n.type) is sequencing then the LMS shallmanage at least 5 correct respo
#676704: REQ_64.7.2.13.1: If the interaction type (cmi.interactions.n.type) is sequencing then correctresponse patterns shall be unique f
#676706: REQ_64.7.2.13.1.1: If a correct response pattern for a sequencing interaction type, within the scope of aSCO, is found not to be
#676708: REQ_64.7.2.14: If the interaction type (cmi.interactions.n.type) is numeric then the LMS shallmanage 1 and only 1 correct respon
#676710: REQ_64.7.2.14.1: If a SCO attempts to set more than one correct response pattern then the LMS shallset the error code to 351 and
#676712: REQ_64.7.2.15: If the interaction type (cmi.interactions.n.type) is other then the LMS shallmanage 1 and only 1 correct response
#676714: REQ_64.7.2.15.1: If a SCO attempts to set more than one correct response pattern then the LMS shallset the error code to 351 and
#676716: REQ_64.8: The LMS shall implement the cmi.interactions.n.weighting data model element.
#676718: REQ_64.8.1: The LMS shall implement the cmi.interactions.n.weighting data model element asread/write.
#676720: REQ_64.8.2: The LMS shall implement the cmi.interactions.n.weighting data model element asa real (10,7).
#676722: REQ_64.8.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.weighting datamodel element where the index (n) pr
#676724: REQ_64.8.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.weighting datamodel element where the index (n) pr
#676726: REQ_64.8.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.weighting, then the
#676728: REQ_64.9: The LMS shall implement the cmi.interactions.n.learner_response data modelelement.
#676730: REQ_64.9.1: The LMS shall implement the cmi.interactions.n.learner_response data modelelement as read/write.
#676732: REQ_64.9.2: The LMS shall implement the cmi.interactions.n.learner_response data modelelement to adhere to the appropriate inter
#676734: REQ_64.9.3: If the SCO invokes a GetValue() request on thecmi.interactions.n.learner_response data model element where the index
#676736: REQ_64.9.4: If the SCO invokes a SetValue() request on thecmi.interactions.n.learner_response data model element where the index
#676738: REQ_64.9.5: If the cmi.interactions.n.id and cmi.interactions.n.type have not been set prior tothe request to set the cmi.intera
#676740: REQ_64.10: The LMS shall implement the cmi.interactions.n.result data model element.
#676742: REQ_64.10.1: The LMS shall implement the cmi.interactions.n.result data model element asread/write.
#676744: REQ_64.10.2: The LMS shall implement the cmi.interactions.n.result data model element as astate consisting of the following voca
#676746: REQ_64.10.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.result datamodel element where the index (n) prov
#676748: REQ_64.10.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.result datamodel element where the index (n) prov
#676750: REQ_64.10.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.result, then the LM
#676752: REQ_64.11: The LMS shall implement the cmi.interactions.n.latency data model element.
#676754: REQ_64.11.1: The LMS shall implement the cmi.interactions.n.latency data model element asread/write.
#676756: REQ_64.11.2: The LMS shall implement the cmi.interactions.n.latency data model element as atimeinterval (second,10,2).
#676758: REQ_64.11.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.latency datamodel element where the index (n) pro
#676760: REQ_64.11.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.latency datamodel element where the index (n) pro
#676762: REQ_64.11.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.latency, then the L
#676764: REQ_64.12: The LMS shall implement the cmi.interactions.n.description data model element.
#676766: REQ_64.12.1: The LMS shall implement the cmi.interactions.n.description data model elementas a read/write.
#676768: REQ_64.12.2: The LMS shall implement the cmi.interactions.n.description data model elementas a localized_string_type with an SPM
#676770: REQ_64.12.3: If the SCO invokes a GetValue() request on the cmi.interactions.n.description datamodel element where the index (n)
#676772: REQ_64.12.4: If the SCO invokes a SetValue() request on the cmi.interactions.n.description datamodel element where the index (n)
#676774: REQ_64.12.5: If the cmi.interactions.n.id has not been set prior to the request to set thecmi.interactions.n.description, then t
#676776: REQ_65: The LMS shall implement the cmi.launch_data data model element.
#676778: REQ_65.1: The LMS shall implement the cmi.launch_data data model element as read-only.
#676780: REQ_65.2: The LMS shall implement the cmi.launch_data data model element as acharacterstring with an SPM of 4000 characters.
#676782: REQ_65.3: The LMS shall initialize this data model element using the SCORM 2004 4th Ed.Content Packaging Extensions Version 2.0
#676784: REQ_66: The LMS shall implement the cmi.learner_id data model element.
#676786: REQ_66.1: The LMS shall implement the cmi.learner_id data model element as read-only.
#676788: REQ_66.2: The LMS shall implement the cmi.learner_id data model element as along_identifer_type with an SPM of 4000 characters.
#676790: REQ_66.3: The LMS shall be responsible for initializing the cmi.learner_id.ADL Note: How this is done is currently outside the s
#676792: REQ_67: The LMS shall implement the cmi.learner_name data model element.
#676794: REQ_67.1: The LMS shall implement the cmi.learner_name data model element as read-only.
#676796: REQ_67.2: The LMS shall implement the cmi.learner_name data model element as alocalized_string_type with an SPM of 250 character
#676798: REQ_67.3: The LMS shall be responsible for initializing the cmi.learner_name.ADL Note: How this is done is currently outside the
#676802: REQ_68: The LMS shall implement the cmi.learner_preference data model elements as:
#676804: REQ_68.1: The LMS shall implement the cmi.learner_preference._children data modelelement.
#676806: REQ_68.1.1: The LMS shall implement the cmi.learner_preference._children data modelelement as read-only.
#676808: REQ_68.1.2: The LMS shall implement the cmi.learner_preference._children data modelelement as a characterstring.
#676810: REQ_68.1.3: If a SCO invokes a GetValue() request to retrieve thecmi.learner_preference._children, then the LMS shall return a c
#676812: REQ_68.2: The LMS shall implement the cmi.learner_preference.language data modelelement.
#676814: REQ_68.2.1: The LMS shall implement the cmi.learner_preference.language data modelelement as read/write.
#676816: REQ_68.2.2: The LMS shall implement the cmi.learner_preference.language data modelelement as a language_type with an SPM of 250
#676818: REQ_68.2.3: If the LMS does not provide a mechanism for initializing the learner preferences,then the default value for the cmi.
#676820: REQ_68.3: The LMS shall implement the cmi.learner_preference.delivery_speed data modelelement.
#676822: REQ_68.3.1: The LMS shall implement the cmi.learner_preference.delivery_speed data modelelement as read/write.
#676824: REQ_68.3.2: The LMS shall implement the cmi.learner_preference.delivery_speed data modelelement as real (10,7). The data model e
#676828: REQ_68.3.3: If an LMS does not provide a mechanism for initializing the learner preferences,then the default value for the cmi.l
#676830: REQ_68.4: The LMS shall implement the cmi.learner_preference.audio_captioning datamodel element.
#676832: REQ_68.4.1: The LMS shall implement the cmi.learner_preference.audio_captioning datamodel element as read/write.
#676834: REQ_68.4.2: The LMS shall implement the cmi.learner_preference.audio_captioning datamodel element as a state consisting of the f
#676836: REQ_68.4.3: If an LMS does not provide a mechanism for initializing the learner preferences,then the default value for the cmi.l
#676838: REQ_68.5: The LMS shall implement the cmi.learner_preference.audio_level data modelelement.
#676840: REQ_68.5.1: The LMS shall implement the cmi.learner_preference.audio_level data modelelement as read/write.
#676842: REQ_68.5.2: The LMS shall implement the cmi.learner_preference.audio_level data modelelement as real (10,7). The data model elem
#676844: REQ_68.5.3: If an LMS does not provide a mechanism for initializing the learner preferences,then the default value for the cmi.l
#676846: REQ_69: The LMS shall implement the cmi.location data model element.
#676848: REQ_69.1: The LMS shall implement the cmi.location data model element as read/write.
#676850: REQ_69.2: The LMS shall implement the cmi.location data model element as a characterstringwith an SPM of 1000 characters.
#676852: REQ_70: The LMS shall implement the cmi.max_time_allowed data model element.
#676854: REQ_70.1: The LMS shall implement the cmi.max_time_allowed data model element as read-only.
#676856: REQ_70.2: The LMS shall implement cmi.max_time_allowed as a timeinterval (second,10,2).
#676858: REQ_70.3: The LMS shall initialize this data model element using the IMS Simple Sequencingnamespace element <imsss:attemptAbsolu
#676862: REQ_71: The LMS shall implement the cmi.mode data model element.
#676864: REQ_71.1: The LMS shall implement the cmi.mode data model element as read-only.
#676866: REQ_71.2: The LMS shall implement the cmi.mode data model element as a state consisting ofthe following vocabulary tokens:• b
#676868: REQ_71.3: If a mechanism is not in place to support different modes, then the LMS shallinitialize the cmi.mode data model elemen
#676870: REQ_71.4: If the cmi.mode value is browse or review, the LMS shall treat any data sent bythe SCO as informative (in order to mak
#676872: REQ_72: The LMS shall support at least the SPM of 100 objectives.
#676874: REQ_72.1: The LMS shall implement the cmi.objectives._children data model element.
#676876: REQ_72.1.1: The LMS shall implement the cmi.objectives._children data model element asread-only.
#676878: REQ_72.1.2: The LMS shall implement the cmi.objectives._children data model element as acharacterstring.
#676880: REQ_72.1.3: If a SCO invokes a GetValue() request to retrieve the cmi.objectives._children,then the LMS shall return a comma-sep
#676882: REQ_72.2: The LMS shall implement the cmi.objectives._count data model element.
#676884: REQ_72.2.1: The LMS shall implement the cmi.objectives._count data model element as read-only.
#676886: REQ_72.2.2: The LMS shall implement the cmi.objectives._count data model element as a non-negative integer.
#676888: REQ_72.2.3: If a SCO invokes a GetValue() request to retrieve the cmi.objectives._count, thenthe LMS shall return the number of
#676890: REQ_72.3: The LMS shall implement the cmi.objectives.n.id data model element.
#676892: REQ_72.3.1: The LMS shall implement the cmi.objectives.n.id data model element as read/write.
#676894: REQ_72.3.2: The LMS shall implement the cmi.objectives.n.id data model element as along_identifier_type with an SPM of 4000 char
#676896: REQ_72.3.3: For each objective defined (<imsss:primaryObjective> or <imsss:objective>) thatincludes an objectiveID attribute, th
#676898: REQ_72.3.3.1: The objectiveID attribute shall be used to initialize the cmi.objectives.n.id value.
#676900: REQ_72.3.3.2: If a Read Objective Normalized Measure map is defined (in a <imsss:mapInfo>element) and the sequencing implementat
#676902: REQ_72.3.3.3: and the sequencing implementation is maintaining a valid Objective Satisfied Status(Objective Progress Status is t
#676904: REQ_72.3.3.3.1: If the Objective Satisfied Status is true, then the cmi.objectives.n.success_statusshall be initialized to passe
#676906: REQ_72.3.3.3.2: If the Objective Satisfied Status is false, then the cmi.objectives.n.success_statusshall be initialized to fail
#676908: REQ_72.3.4: If the SCO invokes a GetValue() request on the cmi.objectives.n.id data modelelement where the index (n) provided is
#676912: REQ_72.3.5: If the SCO invokes a SetValue() request on the cmi.objectives.n.id data modelelement where the index (n) provided is
#676914: REQ_72.3.6: If the SCO invokes a SetValue() request on the cmi.objectives.n.id data modelelement and the value of the identifier
#676916: REQ_72.4: The LMS shall implement the cmi.objectives.n.score data model elements.
#676918: REQ_72.4.1: The LMS shall implement the cmi.objectives.n.score._children data modelelement.
#676920: REQ_72.4.1.1: The LMS shall implement the cmi.objectives.n.score._children data model elementas read-only.
#676922: REQ_72.4.1.2: The LMS shall implement the cmi.objectives.n.score._children data model elementas a characterstring.
#676924: REQ_72.4.1.3: If a SCO invokes a GetValue() request to retrieve thecmi.objectives.n.score._children, then the LMS shall return a
#676926: REQ_72.4.2: The LMS shall implement the cmi.objectives.n.score.scaled data model element.
#676928: REQ_72.4.2.1: The LMS shall implement the cmi.objectives.n.score.scaled data model element asread/write.
#676930: REQ_72.4.2.2: The LMS shall implement the cmi.objectives.n.score.scaled data model element asa real (10,7). The value shall be i
#676932: REQ_72.4.2.3: The LMS shall implement cmi.objectives.n.score.scaled such that it has thefollowing effect on sequencing behaviors
#676934: REQ_72.4.2.3.1: If the SCO does not set cmi.objectives.n.score.scaled for an objective of the SCO,then the LMS’ sequencing imple
#676936: REQ_72.4.2.3.2: If the SCO sets cmi.objectives.n.score.scaled for an objective of the SCO, then theLMS’ sequencing implementatio
#676938: REQ_72.4.2.4: If the SCO invokes a GetValue() request on the cmi.objectives.n.score.scaled datamodel element where the index (n)
#676940: REQ_72.4.2.5: If the SCO invokes a SetValue() request on the cmi.objectives.n.score.scaled datamodel element where the index (n)
#676942: REQ_72.4.2.6: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO atte
#676944: REQ_72.4.3: The LMS shall implement the cmi.objectives.n.score.raw data model element.
#676946: REQ_72.4.3.1: The LMS shall implement the cmi.objectives.n.score.raw data model element asread/write.
#676948: REQ_72.4.3.2: The LMS shall implement cmi.objectives.n.score.raw as a real (10,7).
#676952: REQ_72.4.3.3: If the SCO invokes a GetValue() request on the cmi.objectives.n.score.raw datamodel element where the index (n) pr
#676954: REQ_72.4.3.4: If the SCO invokes a SetValue() request on the cmi.objectives.n.score.raw datamodel element where the index (n) pr
#676956: REQ_72.4.3.5: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO atte
#676958: REQ_72.4.4: The LMS shall implement the cmi.objectives.n.score.min data model element.
#676960: REQ_72.4.4.1: The LMS shall implement the cmi.objectives.n.score.min data model element asread/write.
#676962: REQ_72.4.4.2: The LMS shall implement cmi.objectives.n.score.min as a real (10,7).
#676964: REQ_72.4.4.3: If the SCO invokes a GetValue() request on the cmi.objectives.n.score.min datamodel element where the index (n) pr
#676966: REQ_72.4.4.4: If the SCO invokes a SetValue() request on the cmi.objectives.n.score.min datamodel element where the index (n) pr
#676968: REQ_72.4.4.5: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO atte
#676970: REQ_72.4.5: The LMS shall implement the cmi.objectives.n.score.max data model element.
#676974: REQ_72.4.5.1: The LMS shall implement the cmi.objectives.n.score.max data model element asread/write.
#676976: REQ_72.4.5.2: The LMS shall implement cmi.objectives.n.score.max as a real (10,7).
#676978: REQ_72.4.5.3: If the SCO invokes a GetValue() request on the cmi.objectives.n.score.max datamodel element where the index (n) pr
#676980: REQ_72.4.5.4: If the SCO invokes a SetValue() request on the cmi.objectives.n.score.max datamodel element where the index (n) pr
#676982: REQ_72.4.5.5: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO atte
#676984: REQ_72.5: The LMS shall implement the cmi.objectives.n.success_status data model element.
#676986: REQ_72.5.1: The LMS shall implement the cmi.objectives.n.success_status data model elementas read/write.
#676988: REQ_72.5.2: The LMS shall implement the cmi.objectives.n.success_status data model elementas a state consisting of the following
#676992: REQ_72.5.3: The LMS shall initialize the value of the cmi.objectives.n.success_status datamodel element to the default value of
#676994: REQ_72.5.4: The LMS shall implement cmi.objectives.n.success_status such that it has thefollowing effect on sequencing behaviors
#676996: REQ_72.5.4.1: If the SCO sets cmi.objectives.n.success_status for an objective of the SCO tounknown, the LMS’ sequencing impleme
#676998: REQ_72.5.4.2: If the SCO sets cmi.objectives.n.success_status for an objective of the SCO topassed, the LMS’ sequencing implemen
#677000: REQ_72.5.4.3: If the SCO sets cmi.objectives.n.success_status for an objective of the SCO tofailed, the LMS’ sequencing implemen
#677002: REQ_72.5.5: If the SCO invokes a GetValue() request on the cmi.objectives.n.success_statusdata model element where the index (n)
#677004: REQ_72.5.6: If the SCO invokes a SetValue() request on the cmi.objectives.n.success_statusdata model element where the index (n)
#677006: REQ_72.5.7: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO attemp
#677008: REQ_72.6: The LMS shall implement the cmi.objectives.n.completion_status data modelelement.
#677010: REQ_72.6.1: The LMS shall implement the cmi.objectives.n.completion_status data modelelement as a read/write.
#677012: REQ_72.6.2: The LMS shall implement the cmi.objectives.n.completion_status data modelelement as a state consisting of the follow
#677014: REQ_72.6.3: If the SCO invokes a GetValue() request on thecmi.objectives.n.completion_status data model element where the index
#677016: REQ_72.6.4: If the SCO invokes a SetValue() request on the cmi.objectives.n.completion_statusdata model element where the index
#677018: REQ_72.6.5: Since the cmi.objectives.n.id is required to be set first prior to any other objectiveinformation, if the SCO attemp
#677020: REQ_72.7: The LMS shall implement the cmi.objectives.n.description data model element.
#677022: REQ_72.7.1: The LMS shall implement the cmi.objectives.n.description data mode element asread/write.
#677024: REQ_72.7.2: The LMS shall implement the cmi.objectives.n.description data model element as alocalized_string_type with an SPM of
#677026: REQ_72.7.3: If the SCO invokes a GetValue() request on the cmi.objectives.n.description datamodel element where the index (n) pr
#677028: REQ_72.7.4: If the SCO invokes a SetValue() request on the cmi.objectives.n.description datamodel element where the index (n) pr
#677030: REQ_72.7.5: If the cmi.objectives.n.id has not been set prior to the request to set thecmi.objectives.n.description, then the LM
#677032: REQ_72.8: The LMS shall implement the cmi.objectives.n.progress_measure data modelelement.
#677034: REQ_72.8.1: The LMS shall implement the cmi.objectives.n.progress_measure data modelelement as read/write.
#677036: REQ_72.8.2: The LMS shall implement the cmi.objectives.n.progress_measure data modelelement as a real (10,7). The value shall be
#677038: REQ_73: The LMS shall implement the cmi.progress_measure data model element.
#677040: REQ_73.1: The LMS shall implement the cmi.progress_measure data model element asread/write.
#677042: REQ_73.2: The LMS shall implement the cmi.progress_measure data model element as a real(10,7). The value shall be in the range o
#677044: REQ_74: The LMS shall implement the cmi.scaled_passing_score data model element.
#677046: REQ_74.1: The LMS shall implement the cmi.scaled_passing_score data model element asread-only.
#677050: REQ_74.2: The LMS shall implement the cmi.scaled_passing_score data model element as areal (10,7). The value shall be in the ran
#677052: REQ_74.3: The LMS is responsible for initializing the cmi.scaled_passing_score data modelelement using the IMS Simple Sequencing
#677054: REQ_74.3.1: If the IMS Simple Sequencing namespace attribute imsss:satisfiedByMeasureassociated with the <imsss:primaryObjective
#677056: REQ_74.3.2: If the IMS Simple Sequencing namespace attribute imsss:satisfiedByMeasureassociated with the <imsss:primaryObjective
#677058: REQ_74.3.3: If the IMS Simple Sequencing namespace attribute imsss:satisfiedByMeasureassociated with the <imsss:primaryObjective
#677060: REQ_75: The LMS shall implement the cmi.score data model elements.
#677066: REQ_75.1: The LMS shall implement the cmi.score._children data model element.
#677068: REQ_75.1.1: The LMS shall implement the cmi.score._children data model element as read-only.
#677070: REQ_75.1.2: The LMS shall implement the cmi.score._children data model element as acharacterstring.
#677072: REQ_75.1.3: If a SCO invokes a GetValue() request to retrieve the cmi.score._children, then theLMS shall return a comma-separate
#677074: REQ_75.2: The LMS shall implement the cmi.score.scaled data model element.
#677076: REQ_75.2.1: The LMS shall implement the cmi.score.scaled data model element as read/write.
#677078: REQ_75.2.2: The LMS shall implement the cmi.score.scaled data model element as a real (10,7)The value shall be in the range of -
#677080: REQ_75.2.3: The LMS shall implement cmi.score.scaled such that it has the following effect onsequencing behaviors:
#677084: REQ_75.2.3.1: If the SCO does not set cmi.score.scaled, then the LMS sequencing implementationshall behave as if the Objective M
#677086: REQ_75.2.3.2: If the SCO sets cmi.score.scaled, the LMS sequencing implementation shall behaveas if the Objective Measure Status
#677088: REQ_75.3: The LMS shall implement the cmi.score.raw data model element.
#677090: REQ_75.3.1: The LMS shall implement the cmi.score.raw data model element as read/write.
#677092: REQ_75.3.2: The LMS shall implement cmi.score.raw as a real (10,7).
#677094: REQ_75.4: The LMS shall implement the cmi.score.max data model element.
#677096: REQ_75.4.1: The LMS shall implement the cmi.score.max data model element as read/write.
#677098: REQ_75.4.2: The LMS shall implement cmi.score.max as a real (10,7).
#677100: REQ_75.5: The LMS shall implement the cmi.score.min data model element.
#677102: REQ_75.5.1: The LMS shall implement the cmi.score.min data model element as read/write.
#677104: REQ_75.5.2: The LMS shall implement cmi.score.min as a real (10,7).
#677106: REQ_76: The LMS shall implement the cmi.session_time data model element.
#677108: REQ_76.1: The LMS shall implement the cmi.session_time data model element as write-only.
#677110: REQ_76.2: The LMS shall implement the cmi.session_time data model element a timeinterval(seconds, 10, 2).
#677112: REQ_76.3: Since a SCO is not required to set a value for this data model element (not requiredto keep track of the session time)
#677114: REQ_76.4: When the SCO issues the Terminate("") or the user navigates away, the LMS shalltake the last cmi.session_time that the
#677116: REQ_76.5: If there are additional learner sessions within a learner attempt, the cmi.session_timeshall be reset at the beginning
#677118: REQ_77: The LMS shall implement the cmi.success_status data model element.
#677120: REQ_77.1: The LMS shall implement the cmi.success_status data model element as read/write.
#677122: REQ_77.2: The LMS shall implement the cmi.success_status data model element as a stateconsisting of the following vocabulary tok
#677124: REQ_77.3: The LMS shall initialize the value of the cmi.success_status data model element to the default value of unknown.
#677126: REQ_77.4: The LMS shall implement cmi.success_status such that it has the following effect on sequencing behaviors:
#677128: REQ_77.4.1: If the SCO or LMS sets cmi.success_status, of the SCO to unknown, then the LMS’ sequencing implementation shall beha
#677130: REQ_77.4.2: If the SCO or LMS sets cmi.success_status, of the SCO to passed, then the LMS’ sequencing implementation shall behav
#677132: REQ_77.4.3: If the SCO or LMS sets cmi.success_status, of the SCO to failed, then the LMS’ sequencing implementation shall behav
#677134: REQ_77.5: The LMS shall evaluate the value of the cmi.success_status data model element and return the result in the response to
#677136: REQ_77.5.1: If a cmi.scaled_passing_score is defined for the SCO and the cmi.score.scaled data model element’s value is set by t
#677138: REQ_77.5.2: If a cmi.scaled_passing_score is defined for the SCO and the cmi.score.scaled data model element’s value is set by t
#677140: REQ_77.5.3: If the cmi.scaled_passing_score has been defined and the SCO does not set a cmi.score.scaled, the LMS shall evaluate
#677142: REQ_77.5.4: If no cmi.scaled_passing_score has been defined for the SCO, then the LMS shallrely on the value set for the cmi.suc
#677144: REQ_78: The LMS shall implement the cmi.suspend_data data model element.
#677146: REQ_78.1: The LMS shall implement the cmi.suspend_data data model element as read/write.
#677148: REQ_78.2: The LMS shall implement the cmi.suspend_data data model element as a characterstring with an SPM of 64000 characters.
#677150: REQ_79: The LMS shall implement the cmi.time_limit_action data model element.
#677152: REQ_79.1: The LMS shall implement the cmi.time_limit_action data model element as read-only.
#677154: REQ_79.2: The LMS shall implement the cmi.time_limit_action data model element as a state consisting of the following vocabulary
#677158: REQ_79.3: The LMS shall initialize this data model element using the SCORM 2004 4th Ed. Content Packaging Extensions Version 2.0
#677160: REQ_80: The LMS shall implement the cmi.total_time data model element.
#677162: REQ_80.1: The LMS shall implement the cmi.total_time data model element as read-only.
#677164: REQ_80.2: The LMS shall implement the cmi.total_time data model element as a timeinterval (second, 10, 2).
#677166: REQ_80.3: The value of the cmi.total_time shall not be updated by the LMS while a learner session is in progress.
#677168: REQ_80.4: The default value for the cmi.total_time shall be any value represented in the defined data type format, that evaluate
#677170: REQ_90: The LMS shall adhere to the following general data model requirements:
#677172: REQ_90.1: The LMS shall implement all of the SCORM Run-Time Environment Data Model Elements.
#677174: REQ_90.2: All data model element names shall be bound to an ECMAScript characterstring using a dot-notation.
#677178: REQ_90.3: All arrays shall be implemented with a starting index of 0 (zero-based arrays).

Run-Time Environment Data Model Data Type Compliance Requirements

#677202: REQ_81: A characterstring shall be a string of characters that are defined in ISO 10646. ISO10646 is equivalent to the Unicode S
#677204: REQ_82: A localized_string_type shall be a characterstring that has an indicator of thelanguage of the characterstring.
#677206: REQ_82.1: The format of the characterstring shall have the following syntax:• {lang=<language_type>}<actual characterstring>
#677208: REQ_82.1.1: The {lang=<language_type>} reserved delimiter shall represent the language ofthe characterstring (i.e., <actual char
#677210: REQ_82.1.2: The {lang=<language_type>} reserved delimiter shall be optionally used in alocalized_string_type.
#677212: REQ_82.1.3: The default language identifier, if no {lang=<language_type>} is specified, shallbe en (English).
#677214: REQ_83: The <language_type> shall be used to represent a language.
#677216: REQ_83.1: The format of a <language_type> shall be:<language_type> ::= langcode ["-" subcode]*where the langcode is either:•
#677218: REQ_83.2: The <language_type> shall be implemented with an SPM of 250 characters
#677220: REQ_84: The long_identifier_type shall be a characterstring that complies with the syntaxdefined for Universal Resource Identifi
#677222: REQ_84.1: This label or identifier shall be unique within the context of the SCO.ADL Note: Therefore, an empty characterstring i
#677224: REQ_84.2: The SCORM recommends that the URI be a Universal Resource Name (URN), if aURN is used the URN shall have the following
#677226: REQ_84.3: The long_identifier_type’s value shall be implemented with an SPM of 4000characters
#677228: REQ_85: The short_identifier_type shall be a characterstring that complies with the syntaxdefined for Universal Resource Identif
#677230: REQ_85.1: This label or identifier shall be unique within the context of the SCO.ADL Note: Therefore, an empty characterstring i
#677232: REQ_85.2: The short_identifier_type’s value shall be implemented with an SPM of 250characters
#677234: REQ_86: The integer datatype shall be a member of the set of positive whole numbers (i.e.,1,2,3, etc.), negative whole numbers (
#677236: REQ_87: The real(10,7) datatype shall be a real number with a precision of seven significantdigits.The time (second,10,0) data t
#677238: REQ_88: have a required precision of 1 second and an optional precision of 0.01 seconds
#677240: REQ_88.1: The format of the characterstring shall be as:YYYY[-MM[-DD[Thh[:mm[:ss[.s[TZD]]]]]]]where·• YYYY: A four-digit year
#677242: REQ_89: The timeinterval (second,10,2) denotes that the value for the data model elementtimeinterval is a number expressed as a
#677244: REQ_89.1: The format of the characterstring shall be as:P[yY][mM][dD][T[hH][nM][s[.s]S]]where:• y: The number of years (integ
#677246: REQ_91: The format for the characterstring representation ofcmi.interactions.n.correct_responses.m.pattern andcmi.interactions.n
#677248: REQ_91.1: The value of the characterstring for thecmi.interactions.n.correct_responses.m.pattern shall adhere to the followingre
#677250: REQ_91.1.1: If the cmi.interactions.n.type is true-false, then the correct response patternshall be a characterstring containing
#677254: REQ_91.1.2: If the cmi.interactions.n.type is choice, then the correct response pattern shallbe a characterstring value that rep
#677256: REQ_91.1.2.1: If the correct response pattern is to represent that there is no correct choice then theset shall be represented a
#677258: REQ_91.1.2.2: If the correct response pattern has multiple short_identifier_types, all of which arerequired, then each short_ide
#677260: REQ_91.1.2.2.1: Each short_identifier_type shall be unique within the correct response pattern.
#677262: REQ_91.1.3: If the cmi.interactions.n.type is fill-in, then the correct response pattern shallbe a characterstring value that re
#677264: REQ_91.1.3.1: The correct response pattern array shall consist of 1 or more localized_string_types.
#677266: REQ_91.1.3.1.1: The localized_string_type shall have a SPM of 250 characters.If the correct response pattern has multiple locali
#677268: REQ_91.1.3.2: then each localized_string_type shall be separated by the special reserved token [,].
#677270: REQ_91.1.3.3: The case matter's delimiter shall adhere to the following requirements:• the case matters delimiter shall be optio
#677272: REQ_91.1.3.4: The order matter's delimiter shall adhere to the following requirements:• the order matters delimiter shall be opt
#677274: REQ_91.1.4: If the cmi.interactions.n.type is long-fill-in, then the correct responsepattern shall be a characterstring value th
#677276: REQ_91.1.4.1: The case matter's delimiter shall adhere to the following requirements:• the case matters delimiter shall be optio
#677278: REQ_91.1.4.2: The localized_string_type shall have a SPM of 4000 characters.
#677280: REQ_91.1.5: If the cmi.interactions.n.type is likert, then the correct response pattern shallbe a characterstring representing a
#677282: REQ_91.1.6: If the cmi.interactions.n.type is matching, then the correct response pattern shallbe a characterstring value that r
#677284: REQ_91.1.6.1: The <source> and <target> values shall be valid short_identifier_type values.
#677286: REQ_91.1.6.2: The special reserved token [.] shall be used to separate the <source> from the<target>.If the correct response pat
#677288: REQ_91.1.6.3: separated by the special reserved token [,].
#677290: REQ_91.1.7: If the cmi.interactions.n.type is performance, then the correct response patternshall be a characterstring value tha
#677292: REQ_91.1.7.1: The order matter's delimiter shall adhere to the following requirements:• the order matters delimiter shall be opt
#677294: REQ_91.1.7.2: The <step_name> shall be represented as a valid short_identifier_type.
#677296: REQ_91.1.7.3: The special reserved token [.] shall be used to separate the <step_name> fromthe <step_answer>.
#677298: REQ_91.1.7.3.1: The <step_name> may be omitted if there is no step name but only a<step_answer>. In this case, the reserved deli
#677300: REQ_91.1.7.3.2.: The <step_answer> shall be either a characterstring (SPM of 250 characters) or anumeric.
#677302: REQ_91.1.7.3.2.1: The <step_answer> may be omitted if there is no step answer but only a<step_name>. In this case, the reserved
#677308: REQ_91.1.7.3.2.2: If the <step_answer> is a numeric, then the characterstring shall be represented inthe following format:• <min
#677310: REQ_91.1.7.3.2.2.1: The <min> and <max> values shall be represented as valid real(10,7)
#677312: REQ_91.1.7.3.2.2.2: The <min> may be omitted if there is no lower bound. In this case, the reserveddelimiter [:] shall still be
#677314: REQ_91.1.7.3.2.2.3: The <max> may be omitted if there is no upper bound. In this case, the reserveddelimiter [:] shall still be
#677316: REQ_91.1.7.3.2.2.4: Both the <min> and <max> may be omitted if there is no lower or upper bound.In this case, the reserved delim
#677318: REQ_91.1.8: If the cmi.interactions.n.type is sequencing, then the correct response patternshall be a characterstring value that
#677320: REQ_91.1.8.1: If the correct response pattern is no sequence then the set shall be represented as anempty characterstring (“”).A
#677322: REQ_91.1.8.2: If the correct response pattern has multiple short_identifier_types then eachshort_identifier_type shall be separa
#677324: REQ_91.1.8.3: The order of the short_identifier_types as specified shall be maintained.
#677326: REQ_91.1.9: If the cmi.interactions.n.type is numeric, then the characterstring value shall berepresented in the following forma
#677328: REQ_91.1.9.1: The <min> and <max> values shall be represented as valid real(10,7).
#677330: REQ_91.1.9.2: The <min> may be omitted if there is no lower bound. In this case, the reserveddelimiter [:] shall still be presen
#677332: REQ_91.1.9.3: The <max> may be omitted if there is no upper bound. In this case, the reserveddelimiter [:] shall still be presen
#677334: REQ_91.1.9.4: Both the <min> and <max> may be omitted if there is no lower or upper bound.In this case, the reserved delimiter [
#677336: REQ_91.1.10: If the cmi.interactions.n.type is other, then the correct_response shall be a validcharacterstring (SPM of 4000 cha
#677338: REQ_91.2: The value of the characterstring for the cmi.interactions.n.learner_response shalladhere to the following requirements
#677340: REQ_91.2.1: If the cmi.interactions.n.type is true-false, then the characterstring valueshall be a characterstring containing on
#677342: REQ_91.2.2: If the cmi.interactions.n.type is choice, then the characterstring value shall be acharacterstring value that repres
#677344: REQ_91.2.2.1: If the characterstring is representing a no choice then the set shall be represented asan empty characterstring (“
#677346: REQ_91.2.2.2: If the characterstring has multiple short_identifier_types, then eachshort_identifier_type shall be separated by t
#677348: REQ_91.2.2.3: Each short_identifier_type shall be unique within the characterstring.
#677352: REQ_91.2.3: If the cmi.interactions.n.type is fill-in, then the characterstring shall representan array of localized_string_type
#677354: REQ_91.2.3.1: The characterstring array shall consist of 1 or more localized_string_types.
#677356: REQ_91.2.3.1.1: The localized_string_type shall have a SPM of 250 characters.If the learner response has multiple localized_stri
#677358: REQ_91.2.3.2: each localized_string_type shall be separated by the special reserved token [,].
#677360: REQ_91.2.4: If the cmi.interactions.n.type is long-fill-in, then the characterstring shallrepresent a localized_string_type. The
#677362: REQ_91.2.4.1: The characterstring shall consist of 1 and only 1 localized_string_type.
#677364: REQ_91.2.4.2: The localized_string_type shall have a SPM of 4000 characters.
#677366: REQ_91.2.5: If the cmi.interactions.n.type is likert, then the characterstring shall representa valid short_identifier_type.
#677368: REQ_91.2.6: If the cmi.interactions.n.type is matching, then the characterstring shallrepresent a bag of <source> / <target> pai
#677370: REQ_91.2.6.1: The <source> and <target> values shall be valid short_identifier_type values.
#677372: REQ_91.2.6.2: The special reserved token [.] shall be used to separate the <source> from the<target>.If the learner response has
#677374: REQ_91.2.6.3: separated by the special reserved token [,].
#677376: REQ_91.2.7: If the cmi.interactions.n.type is performance, then the characterstring shallrepresent an array of <step_name> and <
#677378: REQ_91.2.7.1: The <step_name> shall be represented as a valid short_identifier_type.
#677380: REQ_91.2.7.2: The special reserved token [.] shall be used to separate the <step_name> fromthe <step_answer>.
#677382: REQ_91.2.7.2.1: The <step_name> may be omitted if there is no step name but only a<step_answer>. In this case, the reserved deli
#677384: REQ_91.2.7.2.2.: The <step_answer> shall be either a characterstring (SPM of 250 characters) or anumeric.
#677386: REQ_91.2.7.2.2.1: The <step_answer> may be omitted if there is no step answer but only a<step_name>. In this case, the reserved
#677388: REQ_91.2.7.2.2.2: If the <step_answer> is a numeric, then the characterstring shall be represented inthe following format:• <min
#677390: REQ_91.2.7.2.2.2.1: The <min> and <max> values shall be represented as valid real(10,7)
#677392: REQ_91.2.7.2.2.2.2: The <min> may be omitted if there is no lower bound. In this case, the reserveddelimiter [:] shall still be
#677394: REQ_91.2.7.2.2.2.3: The <max> may be omitted if there is no upper bound. In this case, the reserveddelimiter [:] shall still be
#677396: REQ_91.2.7.2.2.2.4: Both the <min> and <max> may be omitted if there is no lower or upper bound.In this case, the reserved delim
#677398: REQ_91.2.8: If the cmi.interactions.n.type is sequencing, then the characterstring shallrepresent an array of short_identifier_t
#677400: REQ_91.2.8.1: If the characterstring needs to represent that there is no sequence then the set shallbe represented as an empty c
#677402: REQ_91.2.8.2: If the learner response has multiple short_identifier_types then eachshort_identifier_type shall be separated by t
#677404: REQ_91.2.8.3: The order of the short_identifier_types as specified shall be maintained.
#677406: REQ_91.2.9: If the cmi.interactions.n.type is numeric, then the characterstring shall representa valid real number, real (10,7).
#677408: REQ_91.2.10: If the cmi.interactions.n.type is other, then the characterstring shall represent avalid characterstring.
#677410: REQ_91.2.10.1: The characterstring shall have a SPM of 4000 characters.
#677412: REQ_92: All state values shall be represented by reserved characterstring tokens. The actualcharacterstring tokens are defined b

Run-Time Navigation Data Model Compliance Requirements

#677416: REQ_47: The LMS shall implement the adl.nav.request data model element.
#677418: REQ_47.1: The adl.nav.request data model element shall be implemented as read/write.
#677420: REQ_47.2: The adl.nav.request data model element shall be implemented as a data model elementof type characterstring restricted
#677424: REQ_47.2.1: If the adl.nav.request is for a choice navigation request, then the format of thecharacterstring shall be: {target=<
#677426: REQ_47.2.2: If the adl.nav.request is for a jump navigation request, then the format of thecharacterstring shall be: {target=<ST
#677428: REQ_47.3: The LMS shall assume the default value of _none_ for the adl.nav.request until thevalue is set by the SCO.
#677430: REQ_47.4: Upon normal termination of a SCO (the SCO set cmi.exit to "" or normal) the LMSshall process the navigation request.
#677432: REQ_47.5: If the SCO terminates in a suspended state (the SCO set cmi.exit to suspend), the LMSshall not process the navigation
#677434: REQ_48: The LMS shall implement the adl.nav.request_valid.continue data model element.
#677436: REQ_48.1: The adl.nav.request_valid.continue data model element shall be implemented as read-only.
#677438: REQ_48.2: The adl.nav.request_valid.continue data model element shall be implemented to returnone of the following restricted vo
#677442: REQ_48.3: The default value of the adl.nav.request_valid.continue data model element shall beunknown.
#677444: REQ_49: The LMS shall implement the adl.nav.request_valid.previous data model element.
#677446: REQ_49.1: The adl.nav.request_valid.previous data model element shall be implemented as read-only.
#677448: REQ_49.2: The adl.nav.request_valid.previous data model element shall be implemented to returnone of the following restricted vo
#677450: REQ_49.3: The default value of the adl.nav.request_valid.previous data model element shall beunknown.
#677452: REQ_50: The LMS shall implement the adl.nav.request_valid.choice.{target=<STRING>} datamodel element.
#677454: REQ_50.1: The adl.nav.request_valid.choice.{target=<STRING>} data model element shall beimplemented as read-only.
#677456: REQ_50.2: The adl.nav.request_valid.choice.{target=<STRING>} data model element shall beimplemented to return one of the followi
#677458: REQ_50.3: The default value of the adl.nav.request_valid.choice.{target=<STRING>} data modelelement shall be unknown.
#677460: REQ_119: The LMS shall implement the adl.nav.request_valid.jump.{target=<STRING>} datamodel element.
#677462: REQ_119.1: The adl.nav.request_valid.jump.{target=<STRING>} data model element shall beimplemented as read-only.
#677464: REQ_119.2: The adl.nav.request_valid.jump.{target=<STRING>} data model element shall beimplemented to return one of the followin
#677466: REQ_119.3: The default value of the adl.nav.request_valid.jump.{target=<STRING>} data modelelement shall be unknown.

User Interface Compliance Requirements

#677476: REQ_117: An LMS shall provide navigation user interface (UI) devices that support basic (non-exception) navigation through conte
#677478: REQ_117.1: An LMS shall provide an enabled navigation UI device corresponding to a ContinueNavigation Event when the Current Act
#677480: REQ_117.2: An LMS shall provide a disabled navigation UI device corresponding to a ContinueNavigation event when the Current Act
#677482: REQ_117.3: An LMS shall provide an enabled navigation UI device corresponding to a PreviousNavigation event:• The Current Activi
#677484: REQ_117.4: An LMS shall provide a disabled navigation UI device corresponding to a PreviousNavigation event when:• The Current A
#677486: REQ_117.5: An LMS shall provide an enabled “table of contents” UI device (entry in the “table ofcontents”) that provides a means
#677488: REQ_117.6: An LMS shall provide a disabled “table of contents” UI device (entry in the “table ofcontents”) that does not provide
#677490: REQ_117.7: An LMS shall not provide TOC UI devices (entries) in the following situations:• Any activity that is “invisible” (des
#677500: REQ_118: An LMS shall not provide navigation UI devices corresponding to “hidden” navigationevents (described via the <hideLMSUI

Comments

coolestdude1’s picture

Status: Active » Closed (won't fix)