Learning Outcomes
Learning Outcomes
Section titled “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.
Data model
Section titled “Data model”| Table | Purpose |
|---|---|
learning_outcomes | Canonical outcome definitions (slug, title, description, evaluation kind, optional phase scope) |
learning_outcome_assignments | Polymorphic attach to StudyPlanTemplate, StudyPlanTemplateStep, and Track |
study_outcome_evaluations | Per-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).
Admin authoring
Section titled “Admin authoring”Outcomes are managed at /admin/plans/outcomes (global catalog). Assignments are configured in admin forms:
| Attachable | Admin UI | Input |
|---|---|---|
| Study plan template | Plan form → Outcomes tab | learningOutcomes on create/update plan |
| Template step (implicit) | Plan form → Steps → step editor | learningOutcomes on each step in mentoredSteps / individualSteps |
| Template step (mentor attest) | Plan form → Steps → AttestOutcomes mode | completionConfig.outcomeSlugs |
| Track | Track form → Outcomes tab | learningOutcomes 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.
Materialization
Section titled “Materialization”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_outcomesstep (OutcomeAttestationService).
GraphQL (v1)
Section titled “GraphQL (v1)”Study.outcomeEvaluations— evaluation rows for the study.LearningOutcome— slug, title, evaluation kind, phase scope.completeStudyStepacceptsoutcomeChecksfor mentor attestation steps.
Admin CRUD for outcomes and quiz metadata exists; full quiz question authoring is at /admin/quizzes/{id}.
Quizzes
Section titled “Quizzes”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.