Use Cases
Where BXM earns its place, with a worked case study for each. Every case study is a script in the repository under examples/case-studies. Its recorded output is in test/results/case-studies, and you can run it again yourself.
BXM Canon
Signatures and hashes across languages. One service signs data and another checks it, each in its own language. With Canon both sides sign the same bytes, so the check only fails when the data changed. One order built in Python, JavaScript and by hand gave three JSON hashes and one Canon hash. Python’s signature over its JSON failed in JavaScript, and the one over the Canon bytes passed.
Reviewing config changes. Compare two copies of a JSON config by value, so indentation, key order and escapes drop out and every real change comes with its path. A config diff of 128 lines came down to two lines, one of them an int that a tool had turned into a float.
Finding duplicate records. Use the Canon hash as a dedupe key for records that arrive from more than one producer. Of 100,000 JSON lines, hashing the raw lines found no duplicates and Canon found all 9,900.
Other places it fits: content-addressed storage, cache keys built from structured data, audit logs that have to verify years later, and test fixtures that must not change by accident.
BXM Memo
Skipping unchanged build steps in CI. Wrap a slow step and keep Memo’s small cache between jobs. In GitHub Actions, a Rust release build came back from the cache in under two tenths of a second. Memo also refused to reuse a binary on a runner that had a different Rust version.
Test suites in a repository with several packages. Put each package’s tests behind Memo, and a commit that doesn’t touch a package doesn’t run its tests. Replaying this repository’s history showed the time saved, and turned up two flaky tests.
Knowing why a step ran again. Every miss comes with its reason. A report step run eight times got a named reason for every miss, and putting everything back gave a hit.
Other places it fits: code generation, asset and image processing, documentation and site builds, data preparation, and fixtures that take long to make.