Upgrading a project#

When you install a newer Ingence, the projects you made with an older one keep working. This guide says what is safe, what to run once, and the one case where an older Ingence refuses.

Two versions#

Two version numbers move independently. ingence --version prints both.

  • The package version is the release of Ingence itself, such as 0.3.0. Before 1.0 it is written 0.MINOR.PATCH. MINOR moves when a change makes a project unreadable by the previous package. PATCH moves for every other change. A .devN ending marks a development build between releases.

  • The schema version is the version of the record format that the engine writes into every project. A change that adds a field compatibly moves its minor number. A change to what an existing field means would move the major number and need a migration. There has not been one.

Every run also records which build of the engine made it.

A newer Ingence reads an older project#

You do not convert anything. Install the newer Ingence and open the project. A project written by an older engine is read as it is, and the newer engine’s rules and Dictionary apply to it from the next run.

When the way names are read has changed between versions, the stored readings of names are those of the older one. Read them again under the current vocabulary and decisions:

ingence index --rebind -p PROJECT
ingence infer -p PROJECT

--rebind reads every stored name again and touches no folder. It works with the drive unplugged. Run one whole --rebind first after an upgrade: a partial one (--rebind --spelling WORD) is refused across a changed vocabulary. The Dashboard does the same when you press Re-run.

An older Ingence refuses a newer project#

Once a newer Ingence has written into a project (a new kind of decision, a new run), an older Ingence stops and says which version it needs, instead of guessing at fields it has never seen. If two people with different versions must share a project, upgrade a copy first.

Check a project#

ingence fix -p PROJECT

fix reports what a project holds and anything repairable. By default it changes nothing. --verify compares the two most recent runs to check that Ingence is deterministic: the same inputs give the same result.