API stability and deprecation policy
GoFastr is pre-v1, but public API changes still follow a predictable migration
path. This policy applies to exported APIs under framework/, core/,
core-ui/, and battery/, plus blueprint keys and documented runtime
attributes.
Before v1.0.0
- Additive changes may ship in any minor release.
- A public API scheduled for removal is first marked deprecated in Go docs and
called out inCHANGELOG.md, release notes, and thegofastr upgrade
registry. - The deprecated shape remains supported for at least one complete minor
release. A deprecation introduced in v0.N cannot be removed before v0.(N+1). - When practical, loaders and generators accept both shapes during that window
and warn when they encounter the old form. - Packages under a path containing
/experimental/are exempt. Their docs must
identify them as experimental and consumers should pin a version.
Security fixes may require an accelerated change when compatibility would leave
users exposed. The release notes must name the risk, affected versions, and
migration path.
At and after v1.0.0
GoFastr follows semantic versioning. Breaking public API changes require a new
major version. Deprecations remain available through at least the next minor
release and include a concrete replacement.
Maintainer checklist
For any breaking or migration-relevant change:
- Add the replacement before deprecating the old API where possible.
- Add a
Deprecated:Go doc comment and compatibility test. - Update the relevant embedded guide and
CHANGELOG.md. - Add a migration entry so
gofastr upgradecan identify affected code. - Keep the old path green for the promised compatibility window.
- Remove it only in an eligible release, with a test proving the old and new
release boundary is represented by the upgrade guidance.
Common mistakes
- Treating “pre-v1” as permission for silent breakage.
- Deprecating without naming the replacement or earliest removal release.
- Removing a compatibility path before
gofastr upgradecan guide consumers. - Assuming experimental APIs carry the same stability promise as public APIs.