Skip to content
About
Main content

Propositions about the world

Why can no system prove its data is right, and how do validation and reconciliation differ?

Every layer of a data system below this mechanism can check itself. A checksum (a number computed from the bytes) decides whether a disk block has rotted, with no outside help. A write-ahead log (a file where changes are recorded before they are applied) decides whether a write landed. A two-phase commit (a protocol where all participants vote before a change is final) decides whether all participants agreed. A type check decides whether a field decodes as an integer. In each case the question is internal: it is a statement about the system's own state, and the system holds enough information to answer it.

This mechanism is about the first kind of question that is about the world. "This customer ID is real." "Yesterday's revenue is plausible." "These two rows are the same person." None of these can be decided from the bytes. The thing the statement is about lives outside the system. So the mechanism has to change shape. You cannot prove the content correct. You can only fail to disprove it against an expectation that some person wrote down. That expectation is itself an artifact: it has a maintainer, a version, and a rate at which it goes out of date.

That is the break. The new constraint is the absence of an internal . The constraint that stops mattering is the determinism of the verdict. Below this mechanism, a failed check has exactly one meaning and one response: retry, roll back, or fail over. Here, a failed check has three possible meanings, and you cannot tell which from the failure alone:

  1. The data is wrong.
  2. The world changed legitimately (a new product category, a new status code, a sale day).
  3. The expectation is stale (the check itself is out of date).

Recovery machinery in a fault-tolerant system assumes the system already knows what "correct" was. This mechanism is where that knowledge is manufactured.

So the governing question becomes:

How much of a claim about the world can be tested using data we already hold, what does the test cost, and who pays when it is wrong in each of its two possible directions?

And the sentence to remember:


The two halves are structurally different

This mechanism splits into and . The division is not cosmetic. The two halves differ in what supplies the reference.

Validation compares data to a stated expectation: a constraint, a range, a distribution, a prior belief. The reference is a human assertion. Validation is cheap, single-pass and local. But it can only catch violations that someone anticipated. Its failure mode is silence about the unimagined.

Reconciliation compares data to a second independent authority: the source system, a parallel computation, or an earlier version of the same dataset. The reference is another system's answer. It catches things nobody anticipated, because it needs no hypothesis: a difference announces itself. Its cost is that you must move or the other side's data. Its ambiguity is that a disagreement never tells you which side is wrong.

Validation is a hypothesis test. Reconciliation is a (a comparison of two answers). You need both, because each covers the other's blind spot. The choice between them is mostly economic: hypothesis tests are cheap and narrow, differentials are expensive and broad.

Fired checks are visible and can be judged. Defects for which no check was written produce no evidence of their own absence. Every quality programme overestimates its coverage, and the bias is structural, not a lack of rigour. The only instrument that partly escapes it is a differential against an independent authority, which is why reconciliation exists as a separate discipline instead of being "more validation".