ankitects / anki

Anki's shared backend and web components, and the Qt frontend
https://apps.ankiweb.net
Other
18.26k stars 2.08k forks source link

Assigned memory state after 'set due date'+optimize incorrect #2998

Open dae opened 7 months ago

dae commented 7 months ago

If the user uses an interval like '0!' to set a card's due date, then optimizes the deck to assign new memory state, the card will receive the wrong stability.

Reported on https://forums.ankiweb.net/t/old-reviews-before-forget-used-in-fsrs-optimisation/40819/17?u=dae

abdnh commented 6 months ago

Is this still valid after https://github.com/ankitects/anki/pull/3002#issuecomment-1937464827?

dae commented 6 months ago

I think so, yes. Pick a card with a long interval, use 'set due date' to give it '0!', and then make a minor change to the FSRS weights and save. The card has an interval of 1 day but a stability of the interval before 'set due date'.

L-M-Sherlock commented 3 months ago

The card has an interval of 1 day but a stability of the interval before 'set due date'.

Is it expected? The set due date shouldn't change the stability.

L-M-Sherlock commented 3 months ago

My test result after 2b890b0eee7a9fb40a137ec2ce7aacd9044d0258

image image
user1823 commented 3 months ago

Is it expected? The set due date shouldn't change the stability.

The key thing here is "!", which means that the user wants Anki to change the interval.

If the user enters "0!", it means that they want to review the card today and decrease its interval to 1 day. In this case, my assumption would be that they forgot the card before it was due and thus, they wanted to decrease its interval so that they can learn it again. In other words, I would assume that this entry is equivalent to an "Again" entry.

But, there may be other possible use cases. Thoughts?

I would also like to add that distinguishing this entry from the entry added by "Reschedule cards on change" seems to be impossible. So, dealing with this case is going to be difficult.

L-M-Sherlock commented 3 months ago

Fine. I just hope they can press Forget instead of set due date. Or I hope we can introduce a new type of manual rescheduling:

https://supermemopedia.com/wiki/Ctrl%2BJ_vs._Ctrl%2BShift%2BR

They can press something like Review Now and then rate again.

dae commented 3 months ago

Using a separate revlog entry to distinguish them is an option in the future, as is some action that will review a card from the browse screen. The latter will likely take some work, as the reviewing process is currently connected to the current review screen state.

user1823 commented 3 months ago

Using a separate revlog entry to distinguish them is an option in the future

If this is planned, I think that doing this as early as possible would lead to the maximum benefit (by preventing the accumulation of "ambiguous" revlog entries in users' collections).

Anyway, creating a separate revlog entry should not be a difficult task apart from deciding how exactly to distinguish them.

L-M-Sherlock commented 3 months ago

Maybe we can integrate the feature Grade Now of this add-on: https://ankiweb.net/shared/info/1021636467

user1823 commented 3 months ago

Maybe we can integrate the feature Grade Now of this add-on

Yes. But, I think there is a more pressing need to use separate revlog entries for "Set Due Date" and "Reschedule cards on change".