scene_pipelines.core.hash Canonical content hashing for row etags / sync comparison. content_hash content_hash(payload: Any) -> str SHA-256 of a JSON-canonicalized payload (sorted keys, compact separators). Use for sync etags: pass only the fields that should affect equality (typically non-primary-key attributes and related part keys). Callers decide the payload shape per table.