bootstrap
Creates the table if it is not there, and brings an older one up to date.
The statements below are the whole upgrade path, which holds as long as three rules do: a new column is nullable or has a default, an existing column never changes meaning, and the set of state values only ever grows. Break one of those and an older migrator reading this table starts guessing.
The schema is created too - the table has to exist before the first migration runs, so a schema a migration would have created is one the history could not be kept in.