In utils.ts, it ensures that each of the two cases is randomly assigned to be either the individual case or the group case. (Previously, Case 0 was always the individual case and Case 1 was always group.) This allows us to calculate consistency given a particular case!
It fixes a bug where people got error messages for 'not answering all the questions' when, in fact, they had.
It adds the ability for people to change their vote even after the threshold is reached (Issue #506). In my pilots today, someone gave the feedback that they clicked the wrong button, but since their vote was the vote that passed the 'success' threshold, they were not able to change their vote. This is especially true of all individual rounds (since the threshold is one, any mis-clicks cause noise in our data because they can't be un-done).
I've tested all of them extensively and they work, and since they're very small fixes, I pushed them directly into newarch.
The reason why I'm pausing this for review is that my implementation of the Polls fix introduces a small known bug:
Typically, if you don't meet the "win threshold" for a poll, there is supposed to be an error/warning that says enough people haven't come to agreement yet:
With the new code, if you reach the threshold, and then change your vote, thus making the overall vote no longer meet the threshold, then the "you haven't met the threshold" warning only appears for the person who changed their vote. It doesn't show up or update for anyone else unless they also change their votes.
For everyone else, they still see the original winner:
Previously, this wasn't an issue because once the threshold was met, further changes were frozen, so this would never happen.
The way to fix this (to my understanding) is to force the system to update the state. But no matter what I did, I got an error that said "max stack frame exceeded," so I erred on the side of updating less.
The question is: are we okay with the tradeoff between this bug and the ability to have people change their votes?
This PR accomplishes 3 things:
utils.ts
, it ensures that each of the two cases is randomly assigned to be either the individual case or the group case. (Previously, Case 0 was always the individual case and Case 1 was always group.) This allows us to calculate consistency given a particular case!I've tested all of them extensively and they work, and since they're very small fixes, I pushed them directly into newarch.
The reason why I'm pausing this for review is that my implementation of the Polls fix introduces a small known bug:
Typically, if you don't meet the "win threshold" for a poll, there is supposed to be an error/warning that says enough people haven't come to agreement yet:
With the new code, if you reach the threshold, and then change your vote, thus making the overall vote no longer meet the threshold, then the "you haven't met the threshold" warning only appears for the person who changed their vote. It doesn't show up or update for anyone else unless they also change their votes.
For everyone else, they still see the original winner:
Previously, this wasn't an issue because once the threshold was met, further changes were frozen, so this would never happen.
The way to fix this (to my understanding) is to force the system to update the state. But no matter what I did, I got an error that said "max stack frame exceeded," so I erred on the side of updating less.
The question is: are we okay with the tradeoff between this bug and the ability to have people change their votes?