MLF 1.0 · mlfc 1.0.0

Four fingerprints

Same meaning. Different looks. Provably both.

One hash over a whole package answers only one question: are these the same bytes? MLF carries four, so it can answer the question anyone actually has — what changed?

The four

  • structural

    Matrices, coordinates, roles, regions, dependencies and routes.

  • content

    Values and source formulas.

  • semantic

    Normalized structure plus content meaning.

  • presentation

    Styles, layout and human-view metadata.

They are independent by construction. Restyling a package moves the presentation hash and leaves the other three alone. Editing a value moves content and semantic and leaves structural alone. A single package hash cannot express either of those statements.

Semantic equality

The useful consequence is a claim you can actually check: two packages can be semantically equal while differing in presentation. That is not a hedge — it is a testable relation between two files.

semantic

Migration from MLF 0.1 to 1.0 must preserve semantic and presentation fingerprints. The v1.0 release verification records semantic_equal: true and presentation_equal: true for that migration, with validation status valid.

So the 0.1 → 1.0 migration is not merely believed to be safe. The claim has a shape, and the release run checked it.

Where each one comes from

Each fingerprint is computed over a declared subset of the package. The anatomy on the overview marks which members feed which hash.

FingerprintComputed over
Structuralmatrices, coordinates, roles, regions, dependencies, routes
Contentvalues and source formulas
Semanticnormalized structure plus content meaning
Presentationstyles, layout and human-view metadata

Checksums are a different thing

checksums.json binds every path to its bytes with SHA-256. That is integrity — did this file arrive intact. The four fingerprints are identity — is this the same document in some specific sense. Conflating them gives you a system that can tell you a file is undamaged and nothing else.

Diffing

mlfc diff compares two packages using this vocabulary, so a difference is reported in terms of which layer moved rather than as a byte offset.

bash
mlfc diff a.mlf b.mlf