# Run the exact proof

From the package folder:

```powershell
python tests/test_merkle.py
python tests/run_parity.py
python tests/build_visuals.py
python tests/build_lab.py
node tests/visual-qa.mjs
```

Python:

```python
import json, sys
from pathlib import Path
sys.path.insert(0, str(Path("implementations/python").resolve()))
from merkle_commitment import build_merkle_commitment, verify_merkle_inclusion
cases = json.loads(Path("datasets/merkle-cases.json").read_text())["cases"]
request = next(c["request"] for c in cases if c["id"] == "B-prefix-3")
built = build_merkle_commitment(request)
print(built["commitment"]["root_hex"])
print(verify_merkle_inclusion(built["proof"], None)["code"])
```

Output root 34ad17bffd657e7227adb7083eb1be5d0a7f9bcd5ba6b404313dce2242393192, then MISSING_TRUSTED_COMMITMENT. Obtain the second verification argument from an independently retained authorized commitment; do not call a locally generated root independent evidence.

TypeScript uses await buildMerkleCommitment(request) and await verifyMerkleInclusion(proof,trustedRoot). Native WebCrypto is required; the compiled module has no sibling imports. Open visuals/animated/merkle-proof-lab.html to inspect the same native browser kernel.
