Plan an upgrade
Upgrading across one major is usually small. Upgrading across several is the union of every boundary between them — and the part you cannot defer is the boundaries that touch data you have already written.
Pick where you are and where you are going.
Showing every boundary from 6 to 19.
Stored observer state
migrate that stored state before starting 7.x, or accept that inbox observers restart from their default position.
Namespaces, transport and several APIs
expect compile errors across the codebase and work through them; update `cratis.json` / `cluster.json`, where single-cluster mode changed from `local` to `single`.
Repository split and startup
Startup and configuration only; wire-compatible both directions
No recorded change
No release notes exist for this major
Stored job state
expect in-flight job state from 10.x to be unreliable. Drain jobs before upgrading if their completion matters.
Internalized APIs and a renamed package
rename the package reference; stop using anything from `Cratis.Chronicle.Contracts` or `Cratis.Chronicle.Infrastructure` that you were reaching into.
One method became async
`await` it. Opt out with `AutoDiscoverAndRegister = false` on `ChronicleOptions` or the `skipDiscovery` argument if you were managing discovery yourself.
Read-model formalization and stored layout
this one touches stored layout as well as APIs. Read the release notes in full, and go to **14.0.1**, not 14.0.0.
Rules retired, TLS, content type
replace Rules usage; fix code that treated `Content` as `ExpandoObject`; configure TLS for production; rename the testing package reference.
One port, always TLS
remove management-port configuration, point tooling and bookmarks at the single TLS port, and configure a certificate for production.
The generated wire contract
take a matching client. Go to **17.0.1** — 17.0.0 is the accidental release described above and carries a pre-migration contract.
Append content back to a string
nothing, if you use a published client at a matching version. A client built directly against the raw gRPC contracts must send and receive `Content` as a string.
A .NET signature
rebuild.
How to read this
Section titled “How to read this”Compile-time boundaries accumulate without interacting. However many you cross, you fix them once against the version you land on.
Stored state boundaries are ordered. They concern data already written, and skipping past one does not skip its consequence. Where your path crosses one, take a backup you have restored from at least once before, and rehearse against a copy.
Wire boundaries mean the kernel and its clients must move together. Chronicle verifies compatibility across every released minor of a major; that guarantee stops at a major boundary, which is what a major means.
Each entry links to the full account in the product’s own upgrade guide, which is where this list comes from — nothing here is maintained separately from the prose it summarizes.