You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
practice: preserve attempt history when questions change #72
Related to #22 and the question-versioning step in docs/product-roadmap.md.
Problem
Saved attempts contain question IDs and selected option IDs. The frontend grades them against the current question bank. Changing an answer key can change a historical result; removing an ID can cause an attempt to be discarded during validation.
Scope
Record the question-revision and compatibility strategy in an ADR, following ADR 0001.
Keep reviewed definitions in the canonical shared question data. Identify the exact revision used by an attempt; do not accept browser-supplied answer keys or scores.
Keep retired revisions available for historical review while excluding them from new sessions.
Define a compatible interpretation or migration for existing unversioned browser and backend records.
Update TypeScript validation, backend validation, persistence and import/export contracts together. Document rollout and rollback.
Preserve the 100-attempt limit, payload bounds, account isolation and generation-based reset behavior.
shared/practice/questions.json, src/features/progress/, src/features/practice/domain/session.ts, backend/src/ProCoderJi.Api/Features/Practice/PracticeQuestionBank.cs, and backend/src/ProCoderJi.Api/Features/Progress/.
Done when
Shared fixtures and both runtimes demonstrate that correcting or retiring a question preserves the original attempt's review and result. Tests cover existing unversioned records, revision mismatches, retirement, reload/export/import, cloud synchronization and reset compatibility across supported storage providers.
Activity