Security
The contract every .mfsig provides — and the disclosure path for everything else.
SHA-256 audit on every file
Each .mfsig.json contains a SHA-256 hash over its canonical chemistry + methodology + results subset. Recompute the hash on any client (`mol.verify_integrity()`) and it must match the stored value byte-for-byte. Mutate a single character of a hashed field and verification fails — the file is rejected, not silently accepted.
- ›Hash covers: chemistry_and_geometry · methodology · results · solver_call_args
- ›Hash does NOT cover: timestamp_utc, UUID, dependency map — these float without affecting science
- ›Recompute is local: no network call required, runs in the open Python / TypeScript readers
connectivity_hash · independent verification
v2.1 adds a separate `connectivity_hash` over just the molecular graph (atoms + bonds + formal charges). An auditor can verify that the topology hasn't been touched without rehashing the 600 KB σ-segments payload that the file SHA-256 covers. Merkle-tree per-field auditing.
- ›Independent of the file SHA — change one bond and BOTH hashes break
- ›Cheap to recompute — milliseconds even on a 200-atom molecule
- ›Bond table is RDKit-canonical, so the same SMILES always gives the same hash
ALCOA-compatible by construction
The schema satisfies Attributable (UUID + engine version), Legible (open JSON), Contemporaneous (ISO 8601 timestamp), Original (file SHA is the canonical form), Accurate (every gate passed at write time). Replay a Reference-tier .mfsig two years later → bit-identical output if library versions match.
- ›audit_and_trust.reproducibility carries: molforge version · git commit · hardware target · library lock
- ›Reference tier ships with the automated 21 CFR Part 11 ALCOA audit dossier + DOI-backed Zenodo deposit
- ›Cohort releases get versioned Zenodo DOIs (Q1 2027 — see roadmap)
We don't store your molecules, you do
The viewer is browser-only — your .mfsig files never leave your machine when you load them locally. The /api/enrich endpoint in this demo serves canned sample files; production enrichment runs on isolated compute that returns the .mfsig and forgets the input.
- ›Drag-drop converter: zero upload, all parsing client-side
- ›Demo /api/enrich: catalogue lookup only · no persistence of submitted SMILES
- ›Enterprise pricing tier includes per-tenant compute isolation
Anyone can audit · vendor-independent
Three of the seven supported vendor formats are open specifications (Turbomole .cosmo, OpenCOSMO-RS, NwChem output). The .mfsig schema itself is open. A third party with RDKit + a JSON reader can verify any of our files without our software running anywhere.
- ›Open spec at github.com/molforge/mfsig-spec (Q3 2026, on the roadmap)
- ›Federated multi-lab co-signing for Reference tier — Q4 2026
- ›Cross-lab validation cohort scheduled 2027
Security roadmap
what's comingResponsible disclosure
Found a vulnerability? Report it directly — we acknowledge within one business day, triage within three. We do NOT pursue good-faith security research that follows the disclosure path below.