Skip to content

Learning Outcomes

Measurable learning outcomes describe what a disciple should demonstrate before advancing spiritual phase or completing a plan module. They are separate from rubric dimensions (study_plan_rubric_dimensions), which score note quality during study.

TablePurpose
learning_outcomesCanonical outcome definitions (slug, title, description, evaluation kind, optional phase scope)
learning_outcome_assignmentsPolymorphic attach to StudyPlanTemplate, StudyPlanTemplateStep, and Track
study_outcome_evaluationsPer-study evaluation rows materialized when a plan is applied

Evaluation kinds: quiz, mentor, self, implicit.

Phase scoping: optional from_phase / to_phase on an outcome row mark requirements for a specific promotion (e.g. Milk → Transition).

Outcomes are managed at /admin/plans/outcomes (global catalog). Assignments are configured in admin forms:

AttachableAdmin UIInput
Study plan templatePlan form → Outcomes tablearningOutcomes on create/update plan
Template step (implicit)Plan form → Steps → step editorlearningOutcomes on each step in mentoredSteps / individualSteps
Template step (mentor attest)Plan form → Steps → AttestOutcomes modecompletionConfig.outcomeSlugs
TrackTrack form → Outcomes tablearningOutcomes on create/update track

Track-level assignments appear in mentor track outcome progress rollup (TrackOutcomeProgressService) alongside outcomes attached to plan templates in the track’s modules. They do not seed per-study evaluations directly.

When a study is created from a template, LearningOutcomeMaterializer seeds study_outcome_evaluations with status pending for each assignment on that template and on its template steps.

Updates happen when:

  • A quiz question linked to an outcome is answered successfully on a passing attempt (QuizAttemptService).
  • An implicit outcome attached to a completed step is marked met (OutcomeImplicitEvaluationService).
  • A mentor attests an outcome slug on an attest_outcomes step (OutcomeAttestationService).
  • Study.outcomeEvaluations — evaluation rows for the study.
  • LearningOutcome — slug, title, evaluation kind, phase scope.
  • completeStudyStep accepts outcomeChecks for mentor attestation steps.

Admin CRUD for outcomes and quiz metadata exists; full quiz question authoring is at /admin/quizzes/{id}.

Quizzes are standalone entities (quizzes, quiz_questions, quiz_question_variants). An answer_quiz step references a quiz via completionConfig.quizId.

Questions may optionally set learning_outcome_id so a passing attempt updates the linked evaluation.

Question types in v1: multiple_choice, true_false, short_answer, fill_in_blank, essay (essay returns needs_review until graded). Quizzes with subjective questions auto-inject grade_quiz and review_quiz companion steps at materialization; AI pre-grading runs when quiz_ai.provider is configured, with optional reviewer feedback stored in quiz_ai_grading_feedback for quality statistics (adminQuizAiGradingStats).

See Phase promotion for the checkup study flow that combines quizzes and mentor attestation.