1Purpose and dates

This document is a translation in substance. The reference is the original document in French; extensions and changes are always made there.

This document answers the contract of Kit - Documentation - Environnement d’exécution for the session environment of Grok AI. It holds only for that environment, and for the date on which it was measured.

Date Value
Written 2026-09-02
Last check 2026-09-02
Note:The two dates coincide today. They will diverge: the check is replayed every session, the document is not. A widening gap signals a record to redo.

2Answer to the contract

Same line order as §2 of the contract. The “observed” column carries what the check measured, not what the environment is supposed to offer.

Capability Observed Where
Node.js v24.15.0 Provided by the container
docx module 304 clés, construction CJS /usr/lib/node_​modules
Python 3 3.12.3 Provided by the container
pandoc 3.1.3 /usr/bin/pandoc
LibreOffice 24.2.7.2 /usr/bin/soffice
Pillow 12.2.0 Provided by the container
adm-zip module ABSENT Not provided by the container

3Gaps

adm-zip absent at start-up — conditional. The module is not provided by the container. It now serves only to build the site archive: producing documents no longer depends on it since General v1.83. A session that publishes no site never meets this gap.

Note:The same gap is reported by another engine, in a different container. An absence shared by two independent environments is not a particularity: it characterises the class of environment.

4Workarounds

Installation at the start of a session. The command npm install -g adm-zip closes the gap of §3. The workaround does not survive: an installation made in the container is no guarantee for the next session, and the command must be replayed. This session did not install it: no site is published.

5Particularities

What no command measures, and which nevertheless changes how one works.

Attached files arrive as binaries on disk. A file placed in the conversation is written under /home/workdir/attachments/. The message carries the path and the size, not the content. The engine reads the bytes from disk. A .zip is extracted; a .docx is read as an archive. Modifying a document from a textual reading would still be an impoverishment: the mandatory binary rule holds, for a different reason than an imposed extraction.

The artefacts folder survives; the rest does not. /home/workdir/artifacts persists from one conversation to the next within the project, and syncs to the user’s linked folder. /tmp, the session generator and an installation made during the pass are no guarantee.

The Kit is not preinstalled. It arrives as an attached archive. The session extracts it, reads the stylesheets and produces the document. Nothing in the working tree is the Kit at the outset.

The container runs in universal time. The system clock is UTC. Timestamps in file names therefore go through the local-time helper, never the clock itself.

docx resolution selects the CJS build. A require carrying a directory path would select the other build of the same package, whose classes the serialiser of the first does not recognise. Ordinary resolution is therefore the only one used.

Execution is not the user’s machine. The commands run in a remote Linux container. The user starts neither the generator nor the validator. Their files come back through the artefacts folder.

6Raw record

Check commands and their outputs, verbatim, on 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'