← The Record
For CTOs, CIOs & AI Engineers

Additive Forever

A migration that cannot drop a column cannot destroy the record. Schema discipline is a governance property, not a database preference.

A land title registry has a peculiar rule that sounds bureaucratic until you understand what it is protecting. You cannot erase an entry. When a property changes hands, when a lien is added, when a boundary is corrected, the registry does not reach back and overwrite the old fact with the new one. It appends. The chain of every owner, every claim, every correction, stretching back to the first recorded deed, stays legible forever. The history of the title is not metadata about the title. The history is the title. Erase the chain and you have not tidied the record. You have destroyed the thing the record was for.

Accountants know the same rule in a different suit. You never erase a bad entry in the ledger; you post a correcting one, and both stay visible, the error and its fix, side by side, forever. Five hundred years of financial control rests on the refusal to reach back and change what was already written. Serious records are append-only not because someone wrote a policy, but because a record you can quietly rewrite is not a record. It is a rumor with better formatting.

I bring up deeds and ledgers because a governed agent org runs on a record exactly this load-bearing, and it lives in a place most engineers treat as casually mutable: the database.

The database is not storage. It is the record.

In most systems, the database is where you keep state. Rows you read, rows you update, rows you delete when they are stale. It is furniture. You rearrange it when it suits you.

In a governed agent org, the database is something else entirely, and mistaking it for furniture is the whole danger. It is the audit lifecycle, the queryable history of every decision the org made (Logs Are Not Audit). It is the spend ledger, every cost the org incurred against every cap (When the Agent Spends Money). It is the authority registry the pipeline reads to decide who can approve what (Authority Is Derived, Never Listed). It is the performance record that an agent's earned authority is computed from (Probation: How an Agent Earns Authority). Every promise the rest of this series makes about a queryable, trustworthy history is, underneath, a promise about this database and the shape of the tables in it.

Which means a schema change is not a database chore. It is a governance event. And it earns the rule that governs the most serious records humans keep.

Migrations on a live governed system are additive only. New tables, new nullable columns with defaults. No drops, no renames, no type changes. You do not get to reach back and reshape the container the record lives in.

A DROP COLUMN on an audit table is not a cleanup. It is retroactive governance failure. It does not merely lose some data you decided you did not need. It un-answers a question the org already promised, on the record, that it could answer. Yesterday you could prove who approved that merge. You ran a migration overnight. Today you cannot, and the worst part is that nothing looks broken. The system runs fine. It just quietly stopped being able to tell you the truth about its own past.

The rules, as discipline you can adopt

The principle turns into a short list of concrete practices, and none of them are exotic. They are the boring habits that make a record trustworthy.

Additive only, on live systems. You add tables and you add nullable columns with sane defaults. You do not drop, you do not rename, you do not change a type out from under data that already exists. Every seed is idempotent, meaning a migration that runs twice does no harm the second time, because "this will run exactly once" is a promise distributed systems cannot actually keep, and a discipline built on that promise is built on sand. And code that ships ahead of its migration is flag-gated so both orderings are safe: the write path strips the new field until the schema exists to hold it, so a deploy that lands before its migration degrades to a missing optional column instead of a hard failure on every write in production. The reward for all this care is that deploys stop being a held breath. Old code and new schema are always mutually safe, which is what makes a zero-downtime deploy boring, and boring is the highest compliment you can pay a deploy.

Rules in prose do not hold, so these do not live in prose

Everything I just described would be worthless as a paragraph in an engineering handbook, because a rule that lives only in prose is a rule that holds until the first tired Friday (The Wall Is Not a Sign is the paper on why a boundary written in a document is a suggestion and a boundary written in architecture is a wall). So the additive-only rule is not advice. It is enforced in three places.

The schema directory sits inside the constitutionally protected paths (The Code the Build Won't Let You Touch). A change to it cannot merge without explicit human sign-off; the build dies on contact and the merge does not happen until a person has looked. Schema changes are exactly the class of change where the frozen-path gate earns its keep.

Security-critical migrations ship with a sibling assertion test that queries the live catalog and fails, loudly, if any later change ever silently drops the policy or the constraint it protects. This is the part I would underline twice. A control that can be removed without a test going red is a control running on the honor system, and the honor system is not a control. The assertion test is what makes the protection self-defending: you cannot quietly undo it later without something turning red in front of a human.

And the migration ledger itself is guarded. The tooling refuses to run when the set of migration files is off-contract, because the ledger's integrity is the thing that makes "what has been applied to production" a fact rather than a belief. This is not hypothetical hardening. In the production environment where this architecture runs, that guard caught stray duplicate migration files that would otherwise have been applied to production and permanently desynced the ledger from the repository. The guard turned what would have been a genuine production incident, the kind you diagnose for two days, into an error message before anything ran. That is the entire value of enforcement in one event: the wall did not warn, it stopped the merge, and the incident that never happened is the one you never had to write a postmortem for.

"Additive forever means the schema accretes junk forever"

The obvious objection is that this rule is a hoarding disorder with a commit history. Never drop, never rename, only add, and in five years the schema is a landfill of columns nobody reads, dragging every query and confusing every new engineer. Discipline that forbids cleanup is just a slow-motion mess.

Yes. Deliberately. It is the exact trade every serious accounting system has made for five centuries, and they made it on purpose with full knowledge of the cost. The ledger accretes too. The land registry accretes too. They accepted the accumulation because the alternative, a record you are allowed to prune, is a record you are allowed to falsify, and there is no version of "trustworthy history" that also lets you quietly delete the parts you have outgrown.

And the accumulation is cheaper than it sounds, because deprecation is a lifecycle rather than an event. You stop writing to a column, then you stop reading it, then you archive it, each step recorded, none of them a destructive reach back into live history. The cost of a few columns you no longer read is rounding error. The cost of a record you can no longer trust is the whole business. Given that trade, you keep the columns.

Governance all the way down

The series has built a stack. The org chart is code the system reads (The Org Chart Is Code). Authority is derived from that structure rather than copied into a list (Authority Is Derived, Never Listed). Every decision those structures make lands in a queryable record. This paper is the floor under all of it. The record that every other paper depends on lives in a container the org is constitutionally forbidden from quietly reshaping.

That is what governance all the way down actually means. Not that the top of the stack is well-governed while the foundation is left mutable and hoped over. The discipline reaches past the application, past the authority model, past the audit trail, and into the shape of the tables underneath, because a record is only as trustworthy as the permanence of the thing that holds it. You can govern every decision in the org perfectly and still lose all of it to one casual DROP COLUMN on a Tuesday. Additive forever is the rule that says the Tuesday never comes.

References

  1. SpeyAI, Rise of the Agent Org library. Companion papers: Logs Are Not Audit (the decision record this rule protects); The Code the Build Won't Let You Touch (the frozen paths the schema directory lives inside); When the Agent Spends Money (the spend ledger held in the same database); Probation: How an Agent Earns Authority (the performance record authority is computed from); Authority Is Derived, Never Listed (the authority registry that must not drift); The Wall Is Not a Sign (why the rule is enforced rather than written).

This paper is part of Rise of the Agent Org, a series by Ed Hoehn, SpeyAI. The full library is at speyai.com/record.

The missing layer

Architecture as governance. See how it runs.