Problem
Adaptive difficulty is stored once per profile, although the product teaches six materially different operations. Performance in counting can raise multiplication difficulty, and failures in division can lower addition difficulty. weakAreas is also updated from the last six results across all operations because SessionResult does not record an operation; three correct answers in unrelated topics can remove the current topic from the weak set.
Proposed scope
- Store tutor state per profile and operation, or include operation in every result and compute topic-scoped windows.
- Define age/topic-specific difficulty bounds and promotion/demotion rules.
- Ensure hints and weak-area recovery use only relevant attempts.
- Add a persisted-state migration from the current single tutor object.
- Surface the model's current level and evidence in the parent dashboard for explainability.
Acceptance criteria
- Results in one operation do not change another operation's difficulty or weak status.
- Three correct results only clear the matching weak area.
- Switching profiles/topics restores the correct independent state.
- Existing localStorage data migrates without losing profiles or progress.
- Deterministic tests cover mixed-operation histories, threshold boundaries, hints, and migration.
Problem
Adaptive difficulty is stored once per profile, although the product teaches six materially different operations. Performance in counting can raise multiplication difficulty, and failures in division can lower addition difficulty.
weakAreasis also updated from the last six results across all operations becauseSessionResultdoes not record an operation; three correct answers in unrelated topics can remove the current topic from the weak set.Proposed scope
Acceptance criteria