The RQ1 primary deliverable. Reads M17 morality records and produces structured per-session aggregates: the canonical final-mode measurement (RQ1 headline), the running-mode trajectory, and four summary statistics analysts choose between. Strictly per-session; cross-session aggregation is analyst territory.
getRunningScore() returns a transient query result; running scores are
NOT auto-persisted to the moralityLog. Only recordFinalConsistency() persists.
This means M22's trajectory only populates if the orchestrator (M31 GM_Game) explicitly logs
running-mode entries via SM.appendMoralityRecord on each decision-commit.
Until that integration decision is made, M22 surfaces whatever is in the log — empty
trajectory if the orchestrator chose not to log running scores.
| # | Assertion | Result | Detail |
|---|
Drive the session lifecycle on the left; the per-session aggregate updates after each action. The trajectory chart shows running-mode consistency progression with the final-mode value (when present) drawn as a dashed reference line.
| Field | Type | Description |
|---|---|---|
| Provenance | ||
| consistencyVersion | string | Schema version of THIS aggregate (1.0) |
| computedAt | ISO 8601 UTC | When the aggregate was generated |
| Headline (RQ1 canonical) | ||
| hasComplete | boolean | TRUE iff a final-mode record exists. Filter on this for canonical RQ1 (ADR-065) |
| final | object | null | Canonical final-mode record. Its consistency is the RQ1 headline. |
| Trajectory + stats | ||
| trajectory | array | Running-mode records in chronological order |
| trajectoryStats.endpoint | number | null | Last running consistency. Fallback when final is null. |
| trajectoryStats.mean | number | null | Mean of running consistency. Smooths noise. |
| trajectoryStats.variance | number | null | Population variance. Detects unstable trajectories. |
| trajectoryStats.range | number | null | Max - min. Distribution-free noise indicator. |
| trajectoryStats.n | number | Count of running-mode records |
| Diagnostics | ||
| totalRecords | number | All morality records (running + final) |
| runningRecords | number | Count of running-mode records |
| finalRecords | number | Count of final-mode records (typically 0 or 1) |
| baselineValues | object | null | { pa, os, ei } from final or last running record's preGameValues |
M22 has the smallest API of any module so far — three entries plus the version constant.