cmi5 session lifecycle — click any state to see the verb IRI and example
flowchart TD Launch(["LMS launches AP
with cmi5 params"]):::lms Auth["AP fetches auth token"]:::action Launched["AP emits launched"]:::verb Init["AP emits initialized"]:::verb Learn["AP emits learning statements
progressed / passed / failed /
completed / scored"]:::verb Q{"AP closes cleanly?"}:::decision Term["AP emits terminated"]:::verb End(["Session ends"]):::done Aban["LMS times out →
emits abandoned (server-side)"]:::serververb Launch --> Auth Auth --> Launched Launched --> Init Init --> Learn Learn --> Q Q -- Yes --> Term Q -- No --> Aban Term --> End Aban --> End click Launch call showState("Launch") click Auth call showState("Auth") click Launched call showState("Launched") click Init call showState("Init") click Learn call showState("Learn") click Q call showState("Q") click Term call showState("Term") click Aban call showState("Aban") click End call showState("End") classDef lms fill:#1e293b,stroke:#0f172a,color:#fff,font-weight:bold classDef action fill:#0d9488,stroke:#134e4a,color:#fff classDef verb fill:#4338ca,stroke:#312e81,color:#fff classDef decision fill:#ca8a04,stroke:#854d0e,color:#fff classDef serververb fill:#dc2626,stroke:#7f1d1d,color:#fff classDef done fill:#16a34a,stroke:#14532d,color:#fff linkStyle default stroke:#64748b,stroke-width:2px

State Details

Click any node to see the verb IRI, when it fires, and an example statement.