API stability
Starting with 1.1.0, Rust, JavaScript, Python, and Go move in one coordinated release. A later 1.x release does not remove or rename a public API, change documented behavior or error classification, reinterpret configuration, or write a schema that the promised rollback version cannot use. Breaking changes wait for 2.0.
Deprecations are announced in release notes and documentation. Where a warning is practical, the deprecated surface warns for at least one release. Removal happens only at the next declared compatibility boundary.
The canonical machine-readable contract is contract/forge.json. Generated declarations, inventories, and reference tables come from it. Release CI rejects non-empty development gaps and compares the contract plus each language artifact against the compatibility baseline.
Public Rust enums and options remain non-exhaustive. Queue receipts and cursors remain opaque. Applications must never parse either format.