Recomputes a Merkle airdrop-claim proof from a declared leaf (address, amount) and sibling proof path up to a claimed_root, OpenZeppelin MerkleProof.verify shape (processProof / _hashPair). Leaf encoding (double- or single-hash) and pair hashing (sorted/commutative or explicit left/right position) are both declared parameters, never assumptions. An optional claimed_path re-verifies a prior proof trace and reports the earliest step where the recompute diverges.
A recomputed root that matches claimed_root proves the declared leaf, in combination with the declared sibling path, hashes up to that root under the declared encoding/pair-sort rules. Nothing more. This node does NOT know whether claimed_root is the root actually recorded on any chain, whether this leaf's allocation has already been claimed or redeemed, whether the underlying tree was built correctly from the full allocation list, or who controls the address. It never fetches on-chain state and is never a party to a claim transaction.
[] means the leaf itself is the root (depth 0). When pair_sort is unchecked, each entry must be {"sibling":"0x...","position":"left"|"right"} instead of a plain hash string.path[].running_hash values here to test whether a possibly-altered proof/leaf still reproduces the same step-by-step trace. Leave as [] to just verify the root.