Skip to content

API Stability Policy

This document defines the stability contract for all wasmagent-js public APIs.


Stability Tiers

Each package and export is assigned a tier via the wasmagent.tier field in its package.json.

TierNameBreaking change policyCI gate
tier-0SemVer stableBreaking changes only in major releasesStrong: any regression blocks CI
tier-1Stable with minor extensionsMinor additive extensions allowed; no silent breaking changes; changelog entry requiredModerate: removals and signature changes block CI
tier-2Best-effortTracks upstream changes; may change in minor releases without a deprecation windowAdvisory only
tier-3ExperimentalExplicitly experimental; may change or be removed in any minor releaseNone

Stable Export List

docs/api/stable-api-snapshot.json records the 275 stable exports that are protected under the tier-0/tier-1 contract.

The CI script check-stable-api.mjs runs on every pull request and compares the current public exports of @wasmagent/core against the snapshot. Any removal or rename that is not paired with a matching snapshot update causes CI to fail, preventing accidental breaking changes from landing.

A human-readable, alphabetically sorted version of the same list is available at docs/api/stable-exports.md.


Breaking Change Policy

  • Stable exports (tier-0 / tier-1): Breaking removals or incompatible signature changes may only ship in a major release (X.0.0). A deprecation notice must appear in the preceding minor release when practical.
  • Beta / experimental packages (tier-2 / tier-3): Breaking changes are allowed in minor releases but must be explicitly called out in the changelog under the ### Experimental changes or ### Beta changes section.
  • Additive changes (new exports, new optional parameters, new enum values) are always allowed in minor releases for all tiers.

Release Changelog Format

Every release entry in CHANGELOG.md is structured into three sections, one per stability tier group:

markdown
## v<X.Y.Z> — <date>

### Stable changes
<!-- tier-0 and tier-1 changes; breaking changes only on major releases -->

### Beta changes
<!-- tier-2 changes; breaking changes allowed, must be explicitly noted -->

### Experimental changes
<!-- tier-3 changes; anything goes, noted for transparency -->

Consumers who only depend on tier-0/tier-1 exports can safely scan the ### Stable changes section and ignore the rest.

Released under the Apache-2.0 License.