PMFA
← Return to Index
013

Projections Are Contracts, Not Storage

A projection is not data storage. It is a contractual transformation of events into queryable state.
Version 1.0.0 — Ratified

Projections Are Contracts, Not Storage

A projection is not a database table. A projection is a promise.

It promises that, given the same truth, the same view will exist.

I. The Misuse of Projections

Most systems treat projections as:

denormalized tables

cached views

optimized storage

This misunderstanding turns projections into fragile state.

Storage persists data. A contract defines meaning.

II. Projections Encode Interpretation

A projection answers:

how the system wants to be seen

what questions are allowed

which dimensions matter

It is an interpretation of truth, not truth itself.

Changing a projection changes meaning.

That requires governance.

III. Contracts Are Versioned

A contract must be:

explicit

versioned

stable over time

If a projection silently changes:

reports change

KPIs shift

legal meaning drifts

Unversioned projections are ungoverned law.

IV. Projections Must Be Rebuildable

A lawful projection:

can be dropped at any time

can be rebuilt from events

yields identical results

If rebuilding changes outcomes, the contract was violated.

V. Storage Cannot Promise Meaning

Tables store rows. They promise nothing.

A projection promises:

“This is what this data means.”

Meaning is a commitment, not a byproduct.

VI. Audit Depends on Projection Contracts

Auditors do not ask:

“what rows exist?”

They ask:

“what did this report mean at that time?”

Only versioned projections can answer that.

VII. Breaking Contracts Breaks Trust

When projections change without declaration:

users lose trust

compliance fails

history becomes ambiguous

Silent projection changes are silent law changes.

VIII. Final Conclusion

Projections are contracts, not storage.

A lawful system:

treats projections as versioned contracts

rebuilds them from immutable events

never mutates them silently

Anything else treats meaning as an implementation detail.

Canonical text. Interpretations are invalid.
SHA-256: 117d52bf1dade2523be3c4b4493e1a25c1094f23f4e3ec73c22487571d44d7f9