# SLIP39 public-data experiment

WARNING: ALL SECRETS, SHARES AND RANDOMNESS ARE PUBLIC TEST DATA.
Never use these values for funds. Never add real recovery words to this script.

Extract the entire archive into a new directory. With Python 3.12, run:

    python -I -X utf8 run_lab.py

No pip installation is required. The runner accepts no arguments and uses only
fixed public values. It overwrites fixtures.json and results.json in this folder.
It verifies every vendored file against source-manifest.json before importing it.
The vendored implementation is MIT-licensed; its LICENSE is included.

Upstream: https://github.com/trezor/python-shamir-mnemonic
Commit: 17fcce14736afe498871d3018e4fa9330443471a (version field 0.3.1).
45 official vectors + 32 additional checks = 77 expected outcomes.
PASS includes intended refusals and different results, not just recovery matches.
The official vectors' BIP32 extended private keys were not checked.

The runner uses a Python audit hook to refuse network/process operations and
file access outside this directory or the Python installation, with two fixed
output files. This is not proof of OS-wide isolation or an air-gapped computer.
It uses deterministic public randomness, unsuitable for real custody.

R01: earlier and later backups of the same EMS, all extendable=True, identifier=42.
It does not test a Trezor device, old SLIP39 formats, or a product upgrade.
X01: deliberately shared metadata across independently split test sets.
X02: excess input rejected by this API; every two-share subset succeeded.
No hardware, wallet balance, addresses, signing, or transfers were tested.
The upstream software is not hardened for handling sensitive secrets.
