How a result becomes official
Every result in log8 starts as a claim: somebody says they won. Here is how a claim becomes a record, and the rules that keep it honest.
Four states
A result is always in exactly one of four states: pending, official, rejected or void. There is no draft and no “accept the game before you play it”. You log a game after you have played it, and it goes straight to the people who were there.
- LoggedThe person who logs a game has approved it by sending it. Their vote is already in.
- PendingThe other players get 48 hours to approve it or disagree. Until then it counts for nothing.
- OfficialOnce enough players approve, it is a record: head-to-heads, boards, cups and career stats all move at that moment.
From pending, a result can also be rejected: the person who logged it withdraws it, or 48 hours pass. An official result only becomes void if the players agree to delete it.
Who has to agree
Only players with a log8 account vote. How many approvals a result needs depends on how many of them played:
| Players with an account | Approvals needed |
|---|---|
| 1 to 3 | All of them |
| 4 to 7 | 3 |
| 8 | 4 |
| More than 8 | Half |
Guests, the friends you add who are not on log8 yet, never vote, and nobody votes on their behalf. You can only seat guests you created yourself. A game between you and your guests is official straight away: it is your scorebook, and nobody else’s record is changing.
Disagree is a vote, not a veto
In a two-player game, Disagree means the result cannot become official. In a game of eight, one person cannot block a result that everybody else agrees on: if the others still reach the count, it stands, and the person who disagreed is told it went through anyway. Votes can be changed while the result is pending.
The person who logged a result cannot disagree with it. If they got it wrong, they withdraw it and log it again.
Nothing is approved by silence
A result nobody answers does not quietly become a record. After 48 hours it is closed as rejected, never made official. A background job checks for expired results every minute, and every read and vote checks again, so a result cannot be approved a second after its time ran out just because the job had not got to it yet.
Fixing an official result
Official results do not change under anyone’s feet. To correct one, a player asks for a change: a new score, or deleting the game. The change needs the same number of approvals the result did, the person who asked has approved it by asking, and the original stands until it goes through. There is one open change per result at a time. An approved delete voids the game and takes it back out of every stat it was added to.
Keeping it consistent
Phones lose signal mid-send, and two friends approve at the same moment more often than you would think. A few rules keep the ledger straight:
- Sending twice logs once. Every result the phone sends carries an operation id from its outbox, and the database holds that id unique. A retry after a dropped connection finds the first copy instead of making a second.
- One vote per player. The database allows one approval per player per round of voting, so a double tap is one vote.
- The last two approvals settle it once. A vote locks the result while it is counted, and the move to official only happens if the result is still pending. Whichever approval lands second finds the work already done.
- Stats follow the state. Numbers are added in the same step that makes a result official, and head-to-heads are worked out from official results only, so a pending or rejected game never shows up in a record.
The short version: nobody marks their own homework, and the server makes sure the marking only happens once.
The log8 team
