Signal versions and events cannot be updated or deleted
Row-level database triggers on signal_versions and signal_events
Both tables carry a before-update-or-delete trigger that raises an exception reading "Signal ledger rows are immutable". This is enforced inside the database, not in application code, so it holds for every writer including our own server workers. Those two tables, and only those two: the limits below name what the trigger does not cover, because the scope of this guarantee is narrower than the phrase "append-only ledger" suggests.