mirror of
https://github.com/penpot/penpot.git
synced 2026-11-05 11:43:25 -05:00
The production runbook promised a rollback it did not have: the section was a sketch, and its statements could write to the table about to be dropped. The rollback is removed, and so is every comment that described it. `file_change_legacy` stays as a frozen copy of the previous layout. The cutover check now aborts the transaction when a row of the old table is missing in the new one, instead of leaving the decision to the operator. The five secondary indexes of the new table are built after the last delta pass: the bulk and the delta passes only need the primary key, so the batches no longer maintain them. The copy of 0158 is now replayed in a test against the pre-0158 shape with a labelled and an unlabelled row, plus an empty instance that must leave no legacy table behind. The updated_at assertion of the snapshot mutations is bounded by the test clock, and the repair revision stops writing the `features` of the file, like the normal save. AI-assisted-by: deepseek-v4.1-flash
Operations
Procedures that are executed by hand on an instance, not by the application.
They are not part of the product: they describe how to do a one-off operation on a running database, with the exact statements to run and what to check between them.
Each procedure lives here while the operation is alive. When the operation is done, the file is either deleted or marked as historical, so the folder does not grow with procedures that nobody will run again.
| Procedure | Version |
|---|---|
Migrate legacy file payloads to file_data |
2.19.0 |
Partition file_change by file_id |
2.19.0 |