<!-- Source: https://docs.biosimulant.com/standards/model-compatibility/changelog -->

# Changelog

## Unreleased platform integration

- Added ten authenticated Agent Gateway tools for standard/profile discovery, validation, comparison, resolution, report and plan retrieval, and explicit lossy/inference approval.
- Added `compatibility:read`, `compatibility:compute`, and `compatibility:approve` OAuth scopes.
- Compatibility compute can use a scoped Developer API key or a normal signed-in Biosimulant session. Private reports and plans stay with their owner.
- Managed-run preparation can bind an exact compatibility plan ID and digest; the server revalidates the bundle, plan, workspace revision, policy, expiry, and approval receipts.
- Added the optional `biosimulant-model-compatibility` Agent Skill and routed the general, composition, model-building, runtime-specific, discovery, and publication skills to the same workflow.
- Added an administrator review and revocation screen for adapter and inference releases.

## Unreleased standard changes

These docs pin the exact alpha package and bundle shown on the [standard overview](/standards/model-compatibility).

- Python and TypeScript now implement the full rule vocabulary, profile inheritance, locks, deterministic path planning, safety limits and digest-pinned ontology or mapping snapshots.
- The browser-safe entry point includes all public schemas and 650 profiles for offline validation in Web and Desktop.
- The build now calculates review progress and `ga_ready` from checked, per-profile review records. It does not treat passing tests as scientific approval.
- Cross-language tests compare normalized contracts, reports, plans and hashes byte for byte.
- Reworded the standard and findings in plain English, while keeping stable profile names, URLs, statuses and reason codes.

## 0.1.0-alpha.2

- Fixed the capitalization of the Biosimulant brand name in package metadata, docs and the port contract schema title.

## 0.1.0-alpha.1 — implementation draft

The first public alpha of the Biosimulant Model Compatibility Standard. You can use it end to end today, but formats may change before a stable release.

### The standard

- 15 JSON schemas, covering manifests, port contracts, profiles, rules, reports, plans, locks and conformance records.
- 650 profiles across 26 domains, built from 266 contract items grouped into 30 packs.
- 18 comparison operators, 8 comparison statuses and stable `BMCS_*` reason codes.
- Three test cases for every profile, 1,950 in total: a valid contract, an invalid contract, and a comparison that must return `UNKNOWN`.
- Python and TypeScript reference implementations for validation, hashing and comparison. The Python implementation can also build plans.

### Biosimulant CLI

- New `biosimulant compatibility` commands: `validate`, `normalize`, `compare`, `profiles`, `lock`, `plan` and `conformance`. Install them with `pip install 'biosimulant[compatibility]'`.
- Model packages built from a `model.yaml` with a `compatibility` block now include `payload/compatibility.lock.json`.
- A package build fails if the `compatibility` block is invalid. Loading a model fails if the ports in `model.yaml` don't match the ports in its Python code.
- Port contracts are kept when manifests are read and written, and values sent between ports during a run can be checked against their contracts.

### Biosimulant platform

- Public endpoints that serve the standard's schemas, profiles and test fixtures.
- Developer API endpoints to validate, compare and resolve contracts. Reports and plans are stored privately for their owner, and plans that need approval can be approved.
- Runs started from a released lab can be linked to a stored plan. The run's Passport records the plan, its policy decision and any approvals.
- Ports of released models are indexed for compatibility.
- The Hub shows whether a model declares compatibility, how many of its ports have contracts, which profiles it imports, and each port's contract.

### Documentation

- New pages for the standard, including a searchable catalogue of all 650 profiles and an updated `model.yaml` reference.

### Known limitations

- No profile has been scientifically reviewed yet: 591 are `candidate` and 59 are `draft`.
- Ontology and identifier mapping rules return `UNKNOWN` unless the exact digest-pinned snapshot needed by the rule is supplied.
- A profile being machine-checkable does not mean its field choices or biological limits have been independently reviewed.
- A stable release needs independent scientific review of every profile. See [Before a stable release](/standards/model-compatibility/conformance#before-a-stable-release).
