Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
715176e144 | ||
|
|
dd18a0cc21 | ||
|
|
809b5ec832 | ||
|
|
1eeb6c95ae |
+20
-11
@@ -36,21 +36,30 @@ Repris du cadrage (modules, écrans clés, IA générative en V1) et des ADR 001
|
||||
ton des phrases du maître est encourageant ; l'espace qu'il occupe est
|
||||
réservé dans la mise en page (revue UX 0e.2), pas en fenêtre surgissante.
|
||||
|
||||
## Questions pour Pierre (ne bloquent pas le démarrage)
|
||||
## Décisions de Pierre (2026-11-09)
|
||||
|
||||
- **Indice** : le cadrage le liste dans le module Jeu, l'ADR 0011 l'a laissé
|
||||
« à concevoir séparément ». Il n'est pas dans l'étape 1 sans décision.
|
||||
- **Questionnaire de premier lancement** (choix du parcours) : le parcours 1
|
||||
seul existe en V1 ; proposé : un simple choix « Je découvre » / « Je connais
|
||||
les règles » qui oriente vers le tutoriel ou la partie.
|
||||
- **Indice avant le coup** : pas en V1 (« l'idée est bonne »), à reprendre en
|
||||
V1.5 ou V2. Le conseil du maître après le coup reste le seul mécanisme de
|
||||
l'étape 1.
|
||||
- **Premier lancement** : un choix « Je découvre » / « Je connais les règles »
|
||||
(fait en 0e.5).
|
||||
- **Seuils des appréciations** : ceux de GNU Backgammon (douteux 0,03,
|
||||
mauvais 0,06, très mauvais 0,12 d'équité, `arSkillLevel`), exposés par le
|
||||
moteur depuis 1a ; à calibrer sur de vraies parties.
|
||||
- **Relecture des leçons** par un joueur fort de l'Atelier du Huit.
|
||||
mauvais 0,06, très mauvais 0,12, `arSkillLevel`), exposés par le moteur
|
||||
depuis 1a ; à recalibrer après les retours de Pierre sur de vraies parties.
|
||||
Le niveau le plus grave se dit « Grosse erreur », pas « gaffe ».
|
||||
- **Leçons** : pas de relecture préalable par un joueur fort ; elles sont
|
||||
livrées telles quelles et améliorées sur retours d'experts. Garde-fous
|
||||
maintenus : chaque réponse attendue est le meilleur coup du moteur, vérifié
|
||||
par un test, et le texte n'affirme rien que le moteur ne confirme.
|
||||
- **Plein écran par défaut dans l'app installée** : non (pas de
|
||||
`display_override` fullscreen) ; la barre d'état reste visible en portrait.
|
||||
- **Validés** : le texte du tutoriel et toutes les maquettes du canevas
|
||||
(accueil, installation, tutoriel, aide, écrans 1c à 1i), ainsi que le cadre
|
||||
des phrases du maître (section « Les phrases du maître » de
|
||||
`docs/identite/charte/ecrans-etape-1.md`).
|
||||
|
||||
## Ordre de réalisation
|
||||
|
||||
1a et 1b d'abord (fondations, sans conflit avec l'interface), en parallèle des
|
||||
sous-étapes 0e. Puis 1c, 1d, 1e, 1f dans cet ordre ; 1g après la validation des
|
||||
maquettes d'accueil et de tutoriel par Pierre ; 1h et 1i ; 1j en dernier. Chaque
|
||||
sous-étapes 0e. Puis 1c, 1d, 1e, 1f dans cet ordre ; 1g (maquettes validées par Pierre) ; 1h et 1i ; 1j en dernier. Chaque
|
||||
sous-étape a son plan dans `docs/plans/` et sa merge request.
|
||||
|
||||
@@ -29,7 +29,7 @@ Demandes de Pierre du 2026-11-03, traitées avant d'ouvrir l'étape 1.
|
||||
| Étape | Contenu | État |
|
||||
| --- | --- | --- |
|
||||
| 1. V1 Jouer et comprendre | Détail et ordre dans `docs/etape-1.md` : moteur pour l'analyse, parties enregistrées et branches, match et réglages, conseil du maître, fin de partie et analyse, prompts, accueil, tutoriel et leçons, progression, plateau soigné, plan de test | 🔄 |
|
||||
| 2. V1.5 Apprendre | Parcours 2, exercices, progression | ⏳ |
|
||||
| 2. V1.5 Apprendre | Parcours 2, exercices, progression ; idée retenue par Pierre : un indice avant le coup (sans la réponse) | ⏳ |
|
||||
| 3. V2 Perfectionnement et IA | Parcours 3 et 4, rollouts, révision espacée | ⏳ |
|
||||
|
||||
Chaque étape reçoit son fichier `docs/etape-N.md` avant de démarrer.
|
||||
|
||||
@@ -163,3 +163,38 @@ Une entrée datée par session : ce qui a été fait, décidé, et la suite.
|
||||
Playwright (412×915, 915×412, 844×320, clair et sombre) avant l'essai de
|
||||
Pierre sur le téléphone.
|
||||
- Réglage en main des vibrations sur le Fairphone 4.
|
||||
|
||||
## 2026-11-03 → 2026-11-09 : retours 0e et début de l'étape 1
|
||||
|
||||
**Fait**
|
||||
- Retours du premier test sur téléphone, traités et publiés :
|
||||
- saisie du coup (MR !28) ;
|
||||
- révision UX arbitrée par la session « identité » (MR !35) ;
|
||||
- parties enregistrées avec branches et export SGF, sous-étape 1b (MR !37).
|
||||
- Fusionnés :
|
||||
- adresses par écran et liens de position, sous-étape 0e.4 (MR !43). L'ADR 0013 est amendé : une adresse par écran, de vrais liens ;
|
||||
- moteur pour l'analyse et les niveaux, sous-étape 1a (MR !32) : 9 niveaux de gnubg, analyse de coup et de videau, chance d'un jet, concordance avec gnubg de bureau à 1,64e-3 près.
|
||||
- Décisions techniques :
|
||||
- le cache d'évaluation de gnubg est vidé à chaque calcul, pour que les résultats ne dépendent que de leurs arguments ;
|
||||
- le schéma IndexedDB est un format durable (amendement de l'ADR 0007) ;
|
||||
- l'image Docker de test est nommée par worktree, ce qui corrige l'instabilité des tests concurrents.
|
||||
- Plans écrits pour toute l'étape 1, de 1c à 1i. La session « identité » a maquetté tous les écrans (MR !40 à !42).
|
||||
- Décisions et validations de Pierre (2026-11-09), consignées dans `docs/etape-1.md` :
|
||||
- « Grosse erreur » plutôt que « gaffe » ;
|
||||
- pas d'indice en V1 ;
|
||||
- pas de relecture préalable des leçons ;
|
||||
- pas de plein écran par défaut ;
|
||||
- seuils de gnubg ;
|
||||
- validés : le texte du tutoriel, les maquettes et le cadre des phrases du maître.
|
||||
- Nouvelles demandes de Pierre, intégrées aux plans :
|
||||
- une adresse pour chaque écran ;
|
||||
- la mise à jour forcée de l'app (0e.5) ;
|
||||
- un coach bienveillant, mis en avant mais discret.
|
||||
|
||||
**Reste à faire**
|
||||
- 0e.5 (MR !44) : appliquer les corrections de recette T1 à T5, puis fusionner et publier.
|
||||
- Publication bloquée : `RESTART.sh`, un fichier local non suivi par git, fait échouer `make lint`, et donc `make deploy-prod`.
|
||||
- Étape 1 :
|
||||
- 1c en cours ;
|
||||
- puis 1d, 1e, 1f, 1g, 1h et 1i ;
|
||||
- enfin le plan de test 1j.
|
||||
|
||||
@@ -36,10 +36,14 @@ du moteur.
|
||||
sur demande, lien vers la fiche du glossaire du concept en jeu si le moteur
|
||||
permet de le déterminer, sinon rien.
|
||||
3. **Phrases du maître** : gabarits versionnés en français dans une source
|
||||
unique sous `docs/` (CC BY-SA 4.0), ton encourageant, jamais culpabilisant ;
|
||||
elles ne citent que des faits du moteur (coup recommandé, rang, pions
|
||||
frappés, écart) : aucune explication inventée. Première version à faire
|
||||
valider par Pierre (ton).
|
||||
unique sous `docs/` (CC BY-SA 4.0). Référence de ton, approuvée par Pierre
|
||||
le 2026-11-09 : la section « Les phrases du maître » de
|
||||
`docs/identite/charte/ecrans-etape-1.md` (1re personne et vouvoiement,
|
||||
faits du moteur uniquement, moins de 140 caractères, ton sobre sans
|
||||
exclamation, formules qui tournent pour les bons coups, exemples). Un test
|
||||
vérifie la longueur et l'absence de « ! » sur chaque gabarit rendu. Les
|
||||
phrases livrées passent par la session « identité » puis par Pierre pour
|
||||
la relecture finale.
|
||||
4. **Discret** : rien n'apparaît pendant que le joueur réfléchit ; la ligne
|
||||
s'efface à l'action suivante ; désactivable (réglage de 1c et menu).
|
||||
5. **Videau** : même traitement pour doubler, ne pas doubler, prendre, passer.
|
||||
|
||||
@@ -18,7 +18,7 @@ Mettre en place les cinq premières leçons numérotées de l'ADR 0011. Chaque l
|
||||
4. La course et le compte de points.
|
||||
5. Sortir ses pions sans se faire frapper.
|
||||
|
||||
Chaque leçon compte deux à quatre exercices « à vous ». Leurs positions sont données par identifiants gnubg. La réponse attendue est le meilleur coup du moteur à 2 plis, vérifié par un test. Le texte n'affirme rien que le moteur ne confirme. Les contenus sont livrés en brouillon, marqués « à relire par un joueur fort » (cadrage, risque « contenus »), et Pierre les valide.
|
||||
Chaque leçon compte deux à quatre exercices « à vous ». Leurs positions sont données par identifiants gnubg. La réponse attendue est le meilleur coup du moteur à 2 plis, vérifié par un test. Le texte n'affirme rien que le moteur ne confirme. Décision de Pierre du 2026-11-09 : pas de relecture préalable par un joueur fort ; les leçons sont livrées telles quelles et améliorées sur retours d'experts. Les garde-fous restent : chaque réponse attendue est le meilleur coup du moteur, vérifié par un test, et le texte n'affirme rien que le moteur ne confirme.
|
||||
2. **Progression.** Elle est enregistrée dans le stockage de 1b, dans le magasin `settings` ou dans un nouveau magasin avec montée de version (ADR 0007 amendé). Chaque leçon a son état : à commencer, « 2 exercices sur 4 », terminée.
|
||||
3. **Adresses** : `#/lecons` et `#/lecons/<n>/<écran>`, à ajouter au tableau de l'ADR 0013.
|
||||
4. **Accueil.** Il reçoit la carte « prochaine leçon » prévue par la charte.
|
||||
|
||||
+23
-4
@@ -11,6 +11,7 @@ set -euo pipefail
|
||||
|
||||
CAPROVER_MACHINE="${CAPROVER_MACHINE:-sans-pub}"
|
||||
CAPROVER_APP="${CAPROVER_APP:-ustagammon}"
|
||||
SITE_URL="${SITE_URL:-https://ustagammon.sans.pub}"
|
||||
|
||||
die() {
|
||||
echo "Erreur : $1" >&2
|
||||
@@ -33,9 +34,14 @@ git fetch -q origin main
|
||||
[ "$(git rev-parse main)" = "$(git rev-parse origin/main)" ] \
|
||||
|| die "main diffère d'origin/main : git pull (ou fusionner la MR) d'abord"
|
||||
|
||||
# Le jeton CapRover expire ; caprover ls ne le vérifie pas.
|
||||
caprover api -n "$CAPROVER_MACHINE" -t /user/system/info -m GET -d '{}' -o false >/dev/null 2>&1 \
|
||||
|| die "session CapRover expirée : lancer caprover login dans un terminal"
|
||||
# Le jeton CapRover expire ; caprover ls ne le vérifie pas. Sans terminal
|
||||
# (stdin fermé), la CLI ne peut pas demander le mot de passe : elle doit
|
||||
# échouer, et sa sortie ne doit pas contenir de demande de mot de passe (le
|
||||
# 2026-11-09, elle a demandé le mot de passe puis rendu 0 sans rien publier).
|
||||
if ! session=$(caprover api -n "$CAPROVER_MACHINE" -t /user/system/info -m GET -d '{}' -o false </dev/null 2>&1) \
|
||||
|| grep -qi "password\|not valid anymore" <<<"$session"; then
|
||||
die "session CapRover expirée : lancer caprover login dans un terminal"
|
||||
fi
|
||||
|
||||
echo "Vérification avant publication : make lint et make test"
|
||||
make lint
|
||||
@@ -43,4 +49,17 @@ make test
|
||||
|
||||
make package
|
||||
echo "Publication de main ($(git rev-parse --short main)) sur l'app $CAPROVER_APP"
|
||||
caprover deploy -n "$CAPROVER_MACHINE" -a "$CAPROVER_APP" -t build/ustagammon.tar
|
||||
caprover deploy -n "$CAPROVER_MACHINE" -a "$CAPROVER_APP" -t build/ustagammon.tar </dev/null
|
||||
|
||||
# La CLI peut rendre 0 sans avoir publié : on vérifie le résultat réel, le
|
||||
# commit servi par le site (version.json), pendant deux minutes au plus.
|
||||
commit=$(git rev-parse main)
|
||||
for _ in $(seq 24); do
|
||||
served=$(curl -fsS "$SITE_URL/version.json?verif=$RANDOM" 2>/dev/null || true)
|
||||
if grep -q "\"$commit\"" <<<"$served"; then
|
||||
echo "Publié : $SITE_URL sert $(git rev-parse --short main)."
|
||||
exit 0
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
die "le site ne sert pas le commit $(git rev-parse --short main) après 2 minutes : la publication a échoué (version servie : ${served:-aucune})"
|
||||
|
||||
Reference in New Issue
Block a user