Skip to content

0059. Personal remediations: learner-scoped, grounded, cached per struggle pattern

Generated from docs/decisions/0059-personal-remediations.md

  • Status: Proposed
  • Date: 2026-10-09
  • Plan: docs/plans/phase-4.md (section 7.2)

When a learner struggles with an element, the spec asks for a personal remediation (a simpler explanation, an example or practice) that is grounded only in the course’s cited sources, stored as a learner-scoped variant and not as a change to the course, and cached for learners with the same struggle pattern to control cost.

  1. Remediation documents in the learner catalogue, generated by task remediation from the element’s cited fragments and a generic struggle description, cached by (element, applied version, rule, kind, language, pattern detail).
  2. Generate per learner without caching.
  3. Ask the author to pre-write remediations.

Option 1, for courses built with the Course Builder:

  • Validation. Citations must be a subset of the provided fragments, then the markup check, the quiz support check and the grounding task. Two failures mean no remediation is shown.
  • Data minimisation. No learner identity, history or free text reaches the model; ai_calls.user_id is null.
  • Assignments. Record shown, feedback and hide.
  • Retirement. Remediations retire when the element’s applied version changes.
  • Components. Worked example, practice question, elaborative question and Feynman reflection. Reflection feedback sends only the learner’s explicitly submitted text.
  • Good: cheap when struggles repeat, cited like all course content, and the shared course is never changed.
  • Bad: not available for courses without a builder session; nudges still work for those.