Skip to main content

Compatibility Policy

Hephaestus follows Semantic Versioning 2.0.0. This page defines what that version number promises to you as an operator: which surfaces are covered, what an upgrade commits you to, and which versions we support. Release contents are documented in the CHANGELOG and on GitHub Releases.

The public contract

Semantic versioning applies to the surfaces an operator or API consumer depends on:

SurfaceWhat is covered
Database migration chainEach startup applies any not-yet-applied Liquibase changesets in changelog order, so a newer release builds on the previous release's schema. Migrations run automatically when the application server starts.
Runtime prerequisitesThe minimum PostgreSQL major version, the required outbound network destinations, and any required external services. Adding one is a breaking change.
Configuration keysEnvironment variables and hephaestus.* properties documented in the Install guide (base install) and Integrations & Reference Deployment (per-integration bundles). Renames and removals are breaking changes.
Docker Compose interfaceService names, image names, the IMAGE_TAG convention, and required environment variables of the published compose files — the self-hosted stack (docker/self-host/compose.yaml, see the Install guide) and the reference deployment (docker/compose.app.yaml, docker/compose.core.yaml, docker/compose.proxy.yaml).
REST APIThe endpoints described by the published OpenAPI specification.

Everything else — Java and TypeScript internals, the database schema itself (as opposed to the migration chain), undocumented endpoints, UI layout — may change in any release without notice.

Version numbers

BumpMeaning
Major (X.y.z)You must act before or during the upgrade — a required new config key, a removed or renamed one, a manual or destructive migration, or a dropped API. The release notes say what to do; MIGRATION.md has the details.
Minor (x.Y.z)New functionality; upgrade needs no action. May include new optional config keys.
Patch (x.y.Z)Bug and security fixes; upgrade needs no action.

Any release may include database migrations that run automatically on startup — the release notes flag them with a "back up before upgrading" banner.

:::caution Pre-1.0 While the version is below 1.0.0 the Minor row above does not hold: there are no major releases yet, so breaking changes ride in minor releases (0.x.00.y.0), per SemVer item 4. A pre-1.0 minor may require action — the release notes say so when it does. Always read them and test in staging first. This caveat ends with the 1.0.0 release. :::

Upgrade guarantee

Any 1.x can be upgraded to any later 1.y, and today any 0.x to any later 0.y, in a single step: take the release's Compose files and images, and on startup Liquibase applies every not-yet-applied changeset from the intervening releases in changelog order. You do not need to step through intermediate releases.

This rests on the migration chain being append-only. CI enforces that mechanically — a released changelog can never be edited, renamed, or deleted, and master.xml only grows — and replays the whole chain against an empty database on every change. What CI does not prove is that a migration is safe against real existing data (an empty-database replay can't), so data-affecting migrations stay a review responsibility. Take a database backup before upgrading. Downgrades are not supported.

Deprecation policy

Functionality slated for removal is announced in the release notes at least one minor release before it is removed, and keeps working until its removal release. After 1.0.0, removals only happen in major releases.

Support statement

We support the latest release only. Fixes ship as new releases on top of the current version; there are no backport branches. If you hit a bug on an older version, upgrade to the latest release before reporting it. This mirrors comparable self-hosted products — for example, Sentry provides no dedicated self-hosted support and expects operators to upgrade regularly.

Docker image tags

All images (webapp, application-server, agent-pi, release-pin-fetcher, postgres) under ghcr.io/ls1intum/hephaestus/ are published with:

TagMeaningStability
X.Y.ZExact releaseImmutable — pin this in production
X.YLatest patch of a minor releaseMoves on every patch release
latestLatest releaseMoves on every release
main, <sha>Unreleased development buildsUnsupported — never deploy these

For the digest-pinned agent image shipped with every release, see Agent image digests.