Session and telemetry model
Status: accepted
The unit that all psychometrics, DIF, experiments, and reproducibility read from is
the Item Session, modelled on QTI’s itemSession / testSession.
Structure
Section titled “Structure”- Item Session — the atomic record: one learner’s engagement with one
item-version-rendition. Carries the response, score, QTI
sessionStatus, timing, and all axis coordinates + provenance:item_version_id,construct_id,locale,variant,condition,selection_policy_version,params_snapshot_ref, assignment seed,prior_state. - Test Session — a container for a sequenced test; the existing
assessment_attempttakes this role (≈ QTItestSession). - Practice Session — a lightweight container for standalone drills / CAT, so every Item Session has a sync root and owner even with no test wrapper.
Telemetry: state + append-only event log (not event-sourced)
Section titled “Telemetry: state + append-only event log (not event-sourced)”Two records, on the two sync lanes the topology already defines:
- Item Session state — sync category 4 (strong integrity, deterministic commit). The canonical current/final state.
- Interaction Event log — sync category 5 (append-only, idempotency keys). Fine -grained process data: response latency, answer revisions, hint use, time-on-task. Verbosity is configurable per Delivery Profile (offline-complete practice may log lightly; research/experiment deliveries log richly).
State is canonical; the event log is additive, not the source of truth — full event-sourcing was rejected because it fights the state/shape-based sync stack (PGlite/Electric/pgxsinkit). Capturing process data from day one is deliberate: it cannot be reconstructed retroactively, and it is the substrate for engagement, cognitive-load, and DIF research.
Consequences
Section titled “Consequences”- New tables:
item_session,practice_session,interaction_event;assessment_attemptis reframed as the Test Session container. - Secure deliveries withhold keys/provenance from the client via the existing
clientProjection.omitColumnslever. - The event log adds sync volume; its verbosity must be governed by the Delivery Profile so offline-complete content stays light.