Skip to content

T-ZP78-learning-p4-learner-state-notes

State: planning/proposed · Impact: high · Complexity: medium

Record what the learner did without adding platform code. Progress, exercise attempts and spaced-repetition card state live as notes in a learner vault, written through the native frontmatter and doc APIs. This is the Obsidian-plugin model D-LIRI chose, and it is what makes the hosted version one learner vault per person.

LocationRole today
solutions/determined/crates/determined-platform/src/api/v1/vault_notes.rswrite_frontmatter_fields with etag CAS, create_doc, read_doc, get_changes
solutions/augmented/apps/vimit/src-astro/src/stores/scheduler.tsThe spaced-repetition scheduler, unit-tested
solutions/augmented/apps/vimit/src-astro/src/stores/progress.tsModule completion and position, in localStorage
solutions/augmented/apps/vimit/src-astro/src/composables/useReviewSession.tsThe review session flow
solutions/augmented/apps/vimit/src-astro/src/lib/review/cloze-parser.tsCloze parsing, tested
solutions/determined/docs/decisions/D-0018-determined-state-plane.mdNo application dot-directory in a content vault

A learner vault, registered in the roster like any other, holding:

<book id>/progress.md frontmatter: learner_id, book_id, modules {id: status}, position
<book id>/cards.md frontmatter: per-card scheduling state
<book id>/attempts.md append-only body: one line per attempt

Keys are the book id from book.md, never the roster’s vault id, so a re-downloaded book keeps its progress. Every note carries learner_id from day one. The scheduler, review session and cloze parser port as pure TypeScript; the experience reads one cards.md per session and writes it back with CAS. Book-model contracts cover the three kinds.

  1. Add the three learner note kinds to book-model.
  2. A useLearnerVault composable: find or create the learner vault in scope, read and CAS-write the three notes per book.
  3. Port scheduler, review session, cloze parser and their tests.
  4. Runners emit attempts; the experience appends them and updates progress.
  5. Review page: cards due now across the books in scope.
AreaNote
solutions/determined/packages/book-model/Learner note kinds
solutions/determined/experiences/learning/Learner vault composable, review page, progress chrome
  • AC-1: Completing a module and closing the app persists; reopening shows the position and status.
  • AC-2: A review session schedules the same intervals vimit’s tests assert.
  • AC-3: Two windows editing progress do not lose a write; the second sees the CAS conflict and reloads.
  • AC-4: No file under solutions/determined/crates/ changes.
  • Identity. The learner id is a setting until the hosted phase.
  • T-J3NW for attempts to record.
  • D-LIRI.

T-J3NW


← Back to Tasks