1Objet et dates
Ce document répond au contrat de Kit - Documentation - Environnement d’exécution pour l’environnement de session de Claude AI. Il ne vaut que pour cet environnement, et pour la date à laquelle il a été mesuré.
| Date | Valeur |
|---|---|
| Rédaction | 2026-09-01 |
| Dernier contrôle | 2026-09-01 |
2Réponse au contrat
Même ordre de lignes que le §2 du contrat. La colonne “constaté” porte ce que le contrôle a mesuré, pas ce que l’environnement est censé offrir.
| Capacité | Constaté | Où |
|---|---|---|
| Node.js | v22.22.2 | Fourni par le conteneur |
| Module docx | 304 clés, construction CJS | /home/claude/.npm-global/lib/node_modules |
| Python 3 | 3.12.3 | Fourni par le conteneur |
| pandoc | 3.1.3 | /usr/bin/pandoc |
| LibreOffice | 24.2.7.2 | /usr/bin/soffice |
| Pillow | 12.1.1 | Fourni par le conteneur |
| Module adm-zip | ABSENT | Installé en session |
3Lacunes
–adm-zip absent à l’ouverture — conditionnel. Le module n’est pas fourni par le conteneur. Il ne sert plus qu’à construire l’archive du site: la production des documents n’en dépend plus depuis General v1.83. Une session qui ne publie pas de site ne rencontre pas cette lacune.
4Contournements
–Installation en début de session. La commande npm install -g adm-zip résout la lacune du §3. Le contournement ne survit pas: le conteneur repart de zéro à la session suivante, et la commande est à rejouer. Il est déclaré ici parce qu’il se répète, non parce qu’il se corrige.
5Particularités
Ce qui ne se mesure par aucune commande, et qui change pourtant la façon de travailler.
–Les documents joints arrivent en texte extrait. Un .docx déposé dans le contexte du projet est lisible, mais ce qui est lu est une extraction textuelle, non le binaire. Modifier un document à partir de cette lecture produit un fichier appauvri — marquage, images et propriétés perdus — sans que rien ne le signale. D’où la règle du binaire obligatoire avant toute modification, et le contrôle de fidélité qui la vérifie.
–Le conteneur repart de zéro. Aucun fichier de travail ne survit d’une session à l’autre. C’est ce qui fonde la réécriture du générateur à chaque session, et non une préférence de style.
–Le conteneur tourne en temps universel. L’horloge du système est en UTC. Les horodatages de noms de fichiers passent donc par le helper d’heure locale, jamais par l’horloge directe.
–La résolution de docx retient la construction CJS. Un require portant un chemin de répertoire retiendrait l’autre construction du même paquet, dont les classes ne sont pas reconnues par le sérialiseur de la première. La résolution ordinaire est donc la seule employée.
6Relevé brut
Commandes du contrôle et leurs sorties, verbatim, le 2026-09-01.
$ node --version
v22.22.2
$ node -p "require.resolve('docx')"
/home/claude/.npm-global/lib/node_modules/docx/dist/index.cjs
$ node -p "Object.keys(require('docx')).length"
304
$ python3 --version
Python 3.12.3
$ python3 -c "import PIL; print('Pillow', PIL.__version__)"
Pillow 12.1.1
$ which pandoc soffice
/usr/bin/pandoc
/usr/bin/soffice
$ node -p "Intl.DateTimeFormat().resolvedOptions().timeZone"
UTC