Can we get a setting to cap promotions?

I haven’t reviewed my items in ages, but I’m back at it and looking to clear my queue this week but I noticed I’m getting a load of items going to “master” rank meaning I’ll never see them again… except half of time my answers are just wild guesses that I’m not actually sure about … and then I get them right and this happens:

That doesn’t feel right. I get that I haven’t reviewed this for months so it’s promoted it based on the fact I got it right after 4-5 months … but also this answer I was mostly just lucky on rather than because I knew it.

Trying to manually fail each item once so it can not get mega un-earned promotions is tedious and error prone. Would love a setting that is just “Cap SRS gains to 300% previous interval” or similar. I don’t mind going from 2 week interval to 6 weeks. But going from a 4 day interval to almost an 8 month interval seems a bit much. Same for the ones going from a month or two all the way to master never to be seen again.

This looks like an error, I don’t think you should be able to from novice II to expert II in one go as shown in the screenshot. Same with going to master from what sounds like maybe journeyman. I’ve never seen this with my reviews.

But also if you’re able to “wild guess” correct pinyin with tone and meaning, perhaps you have actually internalized more than you realize!

1 Like

If you look at the dates, it’s not an error. I previously studied this card in late Dec 2025, so it’s been ~4 months since I reviewed it. With SM-2 (the SRS algorithm HH uses) you basically double the time (it’s not exactly that but it’s close enough to roughly estimate it). But it’s not the previously DUE time, it’s the time you actually took - so this card was due in 4 days, but I took 4 months off. So SM-2 takes that ~4 months (Dec to May), doubles that for the next interval so it’s now ~8 months. Expert II is a card with up to 8 month interval so yeah that seems right.

Now some of them I do still know now. While I stopped HH reviews, I didn’t stop reading DuChinese etc so I def know some of them. But others I’m legit guessing and when that guess lands something into Mastered where it’ll literally never show up again. The card above will come around again … the ones booted right into Mastered won’t - that’s when I get scared :sweat_smile:

Oh I see, I’ve never taken so much time off so I haven’t seen big jumps like that. I agree in your case you shouldn’t be able to go straight to Mastered like that. You could fully reset the card but that creates a different problem. Maybe another way to do it is just allow users to override the level of the card to whatever they feel is appropriate, bumping it back down to expert I instead of having to start fresh or have it “burned” in master.

1 Like

Yeah, having an unbounded multiplier through “overdue days” doesn’t seem actually all that helpful, especially in these cases. Even if you manage to guess correctly I think it negates the power of the “repetition” which is being able to guess it correctly a little more than a few times consistently over a long period, instead of leaving and coming back and thus only have to guess one or two more times where the next interval may be too long for recall, thus ruining the queue.

I’ve updated the SRS algorithm to cap the days overdue. With the new caps with some napkin math you’ll jump at most up two stages if you max out the days overdue. Hopefully this is what you have in mind! You can see the updated algorithm in the docs.

We can discuss the algorithm further of course. After all, the main reason “overdue_days” exists is managing review capacity, and at the end of the day less reviews the better :sweat_smile: But being able to jump two stages is still pretty sizable, considering the distance between each stage is a multiple of two, generally. But maybe the long term play is looking into FSRS instead.

4 Likes

It’s EXACTLY what I had in mind!! Thanks heaps for the very quick turn around.

Now … what’s your mailing address so I can send bribes to it to get that 0.5 in the fail case changed to a 0.25? I’d like it so that if I fail I need 2 successful reviews to get back where I was not just 1. This way a “fail - pass - fail - pass - fail - pass” cycle means interval doesn’t bounce between 1 month and then 2 months without ever really resolving.

2 Likes

That makes a lot of sense. The oscillating between the one and two months can be a hard plateau and everytime you get it wrong with the current SRS algorithm you only backtrack a little more each time.

But I think a blanket change from 0.5 to 0.25 may be too “punishing” and drastically increase review load for all users. It should probably be a setting, but I’m also trying to avoid SRS settings for the sake of simplicity :sweat_smile: though I may need to concede

It looks like FSRS solves this SM-2 shortcoming. Each calculation considers the item’s review history as a whole, so if you keep oscillating the intervals shrink more in response. I think that’s pretty elegant compared to moving static weights around in SM-2 :slight_smile: I wonder if there are people who still swear by SM-2 though.

We could somehow integrate the item history into our current algorithm, too, as a stopgap. Review history could influence the * 1.8 multiplier with each fail so gaps are closed between… but it seems better at that point to try out FSRS instead :thinking:

2 Likes

I keep thinking about this and I’m now solidly believe (based on pure conjecture from a sample size of 1) that a 0.25 multiplier would result in LESS reviews overall not more. Right now the “I sort of know it” cards aren’t ever punished hard as you say. Except the fact they’re NOT punished leads to more reviews down the line since those cards are never addressed/fixed. Look at what I just found today (for 戊):

