The third check is where real bugs live. Decoding and re-encoding are mechanical: the generated XDR code either handles a type or it doesn’t. The high-level conversions (strkeys, muxed accounts, transaction hashes, amounts) are hand-written, and they’re where a 64-bit ID quietly becomes a float.
Results
The goldens column is the stellar-core goldens check: 15,306 frames from core’s own test suite, decoded and re-encoded byte for byte.
Running them
What “native” checks, per pattern
The precision probe
The JavaScript runner also records whatNumber() does to every wide integer in the corpus. It’s not a pass/fail check, because the SDK itself is right. It’s a measurement of what happens the moment someone’s code steps outside it:
Both are off. See Keep 64-bit integers exact.
Adding an SDK
A runner is a few hundred lines: walkcorpus/fixtures, decode each file by xdr_type, re-encode, run the native checks for the fixture’s primary CAP, and write corpus/results/<sdk>.json in the same shape as the existing ones. Add it to kit/check-results.mjs and CI. Python and Java runners are on the roadmap.