How versioning works

Versions are x.y.z.w: phase, subphase, release and change.

T
Written By thinkheadLast updated about 2 months ago

Think releases are numbered x.y.z.w — four numbers, no suffixes. No -rc, no -beta, no build metadata.

Four rather than the usual three, because Think is a platform of many services rather than a single application. Three numbers could not separate what the platform is doing from what actually shipped.

The four parts

Part

Name

Moves when…

Verbs

x

Phase

The platform enters a new phase

Phase N

y

Subphase

A new subphase begins inside that phase

Phase N.M

z

Release

Something that did not exist before goes live

Released · Re-released · Migrated · Deprecated · Added (new thing or content)

w

Change

Anything else ships

Upgraded · Fixed · Retrofitted · Documentation of · In progress

y resets z and w. z does not reset w.

x — Phase

A phase is a deliberate, planned shift in what Think is doing — a new era, not an accumulation. Phases are rare by design, and most releases never touch this number.

y — Subphase

A phase is delivered through subphases: named workstreams with their own scope. Phase 6 runs automated delivery, a GitOps retrofit, an infrastructure audit and a secret management rollout as separate subphases.

Subphases are visible on the Roadmap, where you can see which is current, which are finished and which are queued.

z — Release

The release number counts things that did not exist before:

  • A new service or application going live
  • A service migrated onto a different application or platform
  • A service retired — removal changes what is available just as arrival does
  • A body of content users can consume: games, roms, films, quizzes

Internal components count too. Deploying CrowdSec, Elasticsearch or a secondary DNS is a release even though no one browses to it.

w — Change

The change number counts work on what already exists:

  • Upgraded — a version bump, no behaviour change expected
  • Fixed — a defect corrected, including failed hardware
  • Retrofitted — an existing service brought in line with current standards
  • Documentation of — a wiki or Help Centre page
  • In progress — work started but not yet shipped

w does not reset when z moves. Both count from the start of the subphase, so a release and a change can advance in the same entry without either resetting the other.

Reading a version

6.3.14.26 means: phase 6, subphase 3, 14 releases and 26 further changes since that subphase began.

Version

Means

5.1.54.18

Phase 5, subphase 1 — a long stretch, 54 releases deep

6.2.5.23

Subphase 6.2 begins; 5 releases and 23 changes in it

6.3.6.15

Subphase 6.3 begins; counts restart

6.3.14.26

Eight more releases and 26 changes later

Numbers only ever go up within their scope, and they never reset backwards. You will see gaps: a subphase that is deferred and ships nothing never appears in a version.

What this is not

  • No pre-release suffixes. Nothing ships as 6.3.14.26-rc.1. Lifecycle stage — Alpha, Beta, Production — is tracked per service on the lifecycle page, never in the version.
  • Not a version of any single application. A Think version numbers the platform, not the software behind a service.
  • Not tied to a schedule. Versions are assigned as work ships, not on a cadence.
  • Not Semantic Versioning. SemVer has three parts with different meanings. This borrows the dotted shape and nothing else.

Was this helpful?

Your feedback shapes what we write next.