GoFrame is in an experimental pre-1.0 preview line. This document defines the current compatibility expectations for those previews.
It does not promise SemVer 1.0 stability.
Status: Ready with limitations.
- breaking changes are allowed when they fix unsafe behavior, correct a wrong public shape, or unblock the architecture;
- breaking changes must be documented in
CHANGELOG.md; - user-facing changes should include migration notes when user action is required;
- generated workspace internals may change without migration support;
- security/path-safety hardening may reject previously accepted unsafe input.
- Public-Candidate APIs should not break without a migration note;
- deprecated APIs should remain for at least one documented release stage unless safety requires faster removal;
- CLI command and flag changes should include replacement commands;
- user-authored manifest compatibility should be stricter than generated metadata compatibility;
- generated output should remain an implementation detail unless documented as a tooling contract.
A deprecation must include:
- a GoDoc
Deprecated:comment for exported Go symbols when applicable; - replacement guidance;
- test coverage while the deprecated behavior remains accepted;
- documentation in
docs/api-stability.md; - a
CHANGELOG.mdnote when visible to users.
Current deprecated/legacy surfaces:
gf.UseMount: usegf.UseEffectwith no dependency argument orgf.Once;gf.NoDeps: usegf.Onceor omit deps;gf.AlwaysDeps: usegf.EveryRender;gf.DepsOfand explicitgf.Dep*helpers: prefergf.Deps;gf.Forandgf.ForIndexed: usegf.Mapandgf.MapIndexed;goxc build --release: usegoxc package;goxc generate --in-place: debug/legacy only;- explicit
wasm: "main.wasm"manifests: usebundle.wasm; - legacy package
manifest.jsonmarker: current metadata isgoframe-package.json; legacy ownership is fail-closed and only recognized for the historical GoFrame package manifest shape.
Migration notes are required when:
- a Public-Candidate API changes;
- GOX syntax changes in a way that invalidates existing source;
- manifest input changes require user edits;
- CLI command/flag behavior changes;
- package output contract changes affect deployment.
Migration notes should follow docs/migrations.md.
The release-specific actions for generated-workspace compiler isolation and repeated-Mount descendant rejection are recorded in the v0.3.0-preview.1 migration notes.
The project may break compatibility without a full deprecation window for:
- path traversal or symlink escape fixes;
- destructive output behavior fixes;
- security-sensitive package/export ownership behavior;
- manifest path canonicalization that rejects ambiguous raw
..components; - package asset namespace collision rejection;
- physical path overlap rejection for explicit build/generate/package/export outputs and external workspaces;
- requiring manifest
wasmvalues to end in.wasm; - replacing the old required-root-
index.htmlmanifest behavior with directory-mode assets and generated default HTML; - treating
asset-manifest.jsonas companion metadata rather than standalone destructive ownership evidence; - CI-only smoke harness internals;
- generated workspace internals.
This document does not define:
- SemVer 1.0 guarantees;
- npm/VS Code Marketplace publishing policy;
- production server support;
- compatibility for private debug globals or smoke harness variables.