Completion and Scoring

This page covers how a session is concluded and how IMPACT classifies each decision.

Reporting completion

Call once at the end of the scenario:

using Aruvr.Sdk;

AruvrTracker.Instance.SetCompletion("passed", 100);
// status: "completed" | "passed" | "failed"
// score:  0–100, or omit / -1 for no score

Completion is sticky server-side: once sent, a later batch that omits it does not clear it. SetCompletion also forces an immediate flush, so the result is posted under the current app before any scene change.

The confidence matrix

IMPACT plots every decision on two axes: right/wrong and fast/slow.

Right vs wrong — from polarity

Fast vs slow — relative, not a fixed time

A decision is fast if its latency is below the median latency of all attempts on that same decision point, and slow otherwise. The latency is the time between Arm() and Fire().

Because it is relative:

There is no fixed “X seconds = fast” you can aim for; a trainee is fast if quicker than the median run on that decision point.

The four quadrants

Fast Slow
Right Confident — operational Uncertain — knows it, needs pace
Wrong Reckless — fast and wrong, highest risk Struggling — needs supervision

Competency thresholds

Each competency has an operational threshold (e.g. 80%). IMPACT compares a learner’s accuracy on that competency to the threshold to flag who is below the operational bar.

Worked example

A fire scenario tracks two competencies, each with a positive/negative pair:

Flow:

  1. When the emergency appears, Arm() all four trackers.
  2. When the trainee picks the correct extinguisher, fire the positive selection tracker; if they pick the wrong one, fire the negative.
  3. When the fire is out, fire the positive suppression tracker; if the run ends without it, fire the negative.
  4. Report SetCompletion("passed", score) or ("failed", score).

A trainee who acts correctly and quickly lands in Confident on both competencies; one who grabs the wrong extinguisher immediately lands in Reckless on selection.