How versioning works

Semantic Versioning x.y.z: x is the platform phase, y the subphase advanced by service releases, z fixes and documentation.

T
Written By thinkheadLast updated about 7 hours ago

Think releases are numbered with Semantic Versioning — three numbers, x.y.z, and nothing else. No -rc, no -beta, no build metadata.

What is unusual is what each number means here. Think is a platform of many services rather than a single application, so the usual "breaking / feature / fix" reading does not fit. This is the mapping we use instead.

What each number means

Part

Name

Moves when…

x

Phase

The platform enters a new phase — a deliberate, planned shift

y

Subphase

A new application or service is released, or one gets a major update

z

Patch

Documentation, fixes, retrofits, and minor application updates

x — Phase

The major number is a phase, not a breaking change. It moves when the platform itself moves: a new era of what Think is doing, planned rather than accumulated.

Phases are rare by design. Most of what you see in the changelog will never touch this number.

y — Subphase

The minor number is the subphase, and it advances when a service is released or majorly updated. Those are the same event: shipping a service is what moves the platform to its next subphase.

That covers:

  • A new application or service goes live — something exists that did not before
  • An existing application gets a major update — a large upstream version jump, a migration to a different application, or a change big enough that the service behaves differently

Replacing ThinkBugs with ThinkFeedback advanced the subphase: same purpose, different application, visibly different service.

z — Patch

The patch number carries everything else, and most of the traffic:

  • Documentation — new or rewritten wiki and Help Center pages
  • Fixes — bugs resolved
  • Retrofits — bringing an existing service in line with current standards
  • Minor application updates — routine version bumps nobody would notice

Reading a version

At the time of writing the platform is in phase 5, subphase 1.

Version

Means

5.1.0

Phase 5, subphase 1, no patches yet

5.1.7

Seven patch releases since — documentation, fixes, retrofits

5.2.0

A service was released or majorly updated; subphase advances

6.0.0

The platform entered a new phase

The numbers only ever go up, and they never reset — 6.0.0 follows 5.9.14 rather than starting again. Patch resets to zero when the subphase advances; subphase resets to zero when the phase advances.

What this is not

  • No pre-release suffixes. Nothing ships as 5.2.0-rc.1. Lifecycle stage — Alpha, Beta, Production — is tracked per service on the lifecycle page, never in the version string.
  • Not a version of any single application. A Think version numbers the platform. The version of the application behind a service is a separate thing you rarely need.
  • Not tied to a schedule. Versions are assigned to releases as they happen, not on a cadence.

Was this helpful?

Your feedback shapes what we write next.