Apparently 戊 , 戈 and 戋 are components I constantly mix up and get right about 50% of the time. You can see from this graph that I get it right enough that the system never makes me drill it so it often stays at 1 month interval despite the fact I clearly don’t really know it.

If instead of the above, that first drop in April took it back to a really short interval, I might have drilled it properly and then saved all that July-November yo-yo of reviews. Being forced to confront the fact I actually don’t know this early would have (probably) lead to less reviews overall.

But not all fails are like this, some are just a 1 off etc. So instead of going global 0.25 (or FSRS), to keep 0.5 for a “you only got it wrong once” but then punish if you keep not getting it, I propose this:

if total_incorrect > 0:
    recentIncorrects = GetNumberOfIncorrectsInLastFiveReviews()
    multiplier = Math.pow(0.5, recentIncorrects)
    next_interval = interval * multiplier

If in the last 5 reviews you only got it wrong once, then multiplier stays at 0.5 (0.5 to power of 1 is 0.5). No change to review loads.

But if your reviews went “right, wrong, right, wrong” then second incorrect makes that multiplier 0.25 (and a third would make it 0.125 and so on). The more times you get it wrong in close succession, the harsher you’re penalised. Hopefully forcing you to drill half-known cards, without changing review loads globally.

3 Likes

I’m curious how FSRS stores the difficulty and how it affects the multiplier in comparison, but I actually quite like this multiplier which accounts for recent failures.

What’s nice about this pow approach is that it can be mostly unnoticeable to those who have a slip up now and then. Another nice thing about this change is that it’s only one line compared to onboarding FSRS.

I’ll give it some thought! Because I do think you’re right that some cards can stay in this forever limbo and there’s not an elegant solution for it at this time :frowning: while I was worried about “dramatically increasing reviews” it would also suck to have oscillating items without resolution…

Doooo iiiiiit! You know you want to - it’ll be great. Hell you can even put it on a beta checkbox switch if you’re worried.

As much as I like it, FSRS seems like a really big effort to use. It also seems somewhat black-boxy from what I’ve read. It wasn’t designed, so much as grown from simulations so it isn’t quite as clear exactly what it’s doing and why. And then you have to worry about how to integrate the optimisation step which is the thing that actually makes it good. Don’t get me wrong, I’d love you to do a full integration of FSRS, but not at the expense of everything else. SM-2 isn’t horrible - Anki worked great for 20 years pre-FSRS.

IMHO Do the power change to help catch repeated errors, then move on to updating to the HSK v3.1, adding leech specific study options, visually similar comparison cards, real queue system so we can target words instead of characters and all the other good suggestions … then once that’s all done FSRS might start being worth it.

2 Likes

oohhhhhhhh, so if i set a limit for daily reviews, whenever i finally do get to review a character, it will be promoted according to how long it has actually been since i last reviewed it?
I thought i would only be promoted one level up, ever after any review.

1 Like

After weighing a few other options to solve the oscillation problem[1] and also the slow descent problem[2] I’ve updated the algorithm to now do this. It seems like the least invasive option while also surfacing cards one is having trouble with :slight_smile:


  1. Rising and falling between month intervals and thus never ascending to Expert stage nor sincerely studied ↩︎

  2. An item in the Expert stages but mostly forgotten would take several review sessions to reach Novice to sincerely study ↩︎

2 Likes

Yes :slight_smile: though only if the review was correctly answered.

One way to possibly improve the algorithm is also consider days overdue for incorrect answers.
Though I think the main place where that’d be useful is for someone returning after awhile :thinking:

1 Like

Success!

I love it! :heart_eyes:

1 Like

I have definitely benefited from this change over the past week and a half. It’s helped highlight for me a number of items that I struggled with more than I thought, and giving them another round of those early daily/near-daily exposures has helped. In particular I’m finding that I’m able to notice when I’m having trouble with confusing similar characters more quickly because this update brought related characters all crashing back down.

2 Likes

Is this what pushed my number of daily reviews up quiet a bit? :smiley:

2 Likes

It definitely helps with another weakpoint of the prior SRS algorithm, which is increasing early exposure if necessary. It seems like it takes a few repetitions before feeling comfortable with the associations to a character if one is using the mnemonics, or even just plain bruteforcing :thinking:

Yes :sweat_smile: though I think knowing which items aren’t sticking are advantageous

I think the main thing remaining is some sort of story around leeches with this increase of load; some items may just cycle as Novice indefinitely and take up review slots.

At the same time, when using leeches + suspension long ago, I never actually bothered to “unleech” them… so I’m not sure if suspension is the correct path for handling leeches :thinking: if it is, then having some sort of convenient interface to process the leeches would be nice