Problem
nono-py should match the Rust core byte-for-byte for equivalent inputs. Today some Python paths emit different canonical JSON, so the same session can produce different leaf hashes, chain heads, Merkle roots, and session digests than Rust. An instance was noticed in #82
Goal
Achieve full wire/API parity so that the same session/event/metadata produces identical hashes in Python and Rust.
Approach
Compare Python serialization against Rust wire formats
Fix mismatches (e.g. optional fields omitted in Rust but present in Python)
Add shared golden-vector tests to lock parity in CI
Problem
nono-py should match the Rust core byte-for-byte for equivalent inputs. Today some Python paths emit different canonical JSON, so the same session can produce different leaf hashes, chain heads, Merkle roots, and session digests than Rust. An instance was noticed in #82
Goal
Achieve full wire/API parity so that the same session/event/metadata produces identical hashes in Python and Rust.
Approach
Compare Python serialization against Rust wire formats
Fix mismatches (e.g. optional fields omitted in Rust but present in Python)
Add shared golden-vector tests to lock parity in CI