Conseil du maître : une ligne après chaque coup, l'explication sur demande (1d) #51

Manually merged
pierre merged 13 commits from conseil-du-maitre into main 2026-11-10 08:36:28 +00:00
Owner

Pourquoi

Pierre veut « mettre en avant le coach bienveillant et les conseils dans l'app (mais en restant discret) ». L'ADR 0011 a tranché : le maître commente le coup après qu'il a été joué, jamais avant.

Jusqu'ici, l'application jouait sans rien dire. Les briques existaient pourtant :

  • depuis 1a, le moteur sait analyser un coup et une décision de videau ;
  • depuis la révision UX, une ligne de 44 px est réservée à ce commentaire.

Le bilan de fin de partie (1e) aura aussi besoin de ces analyses, sans les recalculer.

Quoi

Une ligne après chaque décision du joueur. Après chaque coup et chaque décision de videau, une ligne apparaît sous le bandeau du joueur dès que l'analyse est prête. Exemples :

  • « Bon coup. Bien vu. 8/5 6/5 fait votre point 5. »
  • « Grosse erreur. J'aurais joué 8/5 6/5. Mon coup fait votre point 5. »
  • « Bonne décision. Doubler était le bon choix. »

Rien n'apparaît pendant que le joueur réfléchit. La ligne s'efface à l'action suivante. Tant qu'elle est affichée, elle remplace « L'ordinateur a joué… ». Les traces du coup de l'ordinateur et « Revoir » restent visibles.

En paysage, une pastille (pictogramme et mot) précède la consigne dans la bande centrale.

Une feuille d'explication. Toucher la ligne ou la pastille ouvre #/explication/<événement>. La feuille montre le mot, puis « Votre coup » et « Le coup du maître » joués pion par pion sur la position d'avant. Les chiffres du moteur y sont repliés. Elle se recharge sans perte.

Un conseil désactivable, dans le menu ou sur l'écran « Nouvelle partie ». Désactivé, il n'affiche plus rien, mais les coups restent analysés pour le bilan.

Des phrases venues d'une source unique, docs/maitre/phrases.md (CC BY-SA 4.0). Leur cadre a été validé par Pierre le 2026-11-09.

Comment

Le travail a été délégué à un sous-agent, interrompu deux fois par la limite d'usage.

Analyse. Les analyses à 2 plis tournent sur un second moteur, dans son propre Web Worker : le premier reste entièrement à la partie, et le coup de l'ordinateur n'est jamais retardé. Le second moteur démarre à la première analyse, une fois le service worker installé, pour ne pas télécharger les données deux fois en même temps.

Domaine. Le domaine calcule le conseil (analysis/analyse.ts) uniquement à partir du moteur :

  • l'analyse du coup ;
  • le classement des coups, avec le nouveau rankMoves, qui réutilise la commande moves existante, sans recompilation ;
  • l'analyse du videau ;
  • les plateaux décodés, pour savoir quels pions sont frappés et quels points sont faits.

Journal. Le conseil est rattaché à l'événement de la décision, dans un champ facultatif et versionné (advice). Ce n'est pas un nouvel événement, qui se serait accroché à l'arbre comme une fausse branche. La migration est testée et l'ADR 0007 est amendé. L'adresse de la feuille est ajoutée à l'ADR 0013.

Recette design. Elle a tranché quatre points :

  • la ligne du maître remplace « L'ordinateur a joué… » ;
  • la pastille en paysage est retenue ;
  • le videau est qualifié par « Bonne décision » seul ;
  • la règle du rang. Le rang n'est cité que pour un bon coup non meilleur ou une imprécision, et seulement au 2e ou 3e choix. Il ne l'est jamais pour « Erreur » ni « Grosse erreur ». « 2e choix » laissait croire que c'était tout près alors que l'écart pouvait valoir 0,226. Le classement complet reste dans les chiffres.

Vérification sur la version finale :

  • make lint : aucun problème ;
  • make test : 10/10, dont le scénario comprendre-mes-coups.feature. Un test rend chaque gabarit sur de vraies analyses et vérifie la longueur (moins de 140 caractères), l'absence de « ! » et la règle du rang aux rangs 2, 3, 4, 7 et 15 ;
  • make test-browser : Chromium et Firefox, avec le nouveau tests/browser/maitre.mjs, qui vérifie les quatre mots, la feuille et son adresse, le videau, le conseil coupé puis rallumé, et la CSP.

