This document explains the role of the SRS inside the Domain and the distinction between exercise scheduling, sentence progression, and session orchestration.
The exact formulas are documented in SRS model mathematics.
flowchart TD
ANSWER["Grade and timestamp"] --> EXERCISE["Exercise"]
EXERCISE --> SRS["SRSState"]
SRS --> INTERVAL["Theoretical interval"]
INTERVAL --> SCHEDULER["SessionScheduler"]
EXERCISE -. "sentence exercise" .-> SENTENCE["SentenceState"]
SRSStateEach exercise owns one SRSState. It stores the current interval, the last
review time, the learning-step index, and the parameters used by the recall
model. The next review time is derived from the last review and interval.
SRSState has two update modes:
A failed review returns the state to learning. A successful learning sequence graduates it to review mode.
The SRS computes an interval but does not decide which exercises enter a
session. Repository queries select due and new exercises, while
SessionScheduler uses the resulting state to order exercises inside the
session.
SRSConfig groups the parameters shared by every exercise in one session:
SessionController currently uses a default in-memory configuration. There is
no persisted or user-editable SRS configuration yet.
SubmittedExerciseAnswer changes progression. PreviewExerciseAnswer applies
the same interval calculation to a copy and has no side effect.
| Grade | Quality | Successful |
|---|---|---|
again |
0 | no |
hard |
2 | no |
medium |
3 | yes |
good |
4 | yes |
easy |
5 | yes |
Word exercises accept every grade. Sentence exercises deliberately expose only
again, medium, and good.
SentenceState is independent from SRSState. It records how often one
sentence has been shown, its accumulated answer score, and whether it is
currently learning. A sentence exercise uses this information to select the
least-known sentence in its group.
The group-level SRS determines when the sentence exercise is reviewed; the per-sentence state determines which example is presented.
SRS state changes only after a submitted answer. The Application then asks Persistence to store the updated exercise state together with history and the current session state. Preview operations are never persisted.
The distinction between enforced checks and assumed parameter constraints is documented in SRS validity rules.