This document records the non-mathematical assumptions behind Psitta’s current spaced repetition system. These are modelling and product choices, not claims that the model is cognitively optimal.
One SRSState belongs to one exercise, not to an abstract word, sentence, or
language skill. Two tasks using related content may therefore progress
independently, for example recognition and production exercises.
This local model avoids an ill-defined global notion of mastery and keeps the MVP scheduling state composable. It does not attempt to infer transfer of knowledge between exercises.
The user supplies a grade after seeing an exercise. The grade is expected to summarise correctness, hesitation, and perceived effort.
Measured response duration is not currently part of ExerciseAnswer or the SRS
formula. This is a deliberate MVP simplification; it also means the scheduler
cannot independently verify the user’s assessment.
In review mode, lateness is used only when the submitted grade is unsuccessful. A sufficiently late failure weakens or resets the long-term recall estimate before the normal grade update. A successful late review is not penalised solely because it was late.
This is a product hypothesis: observed success is considered stronger evidence than elapsed time. It is not a consequence of the exponential recall formula.
The current engine does not model:
Every answer changes only the selected exercise, its optional sentence state, its history, and the enclosing session aggregate.
A sentence exercise uses two distinct levels of progression:
SRSState schedules the exercise;SentenceState per sentence chooses the least-known example and tracks
its local exposure.After the group-level SRS phase completes, a configurable number of successful consolidation answers may still be required. This design favours repeated exposure to related sentences without creating an independent SRS schedule for every sentence instance.
The application layer chooses the session pool by loading at most
reviewCount due exercises and newCount exercises of the requested type.
Due exercises are prioritised by persisted review time; new exercises are
ordered by identifier.
Inside the session, SessionScheduler handles short learning repetitions and
randomises immediately available candidates. The resulting presentation order
is therefore not simply the repository query order.
Sessions can be paused and reconstructed. Persistence stores the session result
and minimal per-exercise resume state; it does not serialize the in-memory
Session object.
For the MVP, Psitta uses fixed global parameters and deterministic update formulas. It does not learn parameters from user history and does not implement a Bayesian or machine-learned memory model.
The following are explicitly outside the current scope:
These capabilities may be introduced later, but documentation and code should not describe them as current behaviour.