Choix et compromis

  • Un second moteur plutôt qu'une file avec priorités. Une analyse déjà lancée bloquerait quand même l'ordinateur. Le prix est un second tas WebAssembly en mémoire.
  • Des phrases qui ne citent que des faits du moteur. Pour un coup, le moteur ne nomme aucun concept : la feuille ne propose donc un lien vers le glossaire que pour le videau.
  • Les seuils de gnubg pour commencer (0,03 / 0,06 / 0,12), à recalibrer d'après les retours de Pierre.

Risques et déploiement

  • Mémoire. La mémoire prise par le second moteur sur le Fairphone 4 reste à vérifier.
  • Format du journal. Il évolue de façon rétrocompatible : les anciennes parties se reprennent telles quelles.
  • Ton des phrases. La session design a validé les phrases ; la relecture finale de Pierre est en cours. Un changement de texte ne touche que docs/maitre/phrases.md.
  • Retour arrière. Annuler la fusion. Les conseils déjà enregistrés seront alors ignorés.

Comment vérifier

make lint && make test && make test-browser
ls build/browser-shots/maitre/

À la main :

  1. Ouvrir #/position/4HPwATDgc%2FABMA, toucher « Jouer à partir d'ici », puis jouer 24/23 13/10 avec un 3-1.
  2. La ligne doit afficher « Grosse erreur. J'aurais joué 8/5 6/5. Mon coup fait votre point 5. ».
  3. La toucher : la feuille s'ouvre.
  4. Recharger la page : la même feuille se rouvre.

Hors périmètre

  • « Demander à une IA » (1f).
  • Le bilan et l'analyse de partie (1e).
  • L'analyse rétroactive des parties jouées avant 1d.
  • Le recalibrage des seuils.

Generated with Claude Code https://claude.com/claude-code

