# The identity

The file is `{ClassName}.{fingerprint}.json`. The fingerprint is eight hex of
the sha256 of the compiled schema, rendered as deterministic text.

**Everything in the schema counts** — types, limits, defaults, the order of the
fields, and the notation atoms (`Label`, `Description`, `Placeholder`, …) that
change nothing a file can carry. No exceptions and no small print: a contract
without special cases fits in one sentence and is tested in three lines.

Change the class and you get a new, empty database. The old file stays where it
was, untouched and readable, named for the schema that wrote it. Moving rows
across is a script over readable JSON — a minute of work —
and it is deliberately outside this library, because a migration that runs
automatically is a migration nobody read.
