Skip to content

Change validation

Validate a Foundation change across every stability dimension it touches: semantic value, serialized bytes, schema version, migration, fingerprint, public import, and consumer interpretation.

Change-to-proof map

Change Required local proof Required boundary proof
identifier validation or normalization valid/invalid table, equality, canonical form, round trip joins, caches, and reference consumers
result, failure, or refusal exhaustive constructors and serialized outcome every consumer branch that distinguishes the outcomes
canonical JSON or stable value byte fixtures, unsupported inputs, ordering, round trip fingerprints and persisted artifact readers
document schema old/new fixtures, version, validation, round trip all packages that publish or read the document
migration source and target fixtures, loss policy, unsupported path, repeat behavior consumer opens migrated output without coercion
fingerprint equal-meaning and changed-meaning cases cache, artifact, or evidence identity consumers
public export API guard, typing, import-boundary and dependency checks direct downstream imports

Validation route

flowchart TD
    E["Foundation edit"] --> M["name changed meaning"]
    M --> S{"persisted or public?"}
    S -->|yes| V["schema, bytes, version, migration, API"]
    S -->|no| L["local invariant proof"]
    V --> C["affected consumer tests"]
    L --> C
    C --> D{"same interpretation?"}
    D -->|yes| P["validated"]
    D -->|no or unknown| B["breaking or unproven"]

Inspect generated or retained fixtures before and after the change. A parser that accepts old bytes is not compatible if the reconstructed meaning moved. A successful migration is not safe if it drops provenance or collapses an outcome class.

Validation record

State the contract family, old and new meaning, stability dimensions, schema versions, migration direction and loss policy, consumers, exact checks, and unverified paths. If compatibility is intentionally broken, use an explicit version and rejection path rather than silent coercion.