## Pourquoi Pierre veut « mettre en avant le coach bienveillant et les conseils dans l'app (mais en restant discret) ». L'ADR 0011 a tranché : le maître commente le coup après qu'il a été joué, jamais avant. Jusqu'ici, l'application jouait sans rien dire. Les briques existaient pourtant : - depuis 1a, le moteur sait analyser un coup et une décision de videau ; - depuis la révision UX, une ligne de 44 px est réservée à ce commentaire. Le bilan de fin de partie (1e) aura aussi besoin de ces analyses, sans les recalculer. ## Quoi **Une ligne après chaque décision du joueur.** Après chaque coup et chaque décision de videau, une ligne apparaît sous le bandeau du joueur dès que l'analyse est prête. Exemples : - « Bon coup. Bien vu. 8/5 6/5 fait votre point 5. » - « Grosse erreur. J'aurais joué 8/5 6/5. Mon coup fait votre point 5. » - « Bonne décision. Doubler était le bon choix. » Rien n'apparaît pendant que le joueur réfléchit. La ligne s'efface à l'action suivante. Tant qu'elle est affichée, elle remplace « L'ordinateur a joué… ». Les traces du coup de l'ordinateur et « Revoir » restent visibles. **En paysage**, une pastille (pictogramme et mot) précède la consigne dans la bande centrale. **Une feuille d'explication.** Toucher la ligne ou la pastille ouvre `#/explication/<événement>`. La feuille montre le mot, puis « Votre coup » et « Le coup du maître » joués pion par pion sur la position d'avant. Les chiffres du moteur y sont repliés. Elle se recharge sans perte. **Un conseil désactivable**, dans le menu ou sur l'écran « Nouvelle partie ». Désactivé, il n'affiche plus rien, mais les coups restent analysés pour le bilan. **Des phrases venues d'une source unique**, `docs/maitre/phrases.md` (CC BY-SA 4.0). Leur cadre a été validé par Pierre le 2026-11-09. ## Comment Le travail a été délégué à un sous-agent, interrompu deux fois par la limite d'usage. **Analyse.** Les analyses à 2 plis tournent sur un second moteur, dans son propre Web Worker : le premier reste entièrement à la partie, et le coup de l'ordinateur n'est jamais retardé. Le second moteur démarre à la première analyse, une fois le service worker installé, pour ne pas télécharger les données deux fois en même temps. **Domaine.** Le domaine calcule le conseil (`analysis/analyse.ts`) uniquement à partir du moteur : - l'analyse du coup ; - le classement des coups, avec le nouveau `rankMoves`, qui réutilise la commande `moves` existante, sans recompilation ; - l'analyse du videau ; - les plateaux décodés, pour savoir quels pions sont frappés et quels points sont faits. **Journal.** Le conseil est rattaché à l'événement de la décision, dans un champ facultatif et versionné (`advice`). Ce n'est pas un nouvel événement, qui se serait accroché à l'arbre comme une fausse branche. La migration est testée et l'ADR 0007 est amendé. L'adresse de la feuille est ajoutée à l'ADR 0013. **Recette design.** Elle a tranché quatre points : - la ligne du maître remplace « L'ordinateur a joué… » ; - la pastille en paysage est retenue ; - le videau est qualifié par « Bonne décision » seul ; - la règle du rang. Le rang n'est cité que pour un bon coup non meilleur ou une imprécision, et seulement au 2e ou 3e choix. Il ne l'est jamais pour « Erreur » ni « Grosse erreur ». « 2e choix » laissait croire que c'était tout près alors que l'écart pouvait valoir 0,226. Le classement complet reste dans les chiffres. **Vérification sur la version finale** : - `make lint` : aucun problème ; - `make test` : 10/10, dont le scénario `comprendre-mes-coups.feature`. Un test rend chaque gabarit sur de vraies analyses et vérifie la longueur (moins de 140 caractères), l'absence de « ! » et la règle du rang aux rangs 2, 3, 4, 7 et 15 ; - `make test-browser` : Chromium et Firefox, avec le nouveau `tests/browser/maitre.mjs`, qui vérifie les quatre mots, la feuille et son adresse, le videau, le conseil coupé puis rallumé, et la CSP. ## Choix et compromis - **Un second moteur plutôt qu'une file avec priorités.** Une analyse déjà lancée bloquerait quand même l'ordinateur. Le prix est un second tas WebAssembly en mémoire. - **Des phrases qui ne citent que des faits du moteur.** Pour un coup, le moteur ne nomme aucun concept : la feuille ne propose donc un lien vers le glossaire que pour le videau. - **Les seuils de gnubg pour commencer** (0,03 / 0,06 / 0,12), à recalibrer d'après les retours de Pierre. ## Risques et déploiement - **Mémoire.** La mémoire prise par le second moteur sur le Fairphone 4 reste à vérifier. - **Format du journal.** Il évolue de façon rétrocompatible : les anciennes parties se reprennent telles quelles. - **Ton des phrases.** La session design a validé les phrases ; la relecture finale de Pierre est en cours. Un changement de texte ne touche que `docs/maitre/phrases.md`. - **Retour arrière.** Annuler la fusion. Les conseils déjà enregistrés seront alors ignorés. ## Comment vérifier ``` make lint && make test && make test-browser ls build/browser-shots/maitre/ ``` À la main : 1. Ouvrir `#/position/4HPwATDgc%2FABMA`, toucher « Jouer à partir d'ici », puis jouer 24/23 13/10 avec un 3-1. 2. La ligne doit afficher « Grosse erreur. J'aurais joué 8/5 6/5. Mon coup fait votre point 5. ». 3. La toucher : la feuille s'ouvre. 4. Recharger la page : la même feuille se rouvre. ## Hors périmètre - « Demander à une IA » (1f). - Le bilan et l'analyse de partie (1e). - L'analyse rétroactive des parties jouées avant 1d. - Le recalibrage des seuils. Generated with Claude Code https://claude.com/claude-code
pierre added 13 commits 2026-11-10 08:32:26 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	app/src/ui/board-view.ts
#	tests/browser.sh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pierre manually merged commit 3e7b161933 into main 2026-11-10 08:36:28 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: pierre/Ustagammon#51