Versioning and releases
JETH uses Changesets to collect release notes, calculate Semantic Versioning updates, and maintain CHANGELOG.md. The current baseline is 0.1.0.
Version policy before 1.0#
| Changeset type | Version example | Use it for |
|---|---|---|
patch | 0.1.0 to 0.1.1 | Correctness fixes, safe analyzer checks, optimizations without observable incompatibility, documentation, and compatible tooling fixes |
minor | 0.1.0 to 0.2.0 | New language or CLI features and intentional breaking changes while JETH remains pre-1.0 |
major | 0.1.0 to 1.0.0 | The explicit 1.0 stability commitment, then incompatible changes after 1.0 |
A compiler miscompile fix is normally a patch release when it only makes an invalidly accepted program reject or corrects behavior to match the documented language. If a correction intentionally changes documented, supported behavior, call it out as a breaking pre-1.0 change and use a minor release.
Add a changeset#
Every user-visible compiler, runner, analyzer, CLI, or documentation change that belongs in release notes should include a changeset.
npm run changesetChoose the jeth package, select patch, minor, or major, and write a short summary in user-facing language. The command creates a Markdown file under .changeset/. Commit that file with the implementation.
Changes that do not affect a release, such as internal test refactors, may omit a changeset.
Inspect the pending release#
npm run changeset:statusReview the proposed version and every summary. For compiler work, complete the normal differential, full-suite, and shuffled-file gates before applying the release plan.
Apply a release version#
Run the version command only from a clean release branch after all intended changesets have landed:
npm run version-packagesThis consumes the pending changeset files, updates package.json, and adds the entries to CHANGELOG.md. Review those changes before committing them. The current configuration never creates commits automatically.
Publish later#
Do not run changeset publish yet. Before enabling npm publication:
- Resolve the repository license metadata mismatch.
- Review the packaged file surface and the tested
jethcinstallation path. - Finalize the package publication safeguards and enable publishing deliberately.
- Set the intended npm access and provenance policy.
- Add release CI, signed tags, checksums, SBOM, and artifact verification.
- Repeat installation and compiler execution tests against the release tarball.
Until those gates are complete, Changesets is the source of truth for versions and changelog entries, not a publication mechanism.