Backups
Backups keep point-in-time copies of every namespace, so any past state reads back and any Change reverts.
Backups keep every past state of a namespace readable and every Change revertible. Nothing in db.sb is ever deleted, so a backup is history you can query.
Contract
A delete is a marker that hides a Thing from reads and can itself be reversed. Definitions change only through Changes, which resolve to immutable Versions. Facts keep every revision.
| To | Do |
|---|---|
| Read a Thing as it was | GET api.sb/, or at on any get |
| List a Thing's Versions | GET api.sb/ |
| Undo one Change | Revert it: a new Change with a superseding Decision |
| Undo many Changes | Revert by query, such as every Change one Agent merged on one day |
| Restore a namespace | One Change returns every record to a point in time |
| Survive a lost region | An independent archive copy of each namespace, kept in a second region inside its residency (us or eu) |
Undo never un-moves money or un-sends a Message. Those take a reversing Action: a refund or a correction. Every revert names who made it and why.
Verbs
| Verb | Object | Event |
|---|---|---|
| Change.revert | Change | Change.reverted |
Interfaces
Example
ledgerly.io, a bookkeeping Service, merges a Change that doubles its monthly Price by mistake. An Agent on its Finance Team reverts the Change within the hour, and each overcharged Customer gets a refund as its own Action.