1Objet et dates
Ce document répond au contrat de Kit - Documentation - Environnement d’exécution pour l’environnement de session de Grok AI. Il ne vaut que pour cet environnement, et pour la date à laquelle il a été mesuré.
| Date | Valeur |
|---|---|
| Rédaction | 2026-09-02 |
| Dernier contrôle | 2026-09-02 |
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 | v24.15.0 | Fourni par le conteneur |
| Module docx | 304 clés, construction CJS | /usr/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.2.0 | Fourni par le conteneur |
| Module adm-zip | ABSENT | Non fourni par le conteneur |
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: une installation faite dans le conteneur n’est pas une garantie pour la session suivante, et la commande est à rejouer. Cette session ne l’a pas installé: aucun site n’est publié.
5Particularités
Ce qui ne se mesure par aucune commande, et qui change pourtant la façon de travailler.
–Les fichiers joints arrivent en binaire sur le disque. Un fichier déposé dans la conversation est écrit sous /home/workdir/attachments/. Le message porte le chemin et la taille, pas le contenu. Le moteur lit les octets sur le disque. Un .zip s’extrait; un .docx se lit comme archive. Modifier un document à partir d’une lecture textuelle resterait un appauvrissement: la règle du binaire obligatoire tient, pour une autre raison qu’une extraction imposée.
–Le dossier artefacts survit; le reste non. /home/workdir/artifacts persiste d’une conversation à l’autre dans le projet, et se synchronise vers le dossier lié de l’utilisateur. /tmp, le générateur de la session et une installation faite pendant la passe ne sont pas une garantie.
–Le Kit n’est pas préinstallé. Il arrive comme archive jointe. La session l’extrait, lit les feuilles de style et produit le document. Rien dans l’arbre de travail n’est le dépôt du Kit au départ.
–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.
–L’exécution n’est pas la machine de l’utilisateur. Les commandes tournent dans un conteneur Linux distant. L’utilisateur ne lance ni le générateur, ni le validateur. Ses fichiers lui reviennent par le dossier artefacts.
6Relevé brut
Commandes du contrôle et leurs sorties, verbatim, le 2026-09-02.
$ node --version
v24.15.0
$ node -p "require.resolve('docx')"
/usr/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.2.0
$ which pandoc soffice
/usr/bin/pandoc
/usr/bin/soffice
$ node -e "require('adm-zip'); console.log('adm-zip')"
Error: Cannot find module 'adm-zip'
Require stack:
- /home/workdir/artifacts/[eval]
code: 'MODULE_NOT_FOUND'