Hi Cüneyt,
I finally sat down with pattern13_prml_commit_reveal.py — thank you for building it. The three-tamper-scenarios structure (each layer catching what the ones below can't) explains the composition better than our prose ever did, and the REAL-vs-MODELLED header is exactly the kind of honesty labelling more demos should have.
One small compatibility note, flagged mostly because it's interesting: your Merkle tree uses leaf/node domain separation (0x00/0x01 prefixes, RFC 6962 style). The shipped valichord_attestation v1.2 hashes pairs bare — sha256(left + right), no tags — so the same samples produce a different root in the demo than in the library. The fun part: domain separation is already on our v2 consideration list from an internal audit last week, so you independently reached for the stronger construction before we shipped it. The demo isn't wrong so much as early.
Two easy ways to square it, either of which I'm happy to do as a PR if useful:
- A one-line note in the demo/README that the Merkle here anticipates the v2 construction (bare-pair hashing in v1.2), or
- We publish a small conformance vector for the v1.2 Merkle root — your own PRML medicine, applied to us — so any re-implementation can check itself.
When v2 lands with the prefixes, your demo becomes exact with no changes. Which feels like the right ending.
The lm-eval bridge as flagship looks great, by the way — good to see the ITE-6 Statement idea from the June thread shipped and runnable.
Best,
Ceri
Hi Cüneyt,
I finally sat down with
pattern13_prml_commit_reveal.py— thank you for building it. The three-tamper-scenarios structure (each layer catching what the ones below can't) explains the composition better than our prose ever did, and the REAL-vs-MODELLED header is exactly the kind of honesty labelling more demos should have.One small compatibility note, flagged mostly because it's interesting: your Merkle tree uses leaf/node domain separation (
0x00/0x01prefixes, RFC 6962 style). The shippedvalichord_attestationv1.2 hashes pairs bare —sha256(left + right), no tags — so the same samples produce a different root in the demo than in the library. The fun part: domain separation is already on our v2 consideration list from an internal audit last week, so you independently reached for the stronger construction before we shipped it. The demo isn't wrong so much as early.Two easy ways to square it, either of which I'm happy to do as a PR if useful:
When v2 lands with the prefixes, your demo becomes exact with no changes. Which feels like the right ending.
The lm-eval bridge as flagship looks great, by the way — good to see the ITE-6 Statement idea from the June thread shipped and runnable.
Best,
Ceri