{
  "complete_version": "1.1",
  "leaf_hash": "sha256('AILEASH-LEAF-v1:' || value) as lowercase hex",
  "node_hash": "sha256('AILEASH-NODE-v1:' || left_hex || right_hex) as lowercase hex",
  "empty_root": "553bb9072c39fdec7eeb53f3664c1cc34a8a94118c52b0569b0f6319e3600c36",
  "ordering": "leaf VALUES sorted ascending as UTF-8 strings, duplicates removed, before any hashing",
  "odd_nodes": "an unpaired node at any level is promoted unchanged to the next level. It is never hashed with itself.",
  "inclusion": "recompute upward from the leaf using the sibling path. Each step gives a side; hash the sibling on that side.",
  "absence": "verify the two neighbouring leaves independently, check their values sort either side of the queried value, and check their indices are consecutive. Consecutive indices in a sorted tree leave no room for anything between.",
  "completeness": "the leaf count is sealed with the root, before any export is requested",
  "schedule": "closed months are committed automatically, deployment-wide, on the first request to reach this module after the month ends. Per-key commitments remain a keyed POST. Lateness is published per period rather than smoothed over.",
  "why_published": "Anyone should be able to write their own verifier and check us without running our code or holding an account. A proof you can only check with the prover's own tool is not a proof."
}