Hi,
Consider this scenario: two cards, one aged 3 years and another just 3 months old, both failing their review for the 8th time today and suspended due to the leech mechanism. It’s plausible that they don’t share the same level of forgetfulness. The older card might have a more deeply ingrained memory, while the newer one could indeed be a more likely candidate for leech status.
Shouldn’t mature cards that stumble occasionally get a bit of leniency? After all, the ability to recall a card isn’t strictly determined by the card itself. Factors like your environment and psychological status on a given day can contribute to the fact that you may forget a card even though you know it well. For this reason, all cards will eventually reach a leech state; it’s only a matter of time.
However, it’s not ideal for a mature card to be in a leech state. If you use suspend after leech, you have to reactivate them periodically and make efforts to adjust the fields, which are often unnecessary. Additionally, during the time it was suspended, you don’t get to review them anymore. The worst thing is that to prevent such cards from being sent to leech, users may have the urge (or get habituated) to dishonestly report “hard” instead of “again,” even though they can’t recall.
I propose a simple and effective tweak - let’s count the reviews flunked for leeching differently. Instead of counting all flunked reviews without discrimination, let’s only consider flunked reviews over a specified time period, say 6 months or 1 year. This way, we give mature cards a chance to recover from an occasional slip without immediately branding them as leeches.
Please note that this proposed mechanism only targets what counts as a leech. The flunked review should still reschedule the card as usual, giving you a chance to re-learn it, and punish you by finally sending it to leech if you still repeatedly fails to recall it.
This mechanism is backward compatible - the current implementation is a special case with an infinite “leech forgiving duration” - we can make that the default. Also, note that it is orthogonal to the scheduling logic; only the leech check logic needs to change.
I previously created an addon that changes this behavior - search for “Forgiving Leech” in the shared addons list. It has been working great for me. However, the monkey patch approach to the scheduler module no longer works for the v3 scheduler. That’s why I’m suggesting that perhaps this mechanism can be incorporated into part of the scheduler.