Décision : moteur gnubg officiel ; travail par merge requests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-02 13:19:18 +01:00
co-authored by Claude Opus 5.5
parent cbde02bc90
commit 9b6534cd43
6 changed files with 68 additions and 8 deletions
+33
View File
@@ -27,3 +27,36 @@ devient `docs/feuille-de-route.md`. Chaque délégation a son plan dans
`docs/plans/`. Fonctionnement détaillé dans `docs/organisation.md`.
**Raison** : rendre le suivi et la mémoire du projet transparents et
vérifiables a posteriori, en lisant le dépôt.
## 2026-11-02 — Source du moteur : gnubg officiel, commit `14b6798`
**Contexte** : étape 0a.1, trois candidats étudiés (gnubg, gnubg-nn, CBG).
Étude complète : `docs/plans/2026-11-02-choix-source-moteur.md`.
**Choix** (validé par Pierre) : GNU Backgammon officiel, figé au commit
`14b67984737ded0f6de43d63dcb789f729d9b06b` (1.08.003), dont on n'extrait que
le cœur (évaluation, coups, videau, identifiants, équité de match, fin de
partie) derrière `moteur.h`.
**Alternatives écartées** :
- gnubg-nn : 48 fichiers sous GPLv2 seule, incompatibles avec la GPLv3 ; videau
réimplémenté, donc sans concordance possible avec gnubg de bureau.
- CBG : même moteur, mais avec GLib complète et toute la logique de partie ;
interface orientée partie en cours ; pas de bases de fin de partie. Gardé
comme référence de lecture.
**Conséquences** :
- Le gnubg de bureau de référence est compilé dans Docker depuis le même
commit.
- GLib remplacée par un shim minimal ; tables d'équité XML à convertir.
- Les tests de concordance ont une tolérance, car gnubg de bureau est compilé
avec `-ffast-math`.
## 2026-11-02 — Merge requests systématiques, fusion par Claude Code
**Contexte** : Pierre veut comprendre chaque changement sans suivre le travail
au fil de l'eau.
**Choix** (demande de Pierre) : aucun commit direct sur `main`. Chaque
changement passe par une branche et une merge request Gitea dont la description
explique le pourquoi, le quoi, le comment, les choix, les risques, la
vérification et ce qui est hors périmètre. Claude Code la fusionne lui-même dès
que `make lint` et `make test` passent.
**Conséquence** : l'historique des MR sur git.sans.pub devient, avec `docs/`,
la trace vérifiable du projet.
+2 -2
View File
@@ -10,8 +10,8 @@ Légende : ✅ terminé · 🔄 en cours · ⏳ à venir · ⏸ conditionnel
| Sous-étape | Contenu | État | Plans |
| --- | --- | --- | --- |
| Socle | Dépôt, Makefile, lint, tests, organisation | ✅ | — |
| 0a.1 | Choisir la source du moteur (gnubg, gnubg-nn, CBG) — étude faite, recommandation : gnubg officiel ; en attente de validation de Pierre | 🔄 | `plans/2026-11-02-choix-source-moteur.md` |
| 0a.2 | Image Docker GNU Backgammon de bureau, 30+ positions de référence dans `tests/reference/` | ⏳ | |
| 0a.1 | Choisir la source du moteur : gnubg officiel, commit `14b6798` (validé) | ✅ | `plans/2026-11-02-choix-source-moteur.md` |
| 0a.2 | Image Docker GNU Backgammon de bureau (compilé depuis le commit `14b6798`), 30+ positions de référence dans `tests/reference/` | ⏳ | |
| 0a.3 | Interface C `engine/include/moteur.h` et `engine-cli` (JSON) | ⏳ | |
| 0a.4 | `make test` compare `engine-cli` aux références | ⏳ | |
| 0b | Moteur en WebAssembly, page de test dans un Web Worker, `make deploy-web`, `make bench` | ⏳ | |
+8 -4
View File
@@ -14,7 +14,6 @@ Une entrée datée par session : ce qui a été fait, décidé, et la suite.
`docs/decisions.md`.
- Premiers tests : contrat du Makefile (`tests/test_makefile.sh`) ; lint du dépôt
(`tests/lint.sh`, avec ShellCheck dans Docker).
- `main` poussé sur Gitea (`git@git.sans.pub:pierre/Ustagammon.git`), après
fusion avec le commit initial créé par Gitea (LICENSE et README). Incident :
le premier envoi contenait un `README.md` avec des marqueurs de conflit ;
@@ -22,14 +21,19 @@ Une entrée datée par session : ce qui a été fait, décidé, et la suite.
- `PROMPTS.md` supprimé ; ajout de `docs/organisation.md`,
`docs/feuille-de-route.md` et `docs/plans/`.
- Étape 0a.1 lancée : étude des trois sources du moteur confiée à un
sous-agent (`docs/plans/2026-11-02-choix-source-moteur.md`).
sous-agent (`docs/plans/2026-11-02-choix-source-moteur.md`), puis clôturée
avec vérification des points clés par la session principale.
**Décidé**
- Les outils de lint tournent dans Docker, comme les autres chaînes d'outils.
- Claude Code pilote le projet par sous-agents ; tout le suivi est dans `docs/`.
- Moteur : gnubg officiel, commit `14b6798` (validé par Pierre).
- Toute modification passe par une merge request Gitea décrite en détail,
fusionnée par Claude Code une fois `make lint` et `make test` au vert
(demande de Pierre).
**Reste à faire**
- Étude du moteur clôturée : recommandation gnubg officiel (commit `14b6798`),
soumise à Pierre.
- Étape 0a.2 : image Docker de gnubg de bureau compilé depuis le même commit,
et 30 positions de référence ou plus.
- `adb` n'est pas installé sur le PC : `sudo apt install adb` avant les tests sur
le téléphone.
+23
View File
@@ -72,6 +72,29 @@ Rempli à la clôture : fait, écarts, preuves (sorties de commandes, mesures),
suites à donner.
```
## Branches et merge requests
Aucun commit direct sur `main`. Pour chaque changement :
1. Une branche au nom court et explicite (`moteur-reference`, `engine-cli`…).
2. Des commits petits, en français.
3. `make lint` et `make test` au vert.
4. Une merge request sur git.sans.pub (`tea pulls create --login sans-pub`),
dont la description permet à quelqu'un qui n'a pas suivi le travail de
comprendre le changement. Rédigée en prose, pas en liste de commits :
- **Pourquoi** : le problème, comment il est apparu, son impact, avec preuves ;
- **Quoi** : ce qui change, du point de vue du comportement ;
- **Comment** : l'approche technique et le raisonnement ;
- **Choix et compromis** : alternatives écartées, limites assumées ;
- **Risques** : ce qui peut casser, comment revenir en arrière ;
- **Comment vérifier** : commandes exactes ;
- **Hors périmètre** : ce qui a été repéré mais laissé de côté.
5. Fusion par Claude Code (commit de fusion, pour garder l'historique de la
branche), puis suppression de la branche.
Une MR qui touche à un point soumis à validation (voir ci-dessous) n'est
fusionnée qu'après l'accord de Pierre, consigné dans `docs/decisions.md`.
## Validation par Pierre
Sont soumis à Pierre avant d'être appliqués : le choix de la source du moteur,
+1 -1
View File
@@ -2,7 +2,7 @@
- **Date** : 2026-11-02
- **Étape** : 0a.1
- **Statut** : terminé — recommandation en attente de validation par Pierre
- **Statut** : terminé — recommandation validée par Pierre le 2026-11-02
- **Exécutant** : sous-agent general-purpose (étude, sans modification du dépôt)
## Objectif