diff --git a/.github/workflows/examples-ci.yml b/.github/workflows/examples-ci.yml index 310e6f1..23adbcc 100644 --- a/.github/workflows/examples-ci.yml +++ b/.github/workflows/examples-ci.yml @@ -249,7 +249,7 @@ jobs: # from PyPI, which is what makes them a check on the release. run: | python -m pip install --require-hashes -r ../requirements/wcm-harness.txt - python -m pip install "weight-custody-manifest[model-signing]>=0.27.0" + python -m pip install -r requirements-model-signing.txt - name: Run every offline demo and the unit tests run: python run_demos.py diff --git a/examples/weight-custody-manifest/README.md b/examples/weight-custody-manifest/README.md index 05e87a4..7ed353c 100644 --- a/examples/weight-custody-manifest/README.md +++ b/examples/weight-custody-manifest/README.md @@ -67,7 +67,7 @@ The same machinery, two trust settings. **Closed** weights (a frontier model dep - **`transparency_log.py`** -- the append-only Merkle log (SPEC 3.7 / RFC 9162): inclusion and consistency proofs, and a monitor detecting a suppressed revocation. - **`post_quantum.py`** -- sign and verify a manifest with ML-DSA-65 and with the Ed25519+ML-DSA-65 hybrid profile. -- **`provenance_model_signing.py`** -- interop with OpenSSF model-signing: a WCM manifest references a model-signing signature as its provenance, and `verify_provenance` cryptographically verifies it. Needs the extra: `pip install "weight-custody-manifest[model-signing]"`. +- **`provenance_model_signing.py`** -- interop with OpenSSF model-signing: a WCM manifest references a model-signing signature as its provenance, and `verify_provenance` cryptographically verifies it. Install `requirements-model-signing.txt` for this demo. ### Verifying real attestations @@ -81,7 +81,7 @@ The same machinery, two trust settings. **Closed** weights (a frontier model dep ```bash python closed_model_e2e.py # any of the offline examples -pip install "weight-custody-manifest[model-signing]" # for provenance_model_signing.py +pip install -r requirements-model-signing.txt # for provenance_model_signing.py pip install -r requirements-infer.txt # for real_open_model.py python real_open_model.py ``` diff --git a/examples/weight-custody-manifest/provenance_model_signing.py b/examples/weight-custody-manifest/provenance_model_signing.py index 7518c74..97bcd12 100644 --- a/examples/weight-custody-manifest/provenance_model_signing.py +++ b/examples/weight-custody-manifest/provenance_model_signing.py @@ -1,6 +1,6 @@ """Provenance interop: WCM custody on top of an OpenSSF model-signing signature. - pip install "weight-custody-manifest[model-signing]" + pip install -r requirements-model-signing.txt python provenance_model_signing.py Real WCM code, no hardware. OpenSSF model-signing (Sigstore) answers "who signed diff --git a/examples/weight-custody-manifest/requirements-lora.txt b/examples/weight-custody-manifest/requirements-lora.txt index ed115d0..72f9a9c 100644 --- a/examples/weight-custody-manifest/requirements-lora.txt +++ b/examples/weight-custody-manifest/requirements-lora.txt @@ -1,3 +1,5 @@ +# Include WCM and the model-signing dependency setup used by the offline demo. +-r requirements-model-signing.txt huggingface_hub==1.33.0 safetensors==0.8.0 transformers==5.19.0 diff --git a/examples/weight-custody-manifest/requirements-model-signing.txt b/examples/weight-custody-manifest/requirements-model-signing.txt new file mode 100644 index 0000000..a6eff8e --- /dev/null +++ b/examples/weight-custody-manifest/requirements-model-signing.txt @@ -0,0 +1,7 @@ +-r requirements.txt +weight-custody-manifest[model-signing]>=0.32.0 + +# model-signing 1.1.1 imports OpenSSL.crypto without declaring pyOpenSSL. +# sigstore 4.5.1 no longer brings it in transitively. Version 26.4.0 is the +# first pyOpenSSL release compatible with WCM's cryptography 50 requirement. +pyOpenSSL>=26.4.0,<27 diff --git a/examples/weight-custody-manifest/requirements.txt b/examples/weight-custody-manifest/requirements.txt index ee29129..a4c45ec 100644 --- a/examples/weight-custody-manifest/requirements.txt +++ b/examples/weight-custody-manifest/requirements.txt @@ -1,4 +1,4 @@ # The Weight Custody Manifest reference SDK, from PyPI. -# Covers the offline examples. provenance_model_signing.py additionally needs the -# [model-signing] extra: pip install "weight-custody-manifest[model-signing]". +# Covers the offline examples. For provenance_model_signing.py, install +# requirements-model-signing.txt instead. weight-custody-manifest>=0.32.0