From 7793223ff0b9b2c41ea2a89f34f3c075fe5d103a Mon Sep 17 00:00:00 2001 From: Noah Ingwers <98993329+noah-ing@users.noreply.github.com> Date: Wed, 21 Oct 2026 18:10:47 -0500 Subject: [PATCH 1/2] fix(ci): declare model-signing OpenSSL dependency Signed-off-by: Noah Ingwers <98993329+noah-ing@users.noreply.github.com> --- .github/workflows/examples-ci.yml | 2 +- examples/weight-custody-manifest/README.md | 4 ++-- .../weight-custody-manifest/provenance_model_signing.py | 2 +- .../weight-custody-manifest/requirements-model-signing.txt | 7 +++++++ examples/weight-custody-manifest/requirements.txt | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 examples/weight-custody-manifest/requirements-model-signing.txt diff --git a/.github/workflows/examples-ci.yml b/.github/workflows/examples-ci.yml index 310e6f14..23adbccc 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 05e87a4a..7ed353c4 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 7518c74d..97bcd122 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-model-signing.txt b/examples/weight-custody-manifest/requirements-model-signing.txt new file mode 100644 index 00000000..a6eff8ef --- /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 ee29129e..a4c45ec5 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 From c4666d99361b2d24e31827911110defc04caf641 Mon Sep 17 00:00:00 2001 From: Noah Ingwers <98993329+noah-ing@users.noreply.github.com> Date: Wed, 21 Oct 2026 21:20:32 -0500 Subject: [PATCH 2/2] fix(examples): reuse model-signing dependencies for LoRA demo Signed-off-by: Noah Ingwers <98993329+noah-ing@users.noreply.github.com> --- examples/weight-custody-manifest/requirements-lora.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/weight-custody-manifest/requirements-lora.txt b/examples/weight-custody-manifest/requirements-lora.txt index ed115d01..72f9a9c0 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