Skip to content

Teacher Assessment

AssessmentSession is the teacher-facing assessment modality. It manages the question pool, assessment configuration, student assignments, and session lifecycle.

pub struct AssessmentSession {
state: State<AssessmentSessionSynced, AssessmentSessionEphemeral>,
services: Arc<AssessmentSessionServices>,
cmd_tx: CommandSender<...>,
cmd_rx: CommandReceiver<...>,
}
pub struct AssessmentSessionSynced {
pub meta: ResourceMeta,
pub config: AssessmentConfig,
pub skill_targets: Vec<String>,
pub network_index: usize,
pub curriculum_index: usize,
pub placements: Vec<ComponentPlacement<QuestionPoolPosition>>,
pub status: SessionStatus,
pub assigned_students: Vec<String>,
}

Controls assessment constraints:

pub struct AssessmentConfig {
pub duration: Option<Duration>, // overall time limit
pub question_timer: Option<Duration>, // per-question time limit
pub question_count: usize, // target number of questions
pub calculators_allowed: bool,
pub notes_allowed: bool,
pub show_answers: AnswerVisibility, // Never, AfterSubmit, AfterComplete
pub assessment_type: AssessmentType, // Practice, Test, Exam
}

QuestionPoolPosition describes a question’s metadata in the pool:

pub struct QuestionPoolPosition {
pub skill_ids: Vec<String>,
pub question_type: QuestionFormat,
pub difficulty: f32,
}
Created → Started → Paused → Finished
↑ |
└─────────┘
StatusMeaning
CreatedAssessment is being authored, not yet available to students
StartedAssessment is live, students can begin
PausedTemporarily suspended, students cannot submit
FinishedAssessment is complete, no more submissions
IntentParametersPurpose
UpdateConfigduration?, question_timer?, question_count?, calculators_allowed?, notes_allowed?, show_answers?, assessment_type?Update assessment configuration
SetSkillTargetsskill_ids: StringSet target skills (comma-separated IDs)
AddQuestionquestion_data: QuestionData, position: QuestionPoolPositionAdd a question to the pool
RemoveQuestionid: StringRemove a question by placement ID
AssignStudentsstudent_ids: StringAssign students (comma-separated IDs)
SetStatusstatus: SessionStatusChange session status
ListQuestionsList all questions with their positions
RecompileForce recompilation (hidden from AI)
pub struct AssessmentSessionMetadata {
pub question_count: usize,
pub show_answers: AnswerVisibility,
}

Hashed for the incremental compilation cache — changes to question count or answer visibility trigger full recompilation.

pub struct AssessmentSessionSnapshot {
pub id: String,
pub name: String,
pub description: Option<String>,
pub config: AssessmentConfig,
pub skill_targets: Vec<String>,
pub placements: Vec<AssessmentPoolPlacement>,
pub status: SessionStatus,
pub assigned_students: Vec<String>,
pub version: u64,
pub export_ready: bool,
}