Scaffold discrepancy classification — 2026-09-19
Result
Correction from the follow-up audit: the classifier used identity-overlap equality in its category logic, not scaffold-overlap equality. The original zero-change interpretation is withdrawn. See review-20260919-1817/AUDIT.md and evidence.json.
The saved 9,594 scaffold-string mismatches break down as follows:
Identity-overlap flags still agree, but scaffold-overlap memberships do change. Chemical equivalence of differing scaffold strings is not established merely by this comparison. Seven invalid representatives are excluded from the classification.
Invalid representatives
The seven invalid stored representative SMILES were traced to source CIDs:
For all seven, the original source SMILES parses under the pinned RDKit environment and recomputes to the declared identity14. The source structures therefore support a deterministic repair policy: preserve the source isotope/valence representation, canonicalize with isomericSmiles=True, recompute identity and exact mass, and reject only source rows that fail parsing or identity validation.
Decision
Artifact: reports/phase3a-pubchem-scaffold-discrepancy-20260919.json.
Script: scripts/classify_phase3a_pubchem_scaffolds.py.