Skip to content

🧠 RevLearning --- Mental Model

🎯 The Core Idea

RevLearning does not decide learner progress.

The LMS owns learner records.

RevLearning simply provides a clean way to read and write those records.


Think In Terms Of Learning State

Most developers arrive thinking:

Initialize LMS
↓
Do learning
↓
Complete LMS

That's technically correct.

But the real mental model is:

Learner State
    ↓
RevLearning
    ↓
SCORM / xAPI
    ↓
LMS

RevLearning is the adapter between your content and the LMS.

It is not the LMS.

It does not decide completion.

It does not decide pass/fail.

It does not decide attempts.

The LMS remains the source of truth.


RevLearning Owns

  • LMS initialization
  • LMS communication
  • Status writes
  • Score writes
  • Bookmark writes
  • Suspend data
  • Objectives
  • Interactions
  • Runtime abstraction

RevLearning Does NOT Own

  • Course flow
  • Learning logic
  • Assessment logic
  • Completion rules
  • Attempt management
  • LMS reporting dashboards
  • LMS enrollment

The Most Important Rule

RevLearning reports learner state.

It does not invent learner state.

If a learner starts a course:

runtime.MarkIncomplete();

If a learner completes a course:

runtime.MarkCompleted();

If a learner passes:

runtime.MarkPassed();

RevLearning will not automatically decide those outcomes.

Your content decides.


SCORM 1.2 vs SCORM 2004 vs xAPI

Do not think of these as different systems.

Think of them as different transport layers.

Your Course
     ↓                      ↓
 ILmsRuntime            IXApiRuntime
 IScormDataModel             ↓
     ↓                      xAPI
 SCORM 1.2                   ↓
 SCORM 2004                 LRS
     ↓
 LMS

The two SCORM standards really are one interface: ILmsRuntime and IScormDataModel hide every difference between them, and learning code written against those does not care which one it is running under. That is the abstraction RevLearning exists for.

xAPI is a parallel path, not a third SCORM. It has its own interface (IXApiRuntime), its own factory, and its own destination — an LRS rather than the LMS hosting your content. LmsVersion has no xAPI member, because xAPI is not a version of the thing ILmsRuntime talks to. The only bridge between them is XApiActor.FromLmsLearner, which takes the learner the LMS reported and turns them into an xAPI actor so both paths agree on who the learner is.

A course can use either, or both. What it cannot do is switch between SCORM and xAPI by changing a version enum.


Completion Is Not Automatic

Some LMS platforms and SCORM test environments may assign a completion state if a SCO launches and closes without explicitly reporting learner progress.

Recommended pattern:

await RevLearningRuntime.InitializeAsync(version);

runtime.MarkIncomplete();
await runtime.CommitAsync();

Then later:

runtime.MarkCompleted();
await runtime.CommitAsync();

RevLearning includes an optional compatibility setting:

Mark Incomplete On Initialize

This exists for LMS environments that require an explicit incomplete state on first launch.

Most projects should leave this disabled and manage completion directly.


Think Like A Save System

Inventory saves inventory.

Currency saves currency.

RevLearning saves learner progress.

Everything else is simply learner state:

  • Bookmarks
  • Scores
  • Completion
  • Objectives
  • Interactions
  • Suspend Data

Final Mental Model

RevLearning is not a learning system.

RevLearning is a bridge between your content and the LMS.

Your content decides what happened.

RevLearning reports it.

The LMS records it.