diff --git a/CLAUDE.md b/CLAUDE.md index 18f1c71..436eeac 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -51,7 +51,7 @@ Des cibles plus fines (`make engine`, `make engine-wasm`, `make bench`…) sont 2. **Tests d'abord pour le moteur.** Les positions de référence sont évaluées avec le GNU Backgammon de bureau (en ligne de commande, dans Docker) et stockées dans `tests/reference/`. Le moteur embarqué doit concorder. 3. **Expliquer simplement.** Après chaque étape : ce qui a été fait, comment le vérifier soi-même (commande exacte), ce qui reste. 4. **Ne jamais masquer un échec.** Pas de test désactivé, pas de résultat simulé. Dire clairement ce qui bloque et la cause probable. -5. **Commits fréquents**, messages courts en français. Ne jamais pousser sur le dépôt distant sans demande explicite. +5. **Commits fréquents**, messages courts en français, sur une branche dédiée. Jamais de commit direct sur `main` : chaque changement passe par une merge request Gitea (`tea pulls create --login sans-pub`), décrite selon `docs/organisation.md`. Claude Code la fusionne lui-même une fois `make lint` et `make test` au vert. 6. **Dépendances** : peu, maintenues, compatibles GPLv3. Signaler chaque nouvelle dépendance et sa licence. 7. **Journal** : `docs/journal.md` reçoit une entrée datée à la fin de chaque session (fait, décidé, reste à faire). Les décisions structurantes vont dans `docs/decisions.md`. diff --git a/docs/decisions.md b/docs/decisions.md index 7e62779..b86e953 100644 --- a/docs/decisions.md +++ b/docs/decisions.md @@ -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. diff --git a/docs/feuille-de-route.md b/docs/feuille-de-route.md index 3c9354f..f8d716d 100644 --- a/docs/feuille-de-route.md +++ b/docs/feuille-de-route.md @@ -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` | ⏳ | | diff --git a/docs/journal.md b/docs/journal.md index e1e7a96..ceed663 100644 --- a/docs/journal.md +++ b/docs/journal.md @@ -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. diff --git a/docs/organisation.md b/docs/organisation.md index 60c640e..85e1443 100644 --- a/docs/organisation.md +++ b/docs/organisation.md @@ -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, diff --git a/docs/plans/2026-11-02-choix-source-moteur.md b/docs/plans/2026-11-02-choix-source-moteur.md index 6339614..187779e 100644 --- a/docs/plans/2026-11-02-choix-source-moteur.md +++ b/docs/plans/2026-11-02-choix-source-moteur.md @@ -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