TestAtlas follows a clear, predictable Long-Term Support policy so adopters can plan upgrades and security teams can audit dependency surface.
The current major version + the previous major version are supported.
| Version line | Status | Receives |
|---|---|---|
Current major (2.x) |
Active | New features, bug fixes, security patches, schema migrations |
Previous major (1.x) |
Maintenance | Security patches and critical bug fixes only — no new features |
Older majors (0.x) |
End-of-life | No updates of any kind. Open issues will be closed with an upgrade pointer. |
Each new major release pushes the support window forward by one. When 2.x ships, 1.x enters maintenance and 0.x becomes EOL.
- Patch releases (
x.y.Z): as needed; typically within a few days of a confirmed bug. - Minor releases (
x.Y.0): every 4–8 weeks during active development. - Major releases (
X.0.0): targeted at ~2 per year. Driven by accumulated breaking changes (schema redesigns, command-contract revisions, adapter contract evolutions).
This cadence is a target, not a contract. We will not ship a major just to maintain pacing — every major must justify the breaking change.
A change requires a major bump if it:
- Changes a JSON Schema in a non-backward-compatible way (renames, removes fields, tightens validators) without a migration.
- Removes or renames a public command (
/atlas:*). - Changes the
_testatlas/workspace directory structure such that an old workspace cannot be read by the new suite without migration. - Drops support for a Node version that's still in the maintenance window.
- Removes or breaks an adapter contract.
Schema/command changes accompanied by a migration are NOT breaking — they're a minor bump and an entry in CHANGELOG.md under "Schema migration."
Security fixes are backported to all supported version lines. The patch lands first on the current major, then on the previous major. Both releases happen the same day where possible.
For coordinated disclosure timelines see SECURITY.md.
Across the support window:
- Forward-only migrations. Each migration is N → N+1 and idempotent. Long jumps (v1 → v5) compose automatically through the chain.
- Long-jump CI gate. Every release runs
v1 → currentmigrations against a representative workspace fixture and validates the result. If the chain breaks, the release blocks. - Migration files never deleted.
.testatlas/migrations/v<N>-to-v<N+1>.jsfiles persist in the repo forever — they are the lineage. Removing one would break long-jump composition.
The engines.node floor is the LTS floor. We track:
- Drop a Node major from
engines.nodeonly on a TestAtlas major bump. - Add new Node majors to CI matrix as soon as they enter Active status.
- Currently supported: Node 20.11+ (matches
package.json). - CI matrix: Node 20.x, 22.x, 24.x.
If you need to lock to a specific version (audit, compliance, paced rollout):
// .testatlas/config.json
{
"pinnedVersion": "1.4.2",
"pinnedSince": "2026-05-04T00:00:00Z",
"pinAlertThresholdDays": 90
}Pinned installs:
- Still receive update notifications (informational).
- Are NOT auto-updated.
- Surface a stale-pin warning after
pinnedSince + pinAlertThresholdDays.
The default 90-day threshold is calibrated against typical security-fix windows. Lower it if your compliance posture requires faster review.
Before removing a feature in a major release:
- Mark deprecated in a minor release. Adds a runtime warning (one-shot per session).
- Document migration path in
CHANGELOG.mdand the relevant doc file. - Hold for at least one minor release before removal.
- Remove in the next major.
Adapters get longer deprecation runways (2 minors minimum) because adapter authors have less control over their consumers' upgrade pace.
Tagged releases are immutable. Once v1.2.3 is published:
- The git tag is signed and never moved.
- The npm version is never unpublished (unless a security incident requires registry takedown — extremely rare; coordinated with npm Security).
- The GitHub Release is never deleted (assets may be re-attached if a sidecar needs regeneration).
If a release ships with a critical bug, the fix is v1.2.4, not a re-issue of v1.2.3.
To check what version you're on and what's available:
npx @webventures/testatlas update --dry-runThis prints the installed version, the latest available, and what migrations would run. No changes are made.
To pin to a specific version line and stay there:
// .testatlas/config.json
{
"pinnedVersion": "1" // matches semver `^1`
}This accepts any 1.x.y release. Drop the pin to ride the latest.
- Schema changes mid-version: see docs/UPDATE.md.
- Adapter contract changes: see the contract docs in
.testatlas/adapters/. - Security backport requests: see SECURITY.md.