Limitations
Grimace’s current public runtime is exact inside its supported writer language. That is narrower than “every valid SMILES string for the molecule” and narrower than full RDKit serializer parity.
Runtime options
The supported runtime mode is:
canonical=FalsedoRandom=TruerootedAtAtom=-1for all roots, orrootedAtAtom >= 0for one explicit root
Supported writer-surface flags are listed in Runtime. The writer-parity contract is explained in Correctness contracts.
RDKit serializer parity
Full RDKit serializer parity is not complete. The current reviewed RDKit
2026.03.1 serializer ledger is checked in and summarized by:
python scripts/report_rdkit_serializer_coverage.py
Known gaps are concentrated in coupled directional double-bond and ring-closure stereo cases. They are explained in Known gaps, pinned as executable fixtures, and traced back to RDKit source-tree cases in RDKit serializer coverage.
PreparedMol bytes
Raw PreparedMol payloads are limited to 1 MiB. This applies when writing
bytes with PreparedMol.to_bytes(), reading raw bytes with
PreparedMol.from_bytes(...), and reading zstd-compressed bytes after
decompression.
Compressed payloads must declare their decompressed size in the zstd frame. Frames declaring more than 1 MiB are rejected before decompression.