Upgrade a .mfsig without losing its history.
Every .mfsig carries a SHA-chained lineage of its derivation events. Pro → Platinum tier upgrade. Add another audit tier in the same file. Add a polymer to a drug's pair score. Every change appends to the same audit chain — no rebuild, no re-compute, no lost provenance.
One molecule, one chain, many derivations
The lineage block in audit_and_trust is structurally identical to a git commit history — append-only, SHA-linked, cryptographically signed at every step.
genesis tier upgrade recipe enrichment pair score added
─────── ──────────── ───────────────── ────────────────
┌─────────┐ ┌─────────────┐ ┌────────────────┐ ┌─────────────────┐
SHA → │ e0cd03e7│ ◀───────│ 7e1f744c │ ◀──────│ a8392b1d │ ◀────────│ 9f0e2c44 │
│ │ │ │ │ │ │ │
│ tier:Pro│ │ tier: │ │ tier:Platinum │ │ tier:Platinum │
│ recipe: │ │ Platinum │ │ │ │ │
│ v0.28.3 │ │ recipe: │ │ + recipe: │ │ + pair_score │
│ │ │ v0.28.3 │ │ v0.29-klamt │ │ (drug × poly) │
└─────────┘ └─────────────┘ └────────────────┘ └─────────────────┘
│ │ │ │
│ │ │ │
genesis parent: parent: parent:
event e0cd03e7 7e1f744c a8392b1d
op: tier_upgrade op: add_variant op: add_pair_score
tool: compute_mfsig tool: compute_mfsig tool: chi_polymer_api
timestamp: 2026-05-12 timestamp: 2026-05-13 timestamp: 2026-05-14
signed: Ed25519 signed: Ed25519 signed: Ed25519Each box is a complete .mfsig.json file. Each arrow is the parent_sha256 link. The history[] array on the rightmost file records every preceding event — you can reconstruct the full derivation tree from any leaf.
Two ways to add to an existing .mfsig
Both produce a new file with parent_sha256 pointing at the input. The audit chain stays intact, the original is never modified.
Add another audit tier to the same molecule
You have a Standard-tier .mfsig. You need the Compatibility-tier result too (to feed a legacy COSMO-RS pipeline). Upload the file, pick the additional tier, get back a new .mfsig with BOTH variants in physics_variants.
Upgrade Pro → Platinum or Platinum → Reference
You bought a Pro .mfsig for screening. The candidate passed and you want to escalate to Platinum (multi-conformer ensemble, dft-relax geometry, expanded anchor validation). Upload, get back the Platinum variant in the same chain.
✗ Downgrade — you cannot turn a Platinum .mfsig back into a Pro file. The chain is append-only, and the upgrade derivation preserves all Pro-tier data anyway.
✗ Forking — there is no "branch" semantic. If you need a second variant from a fork point, the chain re-merges at the parent_sha256 and continues linearly. Useful in audit, never in production.
✗ Editing past events — the history[]array is sealed by the root SHA-256. Any modification invalidates the Ed25519 signature.
Three lines of CLI · same chain
The open mfsig CLI handles both enrichment paths. Free conversion in, paid enrichment out.
# Start: I have a Pro Standard-tier .mfsig
$ mfsig info aspirin.mfsig.json
→ tier: Pro · grade: MF2 · audit: Standard
→ genesis sha: e0cd03e7… · current sha: e0cd03e7… · generation: 1
# Op 1: add the Compatibility audit tier (audit-tier enrichment)
$ mfsig enrich aspirin.mfsig.json --add-tier compatibility
→ POST /v1/enrich · cost: €150
→ new sha: 7e1f744c… · generation: 2 · audit tiers: 2
# Op 2: upgrade Pro → Platinum grade (tier upgrade, expanded coverage)
$ mfsig upgrade aspirin.mfsig.json --grade platinum
→ POST /v1/upgrade · cost: +€225 (Platinum delta)
→ new sha: a8392b1d… · generation: 3 · audit tiers: 2
# Op 3: verify the full chain offline (no network)
$ mfsig verify aspirin.mfsig.json --show-lineage
✓ Genesis e0cd03e7… 2026-05-12 Pro Standard
✓ Variant 7e1f744c… 2026-05-13 Pro + Compatibility
✓ Upgrade a8392b1d… 2026-05-14 Platinum Standard + Compatibility
✓ All Ed25519 signatures valid · chain unbroken · PASSNo re-compute. No double pay. No lost provenance.
Cost: incremental only
Upgrading 1 000 Pro files to Platinum costs ~50% of buying 1 000 fresh Platinum files. The Pro work is reused.
Audit: unbroken chain
A regulatory inspector can walk back from the current Platinum file all the way to genesis — every derivation step has a signed timestamp.
Time: minutes, not hours
Recipe enrichment skips geometry + cavity — typically < 1 min per molecule. Tier upgrade adds conformers — minutes, not the original 30+ for a fresh Platinum run.