In file https://github.com/ankitects/anki/blob/main/rslib/src/scheduler/states/learning.rs, the current behaviour is if FSRS short-term scheduler calculates an interval that is longer than half a day, it is put to review mode. Starting from line 51:
let (interval, short_term) = if let Some(states) = &ctx.fsrs_next_states {
(
states.again.interval,
ctx.fsrs_allow_short_term
&& (ctx.fsrs_short_term_with_steps_enabled || ctx.steps.is_empty())
&& states.again.interval < 0.5,
)
The same pattern appears in https://github.com/ankitects/anki/blob/main/rslib/src/scheduler/states/relearning.rs.
Correct behaviour
After I started experimenting the beta short-term FSRS scheduler, I think (Again) button should change the card into learn mode, whether or not the interval is longer or shorter than 12 hours. This important for leech threshold.
Normally, if I set a relearning step of 1d, the card will go to learn mode after a lapse. If I get it wrong again next day, it will not count as a lapse, and will not classify it as a leech no matter how many times I get it wrong in learn mode. Getting it wrong only after getting it right will count.
After I enable the beta FSRS short-term scheduler (leaving the relearning steps empty), a lapse after a lapse will count, and will lead to many cards falsely classified as leeches. I think we should only call a card a leech if we get it wrong after getting it right, to match the old learning steps behaviour.
Getting a card wrong after a lapse does not mean it’s a leech, it only means the interval was not short enough.
I don’t think I agree with your conclusion here. Leaving your relearning steps blank has always been an indication that you want to skip Relearn – including things like its protection from having the card lapse again if you get it wrong the very next time you see it. Even if you set a long step, you’re still opting-in to
When you allow FSRS to take over the near-term scheduling [which it doesn’t have a model for, so this isn’t recommended for most users] – you’re also allowing it to determine whether the card belongs in the Relearn state. FSRS has drawn that line at the 12h-mark. If it is below that and belongs in Relearn, it’s protected accordingly. If it isn’t and doesn’t, it’s a Review card and an immediate Again grade should count as another lapse. FSRS can take that into account appropriately when it schedules the card in the future.
@L.M.Sherlock – just to clarify:
When FSRS puts a card on a 12h+ “step” and it skips past the Relearn state – is that still registered/recorded as a Lapse on the Lapse counter? It certainly should be.
Deck Options - Anki Manual.
If the card’s state is “Review” and you press “Again”, it is counted as a lapse.
2 Likes
I think something has got to be wrong here. Every interval in FSRS is flexible and adaptive. What’s so special about the inflexible rigid 12 hours line?
A lapse should be counted if I memorize a fact and then I forget it. If I didn’t memorize it from the first place, why count a lapse when I say I still haven’t memorize it? My opinion is that lapses should only count when they happen after a pass grade.
I think every single time you press “Again” should count as a lapse (except maybe if it’s the first rating), since continuously failing in the learning phase is a waste of time.
Of course, the lapse counter should decrease or be reset entirely after some criterion.
Blockquote I think every single time you press “Again” should count as a lapse (except maybe if it’s the first rating), since continuously failing in the learning phase is a waste of time.
This is not the implementation currently. The algorithm is as following:
- If you have a learning step (or more): further mistakes do not count until the card graduates to review mode.
- If you do not have any learning steps (left for FSRS):
- If the interval is <12 hours: further mistakes do not count
- If the interval is >12 hours: further mistakes count (card already graduated)
Maybe suggested solution is not right, but I think something is wrong here. Leech detection should be smarter.
1 Like