Make adaptive tutor difficulty and weak-area tracking operation-specific
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 6
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 7
Description
## 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.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.