In Rich Hickey's talk "The Value of Values", he contends that to have true information, we should not replace old facts with new facts, but keep both with a timestamp.
For instance, if a user changes their email address, we shouldn't overwrite the old address with a new one, but instead remember "the address was [email protected] as of [timestamp], and then it was [email protected] as of [timestamp]".
This makes sense as a principle of data integrity, and I believe it's the principle upon which Datomic is built. However, if that's true, how does Datomic handle mistakes? For example, if the user mistyped their email address, we don't want to report that it used to be "[email protected]"; we want to forget that incorrect info.
How is this done?