Repository navigation
fix: un Fail non confirmé n'est plus jeté en silence (#186) - #209
Merged
Merged
Conversation
DireDoch
force-pushed
the
fix/186-echec-master-silencieux
branch
from
August 17, 2026 01:54
fa20d61 to
7539e3b
Compare
Le client s'arrête de taper AVANT que le serveur réponde (`doneLocal`). Les deux rejets muets de `fail_race` — Room pas sous Master, recompute qui ne voit aucune faute — laissaient donc leur auteur devant « Terminé — en attente des autres… », sans bouton, jusqu'au watchdog de 10 minutes. Seul en course, c'est la course entière qui ne se clôturait plus : le symptôme rapporté. Enregistré en abandon, comme les deux gardes de `finish_race` (#160, #163) le font déjà pour la même raison. L'échec, lui, reste refusé : rien à maquiller en faute que le serveur n'a pas confirmée. Aucune porte ouverte à la triche — c'est le pire classement possible, et abandonner est déjà à un clic.
DireDoch
force-pushed
the
fix/186-echec-master-silencieux
branch
from
August 17, 2026 02:15
7539e3b to
10aa5d9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Deuxième moitié de #186 — la moitié serveur. (La moitié client,
← menurendu pendantrunning, est partie avec #187.)Ce que j'ai trouvé en relisant le chemin complet
Le chemin nominal « seul, j'abandonne → RaceOver » est bien correct, comme le disait déjà l'issue. Mais
fail_racea deux rejets muets, et le client, lui, s'arrête de taper AVANT que le serveur réponde (doneLocal = trueposé juste avant l'envoi,ui/race.ts) :return falsereturn falseDans les deux cas le serveur ne répond rien. L'auteur du message reste devant « Terminé — en attente des autres… », sans bouton (
forfeitBtnHtml()s'efface dèsdoneLocal), jusqu'au watchdog de 10 minutes. Seul en course, c'est la course entière qui ne se clôture plus — exactement le symptôme rapporté, y compris le « même en abandonnant » : une foisdoneLocalposé,forfeit()refuse de partir.Le correctif
Enregistré en abandon, jamais laissé sans réponse. Ce n'est pas une invention : c'est la garde que
finish_raceapplique déjà deux fois pour la même raison — #160 (Finishqui ne couvre pas tout le texte) et #163 (Finishsous un mode qui ne l'a pas réclamé), toutes deux commentées « ça débloque la fin pour les autres au lieu de laisser la Room pendue jusqu'au watchdog ». Il en manquait une troisième.L'échec, lui, reste refusé : rien à maquiller en faute que le serveur n'a pas confirmée. Le partant non éligible (déjà fini, jamais parti) reste ignoré en silence — il n'y a rien à débloquer.
Aucune porte ouverte à la triche : l'abandon est le pire classement possible, et il est déjà à un clic.
Honnêteté sur le périmètre
Ceci corrige un trou confirmé par lecture et par test, mais je ne peux pas prouver que c'est celui que le rapporteur a rencontré : il faudrait la difficulté Master. #186 reste donc ouverte tant qu'il manque la capture
issue_multi_solo.pnget le Mode de jeu utilisé.Deux tests existants figeaient l'ancien contrat (« la course continue ») — mis à jour, plus un qui vérifie que la sortie est bien un
forfeitet pas unfailed_percent. 155 tests backend au vert, clippy propre.