You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs/compatibility-facades.md and docs/release.md define Rust API compatibility only. Recent releases also changed catalog content (#299) and parse/emit output (#300, #303). cargo-semver-checks cannot see those changes, and no document says how they are versioned under 1.x. Consumers using a caret requirement pick up minor releases on cargo update, so they need to know what a minor release may change.
Maintainer direction:
The catalog follows Overwatch's update cadence, most likely per season, and those updates ship as minor releases.
Non-major breaking changes do not bump the major version.
Major releases are reserved for Rust API breaks.
Proposed policy
Major: a Rust API incompatibility in the documented public API, as determined by cargo-semver-checks.
Minor:
catalog updates: added, removed, or re-parameterized action/value ids, heroes, maps, and settings;
Patch: fixes with no observable change to the parsed Program, emitted text, validation results, or catalog.
catalog_version (CatalogIdentity) is versioned independently of the crate version.
Release notes list catalog changes and behavior/output changes separately from API changes, so caret-pinned consumers can find them.
Open decision
When Overwatch removes a Workshop action or value, what does workshop-rs do?
Reject: the parser rejects the id from then on, matching the live client.
Legacy id: the parser keeps accepting the id so older projects still parse, while emit and validation mark it as removed.
The same question applies to corrections of ids that were never native, like #299.
Scope
Record the policy, including the decided removal behavior, in docs/compatibility-facades.md.
Link it from the semver section of docs/release.md.
Make catalog and behavior changes identifiable in release notes. The mechanism is open, for example a conventional-commit scope or a changelog section.
Non-goals
A new compatibility framework, stability database, or release process.
Parent: #252
Readiness: needs-decision (see "Open decision")
Problem
docs/compatibility-facades.mdanddocs/release.mddefine Rust API compatibility only. Recent releases also changed catalog content (#299) and parse/emit output (#300, #303).cargo-semver-checkscannot see those changes, and no document says how they are versioned under 1.x. Consumers using a caret requirement pick up minor releases oncargo update, so they need to know what a minor release may change.Maintainer direction:
Proposed policy
cargo-semver-checks.Program, emitted text, validation results, or catalog.catalog_version(CatalogIdentity) is versioned independently of the crate version.Open decision
When Overwatch removes a Workshop action or value, what does
workshop-rsdo?The same question applies to corrections of ids that were never native, like #299.
Scope
docs/compatibility-facades.md.docs/release.md.Non-goals
cargo-semver-checksgate logic. After Freeze the workshop-rs public API for 1.0 #252's other API changes, catalog and behavior changes no longer touch the Rust API shape.Acceptance criteria
docs/compatibility-facades.mdstates the major/minor/patch rules above, including the decided behavior for ids that Overwatch removes.docs/release.mdreferences the policy.Dependencies / ownership
workshop-rs.#[non_exhaustive]). Without them, catalog changes stay Rust API changes.