Interval for "Hard" is longer than intervals for "Good" and "Easy"

Could somebody explain to me why the interval for answering “hard” is longer than the intervals for answering “Good” and “Easy”, and how these numbers are calculated? Thank you.

Buttons:

Review history:

Settings:

Dose this deck option apply to the card? Your `minimum interval` is 10, but the intervals of `good` and `easy` are less than 10. It is so weird.

That does look strange. If you find it happens again, please avoid reviewing the card, sync your current state to AnkiWeb, then point me to the card so I can try to reproduce the issue.

Thanks @dae . My decks are sync’ed with AnkiWeb, but I think they are private. So do I have to make it public so that you can have the access?

I’m able to access you collection for support purposes

Hi @dae, thanks. The exact same problem occurred again with the same deck. I’ve sync’ed it, and the note ID is 1658414712652, the card id is the same. The deck is the one in my previous screenshot. Please let me know if you need more info. Thank you very much.

Thanks, I was able to reproduce the problem. It’s caused by the way the Hard button works - if there are 2+ steps, it is the average of the previous step and next step. When you only have a single step, it’s 50% larger than the single step, so you end up with 11 days, which is a bit confusing.

@Rumo any thoughts on how we should address this?

Thanks @dae, but I’m even more confused now. I tried to find what you said in the document, but looks like the only relevant contents is here:

Hard repeats the current step after the first step, and is the average of Again and Good on the first step.

So in this case:

My understanding of

the average of Again and Good on the first step

is that the interval would be (7 + 8) / 2 = 7.5

Also, my understanding of:

it’s 50% larger than the single step

is that the interval would be 7 x 1.5 = 10.5, correct? Could you please point me to the documentation?

I can think of two options:

1. `Hard = (Again + Good) / 2`. This would probably be the least surprising behaviour, but complicate the code, because now the steps code needs to be aware of graduating intervals.
2. Special case `Hard = Again + 1` if `Again > DAY`.

What do you think?

@yorkz, I’m afraid the manual is a bit incomplete there. It doesn’t mention the case where there is only a single step.
Also, the interval is rounded from 10.5 to 11, because intervals with fractional days were also causing confusion. They would make the actual delay depend on the time of day you studied the card.

`Hard = (Again + Good) / 2`. This would probably be the least surprising behaviour, but complicate the code, because now the steps code needs to be aware of graduating intervals.

I think this would be more reasonable. Regarding complicating the code, I’m a little confused because my guess is that when the card is in “Relearning” state, the steps code uses “Minimum interval” not “Graduating interval” to calculate the interval when the answer is “Good” right?

Special case `Hard = Again + 1` if `Again > DAY`.

What does “Again > DAY” mean?

@yorkz, I’m afraid the manual is a bit incomplete there. It doesn’t mention the case where there is only a single step.

No matter what your decision would be regarding the preferred behavior, I think it would still be a good idea to document the current behavior, especially in this case when “single step” is actually the default configuration (the default is 10m in “Lapse”).

Yes, you’re right. I was a bit imprecise, because the relevant logic doesn’t differentiate between learning and relearning cards.

An Again interval of more than 1 day (1440 minutes).

@Rumo Thanks for the explanation. Still confused about how the interval is calculated when answering “Good” in relearning. So in my case here, this interval is 8 days. But I still don’t understand how it was calculated given that the “Minimum interval” was 10.

It’s probably fuzz.

Thanks @Rumo, but is it possible for users to turn off “fuzz” temporarily just to verify the calculated interval is actually altered by “fuzz”?

I don’t think so. But I don’t see a reason to doubt that it’s fuzz. Presumably you’re seeing Good intervals in the range of 8 to 12 days for relearning cards.

Would this mean that if I have a single relearning step of 30 minutes (so Again = 30 minutes) and Good = 1 day, Hard would be equal to ≈ 12 hours? And if Again = 30 minutes and Good = 5 days, Hard would be equal to 3 days, and so on?

If so, I would personally find it really inconvenient. The current behaviour allows me to have the Hard interval of relearning cards always set to 45 minutes; this way, if I want to, I can use the Hard button to see the same card multiple times in the same day/session without further lowering its interval, which is very useful.

Good point. We shouldn’t change the default case, where the current approach works fine.
So whatever changes we make, they should probably only change behaviour when the Again interval is above one day.

1 Like

But I don’t see a reason to doubt that it’s fuzz

Actually, not much about doubting the “fuzz” mechanism, but to help learn how the scheduling really works, especially when not everything is documented, e.g., how the interval is calculated in my case here, i.e., how the interval is calculated when answering “hard” in relearning state if there’s only one learning step. In my opinion, people would have a REALLY hard time figuring out how every aspect of the scheduling work when “fuzz” is working. Don’t get me wrong, I’m not saying that “fuzz” is bad, and instead, it’s great. I’m just saying that “fuzz” made it harder to figure out how the non documented behavior really works. Also, even if everything is well documented, being able to verify the scheduling mechanism helps our understanding and reinforce the memory on how the scheduling works.

It would be nice to avoid that if possible. The single-step special casing mainly exists so that again and hard don’t show the same number, as people think something’s wrong when that happens. I wonder if capping the synthesized hard value to 1 day greater than again might be a reasonable compromise here that doesn’t break other use cases like @jcznk’s?

1 Like

I get what you mean, but I don’t think it’s really feasible without adding more complexity for the average user, who doesn’t need this information.
Maybe this is would be a better fit for an add-on? It could show tooltips on hover explaining how a certain interval was calculated.