erplibre/CLAUDE.md
Mathieu Benoit 5af6c94c0a [FIX] deep_qemu : listes apt, sous-réseau par étage, étape muette
Trois défauts trouvés en une heure par le premier lancement réel — c'est ce
qu'un test d'intégration doit produire.

1. « --setup-host » a échoué en ZÉRO seconde sur « Unable to locate package
   qemu-system-x86 », alors que le paquet existe : la VM venait de démarrer et
   ses listes ne portaient que bookworm-security. Le message envoyait chercher
   des paquets, pas des listes. Même parade qu'install_proxmox.sh — arrêter
   apt-daily, puis réessayer.

2. Le réseau « default » de libvirt sert 192.168.122.0/24 à TOUS les étages.
   L'étage 2, dont l'adresse VENAIT de ce réseau, voyait son propre net-start
   refusé : « Network is already in use by interface enp1s0 ». Un invité qui
   vit dans un réseau ne peut pas servir le même. Chaque étage prend le sien,
   déduit de sa profondeur absolue, et le REDÉFINIT avant de le démarrer.

3. Le mien : l'extraction du moteur avait coupé preparer_systeme sur le
   « return False » de sa boucle, sans son « return True ». La fonction rendait
   None, donc l'étape échouait SANS RIEN DIRE, et les deux piles étaient
   cassées. L'essai à blanc ne pouvait pas le voir — il sort avant. Un test
   d'AST interdit désormais qu'une étape retombe sur None.

long_test/ était introuvable hors du menu : une ligne dans CLAUDE.md, trois
entrées au CHANGELOG, deux sections au README.

--- EN ---

Three defects found in one hour by the first real run — which is what an
integration test is for.

1. "--setup-host" failed in ZERO seconds on "Unable to locate package
   qemu-system-x86" though the package exists: the VM had just booted and its
   lists carried only bookworm-security. The message sent us looking for
   packages, not for lists. Same remedy as install_proxmox.sh — stop
   apt-daily, then retry.

2. libvirt's "default" network serves 192.168.122.0/24 at EVERY level. Level 2,
   whose own address CAME from that network, had its net-start refused:
   "Network is already in use by interface enp1s0". A guest living inside a
   network cannot serve the same one. Each level takes its own, derived from
   its absolute depth, and REDEFINES it before starting it.

3. Mine: extracting the engine had cut preparer_systeme at its loop's "return
   False", without the final "return True". The function returned None, so the
   step failed SAYING NOTHING, and both stacks were broken. The dry run could
   not see it — it exits earlier. An AST test now forbids a step from falling
   through to None.

long_test/ was undiscoverable outside the menu: one line in CLAUDE.md, three
CHANGELOG entries, two README sections.

Assisted-by: claude-opus-5
(cherry picked from commit e46bad408143f7511a04ffdc6a20efdb785f4b5e)
2026-08-29 01:53:03 -04:00

2.9 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

ERPLibre Multi-Version Odoo Platform

Projet

ERPLibre est un fork communautaire d'Odoo Community Edition (OCE) supportant les versions 12 à 18. Version actuelle : 1.6.0 | Licence : AGPL-3.0+ Version Odoo par défaut : 18.0 (support officiel ERPLibre 1.6.0)

Points d'attention pour Claude

  • Toujours vérifier la version Odoo active avant de modifier du code (cat .odoo-version)
  • Les addons sont dans addons/ et gérés par Google Repo — ne pas modifier la structure des dépôts
  • Utiliser le venv approprié pour le code Odoo. Son nom porte les DEUX versions (.venv.odoo18.0_python3.12.10/bin/python) : le retrouver par ls -d .venv.odoo* plutôt que de le composer de tête
  • Les scripts ERPLibre utilisent .venv.erplibre/bin/python
  • Le Makefile principal inclut des fragments depuis conf/make.*.Makefile
  • Les fichiers privés vont dans private/ (non versionné)
  • La DB PostgreSQL par défaut est sur le port 5432, mot de passe admin : admin
  • Port Odoo par défaut : 8069, longpolling : 8072
  • Pour les commits : suivre le format [TYPE] description (ex: [FIX], [UPD], [ADD], [REM])
  • Pour la documentation : modifier les .base.md, jamais les .md ou .fr.md directement
  • Outil mmg disponible via source .venv.erplibre/bin/activate && mmg
  • Les tests qui créent de VRAIES machines vivent dans long_test/ et non dans test/ : le lanceur unitaire balaie test/test_*.py et doit rester lançable en quelques secondes, même sans virtualisation. Ils durent des heures et se défont par --detruire — voir long_test/README.md

Core Principles

  • Simplicity First: Make every change as simple as possible. Impact minimal code.
  • No Laziness: Find root causes. No temporary fixes. Senior developer standards.
  • Minimal Impact: Changes should only touch what's necessary. Avoid introducing bugs.

Règles détaillées

Les instructions détaillées sont dans .claude/rules/ :

Fichier Contenu
01-versions.md Versions Odoo supportées, où lit-on la correspondance
04-code-conventions.md Où sont les configs de format, conventions Git
06-code-generator.md Génération de modules Odoo
07-documentation.md Interdit : ne pas éditer les .md générés
08-deployment.md Docker, systemd, nginx, SSL, DNS
09-workflow.md Workflow orchestration + task management

Chargées à la demande (.claude/skills/) :

Skill Contenu
erplibre-commands Commandes make et scripts : versions, run, tests, DB, Docker, repo
erplibre-doc-i18n Mode d'emploi mmg (.base.md) et i18n du CLI TODO

L'arborescence et la liste des venvs ne sont plus documentées : ls et ls -d .venv.* en donnent l'état réel, la doc dérivait de la réalité.