graflo.architecture.evolution.hashing¶
Content hashes over manifest blocks.
Lives at L4 rather than in migrate (L6) because the revision chain needs to
verify a replayed manifest, and architecture.evolution may not import
migrate. migrate.io re-exports these, which is where they have always
been imported from.
Every hash is SHA-256 over the model's to_minimal_canonical_dict(), so two
manifests that differ only in default-valued fields or key order hash equal.
full_hash(schema, ingestion_model, bindings)
¶
Stable hash over a composed deployment object.
Source code in graflo/architecture/evolution/hashing.py
graph_hash(schema)
¶
ingestion_hash(ingestion_model)
¶
Stable hash over the ingestion model (resources + transforms).
manifest_hash(manifest)
¶
Stable hash over all three manifest blocks.
This is the identity a revision chain verifies against: replaying a chain from its base must reproduce the recorded hash at every step.
Source code in graflo/architecture/evolution/hashing.py
schema_hash(schema)
¶
Stable hash over the schema deployment contract (graph + DB profile).
Source code in graflo/architecture/evolution/hashing.py
stable_hash(payload_obj)
¶
SHA-256 over a canonical JSON rendering of payload_obj.