Versions and compatibility
Four different numbers in this product are called a version, and they change for different reasons. This page says what each one names, what survives an upgrade, and how to move an installation forward or back.
The four numbers
| Number | Where it lives | What it names |
|---|---|---|
| The release | nexus --version, the changelog |
The build of the platform you are running: binary, migrations, manual |
| The language version | flowmarkdown_version: in a flow file |
Which version of FlowMarkdown the file is written against. Required; "0.0" and "0.1" are accepted |
| The artifact version | nexus deploy --version 1.3.0 |
Your name for one published revision of one flow, in one tenant |
| The artifact hash | printed by deploy, shown in the Registry page |
The identity of the compiled bytes themselves, computed from them |
Only the first is ours. The artifact version is a label you choose: the platform stores it, refuses
to let you claim it twice for the same flow, and never interprets it — 1.3.0 does not resolve
before or after 1.2.9, because the flow that runs is the one latest points at, not the highest
number. See Running NexusFabric for how latest resolves on each
door.
The hash is the one identity nobody chooses. It is computed over the artifact’s own bytes and verified on every read, so a stored artifact that no longer matches its key fails the request instead of executing something that changed underneath you.
Publishing a new revision of a flow
nexus deploy compiles the file, stores the artifact and moves that flow’s latest pointer. It runs
against a live server: every request resolves latest when it arrives, so the next one uses the new
artifact and the requests already in flight finish against the one they started with. No restart, no
drain, with one exception — a change to schedule: is read at startup.
A version number is claimed once. Redeploying the same number fails and changes nothing, which is what makes a version a fixed point you can cite in a ticket. Older versions are never deleted: their bytes stay in the registry and the Registry page lists them.
Going back is a deploy, not a delete. Publish the previous source again under a new number; that
moves latest back to equivalent bytes and leaves the history intact.
What an upgrade of the platform does
Artifacts published by an earlier build keep running. The compiled artifact is the contract
between the two, and an upgrade does not rewrite it. This has a consequence worth stating plainly,
because it cuts both ways: a check added to the compiler applies at publication, so a flow that
was published before the check keeps running exactly as it did. To get the new verdict on an old
flow, republish it — nexus validate gives the same answer without side effects.
A few of those checks matter enough that the platform says so at startup rather than waiting for a republish, naming the tenant, the flow and the key at fault. Where that happens it is documented on the page for the feature, and the repair is always the same: fix the file and deploy it again.
The databases migrate forward on their own. Each schema change is a numbered migration, applied
once, in order, inside its own transaction, and recorded in the schema_migrations table of the
database it belongs to. Starting a newer build against an older database applies whatever is
missing, and starting it twice applies nothing the second time.
There is no down migration. A database that has been migrated forward is not readable by the previous build, so going back to an earlier release means restoring the state directory from the snapshot taken before the upgrade. That is the order for any upgrade worth planning:
- Stop the engine, or all of them.
- Copy the state directory — registry, queue, log and UI databases, and the queue directory beside them. Running NexusFabric lists what is where.
- Put the new binary in place and start one engine. The migrations run at startup, and a failure stops the start rather than half-applying.
- Check
/health, then the Dashboard, then send one message through a flow you know. - Start the rest.
What counts as a breaking change
A release note names a change as breaking when it can change the behaviour of something already published or already integrated against. In practice that is one of:
- the meaning or the name of a frontmatter or step key;
- the shape of a response body, or the status code an outcome produces;
- a name the platform reserves for itself;
- a new refusal at publication, which is breaking for the next deploy of an existing file rather than for the running installation;
- a schema migration that cannot be reversed, which is every one of them.
Each of those appears in the changelog for the release that carries it, with the repair next to it. The manual is updated in the same change that ships the behaviour, so the page you are reading describes the build you are running, not the one before it.
Licence
NexusFabric is commercial software, licensed per contract. There is no public download and no source distribution: the binary, the image and the accompanying documentation reach a customer through the agreement signed with them, and the terms of that agreement — not this page — govern the installation.
For the versions supported under a given agreement, and for what an upgrade entitlement covers, read the contract or ask your contact at TECHNOHUB SRL.