These examples show how to read Grimace’s RDKit writer-parity claims. For the policy, see Correctness contracts. For fixture families and counts, see Testing fixtures.

Exact support parity

Fixture case cco_root1_nonstereo pins a small exact support:

Field Value
Molecule CCO
RDKit version 2026.03.1
Writer surface canonical=False, doRandom=True, isomericSmiles=False, rootedAtAtom=1
Exact support C(C)O, C(O)C

The corresponding test checks the complete rooted support, not one sampled output. It also checks that the token inventory matches the same support.

Fixture: rdkit_exact_small_support/2026.03.1.json

Writer membership parity

Fixture case writer_flags_01_propane_all_bonds_explicit pins one RDKit writer output:

Field Value
Molecule CCC
RDKit version 2026.03.1
RDKit writer call canonical=True, doRandom=False, isomericSmiles=False, allBondsExplicit=True
Grimace support surface canonical=False, doRandom=True, isomericSmiles=False, allBondsExplicit=True
RDKit output C-C-C

The matching test checks that this exact RDKit output is in Grimace’s supported writer language for the same non-ranking writer flags. This is the right evidence shape when the important claim is membership of a concrete RDKit writer string, not storing every possible support string in the documentation.

Fixture: rdkit_writer_membership/2026.03.1/20_writer_flags.json

Semantic equivalence is not writer parity

The cco_root1_nonstereo case also shows the boundary. Under the same RDKit 2026.03.1 fixture, the string CCO parses to ethanol, but it is not in the pinned rooted writer support for rootedAtAtom=1:

C(C)O
C(O)C

So CCO is chemically fine for the molecule, but it is not a member of that specific rooted writer language. Grimace’s parity tests use string-level writer membership, not only parsed-molecule equivalence.

Known parity gap

Fixture case github3967_part2_directional_ring_closure_canonical pins a current failing parity case:

Field Value
Input C1=CC/C=C2C3=C/CC=CC=CC\3C\2C=C1
RDKit version 2026.03.1
RDKit writer call canonical=True, doRandom=False, isomericSmiles=True
RDKit output C1=CC/C=C2\C3=C\CC=CC=CC3C2C=C1

That RDKit output is valid evidence, but it is not yet in Grimace’s passing writer-parity corpus. It stays in the known-gap fixture until the coupled directional-stereo behavior is implemented and the case can move into a passing fixture family.

Fixture: rdkit_known_stereo_gaps/2026.03.1.json