Skip to documentation

Assessment Sessions (Assessment Units)

Last Updated: 2026-10-09 | For: Teachers & Content Creators | Level: Advanced


What is an Assessment Session?

An assessment session is a unit with a fixed, predetermined sequence of questions. Unlike learning sessions (which adapt to the student), assessment sessions present questions in a controlled order, making them ideal for:

Important: Assessment sessions use trial types (s, d, t, h, m, n) to control how each question is presented. See the Trial Types Reference for complete details on each type.

  • Pre-tests and post-tests
  • Standardized quizzes and exams
  • Factorial experiment designs
  • Surveys and questionnaires
  • Research studies requiring consistent ordering

When to Use Assessment Sessions

Use assessment sessions for:

  • Tests and quizzes with specific question order
  • Pre/post assessments
  • Controlled experiments
  • Standardized evaluations
  • Surveys

Don't use assessment sessions for:

  • Adaptive practice (use learning sessions instead)
  • Long-term spaced repetition
  • Personalized learning paths

Assessment Session Configuration

Assessment sessions are configured with the assessmentsession object in a unit. This object defines how the fixed schedule is generated.

Prerequisites: understand clusterlist ranges in Stimulus Files and trial mode/type codes in Trial Types Reference.

A unit can include unitinstructions before the fixed schedule. For instructions without assessment questions, use an instruction-only unit with no assessmentsession object.

Resume and Persistence Behavior

Assessment sessions use a fixed schedule, but resume is still history-first.

  • The schedule artifact is created once for the unit and remains the source for clusterIndex, whichStim, and testType.
  • On resume, the next assessment question is derived from the number of completed assessment history rows plus that schedule artifact.
  • MoFaCTS does not need to persist ordinary per-question pointer state after each displayed assessment question.
  • If a question was displayed but not answered before reload, there is no new committed history, so resume returns to that same derived schedule position.

Field reference (assessmentsession)

Field Type Required Description
conditiontemplatesbygroup object Yes Core schedule template definition grouped by condition labels.
initialpositions string Yes Space-delimited placeholders (for example A_1 B_1) that define template start positions and act as a schedule consistency check.
randomizegroups boolean/string Optional Controls randomization within each group template. Prefer explicit schedule definitions. Alias: randomizeconditionsbygroup.
clusterlist string Yes Sequential cluster ranges used by this unit (for example 0-6 12-17). Reversed ranges are invalid.
permutefinalresult string Optional Applies final partitioned shuffling across output index ranges (for example 0-3 4-7 8-10).
assignrandomclusters boolean/string Optional Re-randomizes cluster assignment before schedule build, useful for independent ordering across units.
randomchoices number/string Optional Number of random item choices used when r appears in group template entries.

Field reference (conditiontemplatesbygroup)

Field Type Required Description
groupnames string Yes Space-separated single-letter group labels (for example A B C).
clustersrepeated string Yes Space-separated integers, one per group, for cluster repeats per template.
templatesrepeated string Yes Space-separated integers, one per group, for template repetitions. Formerly grouptemplatenum.
group array of strings Yes Per-group template definitions using a,b,c,d tokens: a = stim index or r; b = display mode; c = trial type; d = zero-based position offset.

Worked interpretation example

Template entry: 2,f,d,0 2,f,d,18 2,f,d,36

  • 2 selects the third stim in the cluster (zero-based).
  • f uses fill-in display mode.
  • d uses test-with-feedback trial type.
  • Offsets 0, 18, 36 place three trials 18 positions apart.
  • This pattern requires matching slots in initialpositions (for example X_1 X_2 X_3).

Example of assessment session unit:

{
				"unitname": "Posttest",
				"unitinstructions": "<p>Thank you for continuing with the experiment. You have now reached the posttest.<br><br> In the posttest, you will be presented with the 117 Chinese character components. Some of these you may not have seen in session 1 since not all items are introduced for all participants. Your task is to type the corresponding English meaning for each component. The timing and feedback will follow the same format as Part 1.</p>",
				"deliverySettings": {
					"drill": "10000",
					"purestudy": "16000",
					"skipstudy": "false",
					"reviewstudy": "6000",
					"correctprompt": "1000",
					"fontsize": "24"
				},
				"assessmentsession": {
					"conditiontemplatesbygroup": {
						"groupnames": "A B C",
						"clustersrepeated": "1 1 1",
						"templatesrepeated": "39 39 39",
						"group": [
						"0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0","0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0","0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0 0,f,d,0"
						]
						},
					"initialpositions": "A_1 A_2 A_3 A_4 A_5 A_6 A_7 A_8 A_9 A_10 A_11 A_12 A_13 A_14 A_15 A_16 A_17 A_18 A_19 A_20 A_21 A_22 A_23 A_24 A_25 A_26 A_27 A_28 A_29 A_30 A_31 A_32 A_33 A_34 A_35 A_36 A_37 A_38 A_39 B_1 B_2 B_3 B_4 B_5 B_6 B_7 B_8 B_9 B_10 B_11 B_12 B_13 B_14 B_15 B_16 B_17 B_18 B_19 B_20 B_21 B_22 B_23 B_24 B_25 B_26 B_27 B_28 B_29 B_30 B_31 B_32 B_33 B_34 B_35 B_36 B_37 B_38 B_39 C_1 C_2 C_3 C_4 C_5 C_6 C_7 C_8 C_9 C_10 C_11 C_12 C_13 C_14 C_15 C_16 C_17 C_18 C_19 C_20 C_21 C_22 C_23 C_24 C_25 C_26 C_27 C_28 C_29 C_30 C_31 C_32 C_33 C_34 C_35 C_36 C_37 C_38 C_39",
					"randomizegroups": "false",
					"clusterlist": "0-116",
					"permutefinalresult": "0-116",
					"assignrandomclusters": "false"
				}
			}

See Also

Operational Validation

  1. Validate schedule output against expected initialpositions.
  2. Validate condition labels in Data Output for condition-root deployments.
  3. Validate class/assignment context before running high-stakes assessments.

Answer history and later practice

Each assessment answer is saved once as a schedule record with modelEvidenceSource: assessment. Adaptive practice and shared-course models can subsequently read that original answer. This does not make assessment delivery adaptive. The existing item, timing, outcome, lesson and course boundaries still apply.

Earlier versions also wrote a redundant model record for each assessment answer. That exact model / assessment combination remains stored for archival purposes but is excluded from model loading, operational reports, crowd counts and ordinary TSV exports. A read-only pairing audit is required before deployment; missing or ambiguous originals block rollout. Existing learner records are not deleted or rewritten. See the application repository docs/history.md for the audit, testing and release procedure.