L'étape 1 doit permettre à un joueur de club de comprendre ses erreurs (cadrage, ADR 0011).
Depuis 1d, chaque décision du joueur porte un conseil du moteur. Mais la partie finie s'arrêtait sur un panneau qui ne donnait que le score. Rien ne disait quel coup avait coûté la partie, ni si les dés avaient pesé plus que le jeu. Les parties jouées avant 1d n'avaient aucune analyse.
Quoi
Le bilan (#/parties/<id>/bilan). À la fin d'une partie, dès que l'analyse est prête, il remplace le panneau de fin. Il donne :
l'issue de la partie ;
une phrase du maître sur ce qui a fait la différence ;
les décisions du joueur, comptées par appréciation ;
son jeu traduit en niveau, et la chance de ses dés ;
le coup à revoir, sur un mini-plateau.
L'analyse (#/parties/<id>/analyse/<coup>). Elle s'ouvre par « Voir l'analyse » et contient :
la courbe des chances de gagner en %, parcourue du doigt ;
un visualiseur « Votre coup » / « Le coup du maître » ;
« Rejouer d'ici », qui crée une branche et laisse l'original intact ;
la liste filtrable des coups à revoir.
Ailleurs :
« Mes parties » donne accès au bilan de chaque partie finie ;
une ancienne partie est analysée à son ouverture ;
une seule notation, celle du moteur, partout : bilan, visualiseur, liste, feuille du maître.
Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage.
Ce qui est analysé. Le domaine (analysis/game-analysis.ts) liste ce qui manque à une partie :
les décisions des deux camps ;
la chance de chaque jet ;
les chances de gagner après chaque coup.
Comment c'est calculé.ui/review-runner.ts fait ces analyses une à une, sur le second moteur, celui des conseils. Elles sont annulables et rangées au fur et à mesure dans un champ facultatif et versionné du journal, review. Sa migration est testée, et l'ADR 0007 est amendé.
Les chiffres reprennent gnubg 1.08.003, avec les sources citées dans le code :
getMWCFromError, updateStatcontext, arThrsRating, getLuckRating et arLuckAdj, dans analysis.c ;
isCloseCubedecision, dans eval.c.
Les chances de gagner viennent de Engine.evaluate, branché sur la commande eval existante : le moteur n'est pas recompilé. La courbe est un SVG fait main, sans dépendance. L'ADR 0013 est amendé pour les deux nouvelles adresses.
Recette design. Trois corrections ont été demandées puis validées :
B1 : le titre donne toujours l'issue, par exemple « L'ordinateur gagne la partie simple », puis « Vous avez passé son double : 1 point pour lui. » ;
B2 : une seule notation, celle du moteur ;
B3 : en paysage, des boutons de 48 px. La recette automatique vérifie désormais qu'aucun bouton ne dépasse 56 px.
Un défaut trouvé à la vérification finale. Pendant que l'analyse continuait en arrière-plan, le bilan affiché se reconstruisait à chaque résultat rangé, et son mini-plateau clignotait. Le bilan ne se redessine plus que si ce qu'il montre change.
Vérification par la session principale et l'agent :
make lint : aucun problème ;
make test : 10/10, dont 45 scénarios (nouveau revoir-ma-partie.feature) ;
make test-browser : complet, deux fois de suite, dans Chromium et Firefox, avec le nouveau tests/browser/bilan.mjs.
Choix et compromis
Noms des classements. Les six classements de gnubg prennent, dans l'ordre, les noms des niveaux de l'ordinateur : Advanced devient « Intermédiaire », Master devient « Avancé ». La table est dans docs/glossaire/taux-d-erreur.md. À valider par Pierre.
Jauge des dés. Elle suit le « Luck rating » de gnubg, qui ne regarde que les dés du joueur. La phrase du bilan, elle, suit le résultat corrigé de la chance des deux camps. En match, cette correction est comptée en points, une approximation assumée.
Jet sans doubler. Il n'entre dans le décompte que s'il était une faute.
Bilan et retour. Le bilan est empilé au-dessus de #/ : le retour du téléphone ramène à la partie.
Nouvelles phrases. Elles sont dans docs/maitre/phrases.md, au cadre validé par Pierre : bilan.jeu.*, bilan.des.*, bilan.aucun-coup. Elles sont à relire.
Risques et déploiement
Analyse en arrière-plan. L'analyse d'une longue partie occupe le second moteur un moment. Elle s'arrête à toute nouvelle partie, pour ne pas retarder le conseil du maître, et ne redessine plus le bilan affiché.
Format du journal. Le champ review est facultatif. Un journal d'avant 1e se reprend tel quel, et le schéma IndexedDB ne change pas.
Retour arrière. Annuler la fusion : le champ review sera simplement ignoré.
Comment vérifier
make lint && make test && make test-browser
SCRIPTS=bilan make test-browser # seul parcours bilan et analyse
ls build/browser-shots/bilan/
Après publication :
Ouvrir #/position/BQAACAIAAAAAAA, puis « Jouer à partir d'ici ».
Lancer les dés, jouer 6/5 5/off, puis passer le double de l'ordinateur.
Le bilan nomme 6/off comme grosse erreur, avec « J'aurais joué 6/off 1/off ».
Toucher « Revoir ce coup », puis « Rejouer d'ici ».
Hors périmètre
« Demander à une IA » : son emplacement est réservé, le bouton arrive avec 1f.
Défaut repéré dans la saisie : avec 6-1 pendant la sortie des pions, saisir 6/off avant 1/off est refusé, alors que 1/off puis 6/off est accepté. Il est traité à part, dans une MR de corrections.
Notation sur l'écran de jeu : la ligne « L'ordinateur a joué … » écrit encore le coup à partir des demi-coups. Même MR de corrections.
## Pourquoi
L'étape 1 doit permettre à un joueur de club de comprendre ses erreurs (cadrage, ADR 0011).
Depuis 1d, chaque décision du joueur porte un conseil du moteur. Mais la partie finie s'arrêtait sur un panneau qui ne donnait que le score. Rien ne disait quel coup avait coûté la partie, ni si les dés avaient pesé plus que le jeu. Les parties jouées avant 1d n'avaient aucune analyse.
## Quoi
**Le bilan** (`#/parties/<id>/bilan`). À la fin d'une partie, dès que l'analyse est prête, il remplace le panneau de fin. Il donne :
- l'issue de la partie ;
- une phrase du maître sur ce qui a fait la différence ;
- les décisions du joueur, comptées par appréciation ;
- son jeu traduit en niveau, et la chance de ses dés ;
- le coup à revoir, sur un mini-plateau.
**L'analyse** (`#/parties/<id>/analyse/<coup>`). Elle s'ouvre par « Voir l'analyse » et contient :
- la courbe des chances de gagner en %, parcourue du doigt ;
- un visualiseur « Votre coup » / « Le coup du maître » ;
- « Rejouer d'ici », qui crée une branche et laisse l'original intact ;
- la liste filtrable des coups à revoir.
**Ailleurs** :
- « Mes parties » donne accès au bilan de chaque partie finie ;
- une ancienne partie est analysée à son ouverture ;
- une seule notation, celle du moteur, partout : bilan, visualiseur, liste, feuille du maître.
## Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage.
**Ce qui est analysé.** Le domaine (`analysis/game-analysis.ts`) liste ce qui manque à une partie :
- les décisions des deux camps ;
- la chance de chaque jet ;
- les chances de gagner après chaque coup.
**Comment c'est calculé.** `ui/review-runner.ts` fait ces analyses une à une, sur le second moteur, celui des conseils. Elles sont annulables et rangées au fur et à mesure dans un champ facultatif et versionné du journal, `review`. Sa migration est testée, et l'ADR 0007 est amendé.
Les chiffres reprennent gnubg 1.08.003, avec les sources citées dans le code :
- `getMWCFromError`, `updateStatcontext`, `arThrsRating`, `getLuckRating` et `arLuckAdj`, dans analysis.c ;
- `isCloseCubedecision`, dans eval.c.
Les chances de gagner viennent de `Engine.evaluate`, branché sur la commande `eval` existante : le moteur n'est pas recompilé. La courbe est un SVG fait main, sans dépendance. L'ADR 0013 est amendé pour les deux nouvelles adresses.
**Recette design.** Trois corrections ont été demandées puis validées :
- B1 : le titre donne toujours l'issue, par exemple « L'ordinateur gagne la partie simple », puis « Vous avez passé son double : 1 point pour lui. » ;
- B2 : une seule notation, celle du moteur ;
- B3 : en paysage, des boutons de 48 px. La recette automatique vérifie désormais qu'aucun bouton ne dépasse 56 px.
**Un défaut trouvé à la vérification finale.** Pendant que l'analyse continuait en arrière-plan, le bilan affiché se reconstruisait à chaque résultat rangé, et son mini-plateau clignotait. Le bilan ne se redessine plus que si ce qu'il montre change.
**Vérification par la session principale et l'agent** :
- `make lint` : aucun problème ;
- `make test` : 10/10, dont 45 scénarios (nouveau `revoir-ma-partie.feature`) ;
- `make test-browser` : complet, deux fois de suite, dans Chromium et Firefox, avec le nouveau `tests/browser/bilan.mjs`.
## Choix et compromis
- **Noms des classements.** Les six classements de gnubg prennent, dans l'ordre, les noms des niveaux de l'ordinateur : Advanced devient « Intermédiaire », Master devient « Avancé ». La table est dans `docs/glossaire/taux-d-erreur.md`. À valider par Pierre.
- **Jauge des dés.** Elle suit le « Luck rating » de gnubg, qui ne regarde que les dés du joueur. La phrase du bilan, elle, suit le résultat corrigé de la chance des deux camps. En match, cette correction est comptée en points, une approximation assumée.
- **Jet sans doubler.** Il n'entre dans le décompte que s'il était une faute.
- **Bilan et retour.** Le bilan est empilé au-dessus de `#/` : le retour du téléphone ramène à la partie.
- **Nouvelles phrases.** Elles sont dans `docs/maitre/phrases.md`, au cadre validé par Pierre : `bilan.jeu.*`, `bilan.des.*`, `bilan.aucun-coup`. Elles sont à relire.
## Risques et déploiement
- **Analyse en arrière-plan.** L'analyse d'une longue partie occupe le second moteur un moment. Elle s'arrête à toute nouvelle partie, pour ne pas retarder le conseil du maître, et ne redessine plus le bilan affiché.
- **Format du journal.** Le champ `review` est facultatif. Un journal d'avant 1e se reprend tel quel, et le schéma IndexedDB ne change pas.
- **Retour arrière.** Annuler la fusion : le champ `review` sera simplement ignoré.
## Comment vérifier
```
make lint && make test && make test-browser
SCRIPTS=bilan make test-browser # seul parcours bilan et analyse
ls build/browser-shots/bilan/
```
Après publication :
1. Ouvrir `#/position/BQAACAIAAAAAAA`, puis « Jouer à partir d'ici ».
2. Lancer les dés, jouer 6/5 5/off, puis passer le double de l'ordinateur.
3. Le bilan nomme 6/off comme grosse erreur, avec « J'aurais joué 6/off 1/off ».
4. Toucher « Revoir ce coup », puis « Rejouer d'ici ».
## Hors périmètre
- **« Demander à une IA »** : son emplacement est réservé, le bouton arrive avec 1f.
- **Défaut repéré dans la saisie** : avec 6-1 pendant la sortie des pions, saisir 6/off avant 1/off est refusé, alors que 1/off puis 6/off est accepté. Il est traité à part, dans une MR de corrections.
- **Notation sur l'écran de jeu** : la ligne « L'ordinateur a joué … » écrit encore le coup à partir des demi-coups. Même MR de corrections.
Generated with Claude Code https://claude.com/claude-code
Les analyses de l'ordinateur et les chances de gagner, rangées en
arrière-plan pour l'écran d'analyse, redessinaient tout le bilan, et son
mini-plateau disparaissait le temps d'être redessiné.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Pourquoi
L'étape 1 doit permettre à un joueur de club de comprendre ses erreurs (cadrage, ADR 0011).
Depuis 1d, chaque décision du joueur porte un conseil du moteur. Mais la partie finie s'arrêtait sur un panneau qui ne donnait que le score. Rien ne disait quel coup avait coûté la partie, ni si les dés avaient pesé plus que le jeu. Les parties jouées avant 1d n'avaient aucune analyse.
Quoi
Le bilan (
#/parties/<id>/bilan). À la fin d'une partie, dès que l'analyse est prête, il remplace le panneau de fin. Il donne :L'analyse (
#/parties/<id>/analyse/<coup>). Elle s'ouvre par « Voir l'analyse » et contient :Ailleurs :
Comment
Le travail a été délégué à un sous-agent, interrompu une fois par la limite d'usage.
Ce qui est analysé. Le domaine (
analysis/game-analysis.ts) liste ce qui manque à une partie :Comment c'est calculé.
ui/review-runner.tsfait ces analyses une à une, sur le second moteur, celui des conseils. Elles sont annulables et rangées au fur et à mesure dans un champ facultatif et versionné du journal,review. Sa migration est testée, et l'ADR 0007 est amendé.Les chiffres reprennent gnubg 1.08.003, avec les sources citées dans le code :
getMWCFromError,updateStatcontext,arThrsRating,getLuckRatingetarLuckAdj, dans analysis.c ;isCloseCubedecision, dans eval.c.Les chances de gagner viennent de
Engine.evaluate, branché sur la commandeevalexistante : le moteur n'est pas recompilé. La courbe est un SVG fait main, sans dépendance. L'ADR 0013 est amendé pour les deux nouvelles adresses.Recette design. Trois corrections ont été demandées puis validées :
Un défaut trouvé à la vérification finale. Pendant que l'analyse continuait en arrière-plan, le bilan affiché se reconstruisait à chaque résultat rangé, et son mini-plateau clignotait. Le bilan ne se redessine plus que si ce qu'il montre change.
Vérification par la session principale et l'agent :
make lint: aucun problème ;make test: 10/10, dont 45 scénarios (nouveaurevoir-ma-partie.feature) ;make test-browser: complet, deux fois de suite, dans Chromium et Firefox, avec le nouveautests/browser/bilan.mjs.Choix et compromis
docs/glossaire/taux-d-erreur.md. À valider par Pierre.#/: le retour du téléphone ramène à la partie.docs/maitre/phrases.md, au cadre validé par Pierre :bilan.jeu.*,bilan.des.*,bilan.aucun-coup. Elles sont à relire.Risques et déploiement
reviewest facultatif. Un journal d'avant 1e se reprend tel quel, et le schéma IndexedDB ne change pas.reviewsera simplement ignoré.Comment vérifier
Après publication :
#/position/BQAACAIAAAAAAA, puis « Jouer à partir d'ici ».Hors périmètre
Generated with Claude Code https://claude.com/claude-code