Skip to content

Commit 2cec849

Browse files
committed
Harden optional Stable Audio dependencies
1 parent bea5642 commit 2cec849

6 files changed

Lines changed: 249 additions & 199 deletions

File tree

.github/workflows/ci.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@ jobs:
2222
run: uv run pytest -q
2323
- name: Ruff
2424
run: uv run ruff check server tests
25+
# Stable Audio 3 still pins Torch 2.7.1 upstream. GERM overrides it with
26+
# the validated 2.10 pair. The two remaining local-only API findings are
27+
# tracked with a review deadline in SECURITY.md.
28+
- name: Audit all dependency extras
29+
run: |
30+
uv export --all-extras --no-emit-project --no-emit-local \
31+
--no-emit-package akousma --no-emit-package stable-audio-3 |
32+
uvx --from pip-audit==2.10.1 pip-audit \
33+
--requirement /dev/stdin \
34+
--disable-pip \
35+
--progress-spinner=off \
36+
--ignore-vuln PYSEC-2026-139 \
37+
--ignore-vuln CVE-2025-3000
2538
- name: Dashboard syntax
2639
run: |
2740
node --check dashboard/static/app.js

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
- Overrode Stable Audio 3's upstream Torch 2.7.1 constraint with the locally
6+
validated Torch and Torchaudio 2.10 pair, removing every fixable advisory
7+
from the optional Python-provider dependency graph.
8+
- Added an all-extras dependency audit and a dated security exception for the
9+
two remaining upstream PyTorch findings in APIs GERM does not call directly.
10+
- Updated Setuptools to 83.0.0 to close its Unicode-normalization sdist issue.
11+
312
## 0.3.0 — Cosmoaudition, Matter Analysis, and audio reliability
413

514
- Added the loopback-only Cosmoaudition bridge, explicit observation mappings,

SECURITY.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Security fixes target the current `main` branch and the latest tagged minor
6+
release. Older release lines receive fixes only when explicitly announced.
7+
8+
## Reporting a Vulnerability
9+
10+
Please report security issues privately to Sonic Field Labs before public
11+
disclosure. Include the affected commit, local configuration, reproduction
12+
steps, and whether generated audio, model files, or listening records can be
13+
exposed.
14+
15+
## Local-First Boundary
16+
17+
GERM is a local sidecar. Its optional Python provider loads model and LoRA files
18+
only through configured model roots. Treat every model artifact as executable
19+
input: use the official Safetensors releases, verify provenance, and do not load
20+
untrusted pickle-based checkpoints.
21+
22+
## Temporary Upstream PyTorch Exceptions
23+
24+
Stable Audio 3 still pins PyTorch 2.7.1 upstream. GERM overrides that constraint
25+
with Torch and Torchaudio 2.10.0, validated on macOS by the full GERM suite and
26+
the upstream Stable Audio CLI suite. This removes every currently fixable
27+
finding below PyTorch 2.10.
28+
29+
Two findings remain accepted temporarily for the optional local provider:
30+
31+
| Advisory | Affected API | GERM exposure | Review deadline |
32+
| --- | --- | --- | --- |
33+
| `PYSEC-2026-139` / `CVE-2026-4538` | `torch.export.load` of `.pt2` artifacts | GERM does not call this API or accept `.pt2` model artifacts. No patched PyTorch release is currently published. | 2026-09-02 |
34+
| `GHSA-rrmf-rvhw-rf47` / `CVE-2025-3000` | TorchScript compilation | GERM does not compile user-supplied TorchScript. Moving to PyTorch 2.13 requires upstream Stable Audio and accelerator validation. | 2026-09-02 |
35+
36+
The exception ends immediately if GERM begins calling either API, if its model
37+
trust boundary changes, or when a compatible upstream runtime is available.
38+
The all-extras CI audit ignores only these identifiers and fails on any new
39+
finding.

pyproject.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ dependencies = [
1616
"uvicorn[standard]>=0.30.0",
1717
]
1818

19+
[tool.uv]
20+
override-dependencies = [
21+
"torch==2.10.0",
22+
"torchaudio==2.10.0",
23+
]
24+
1925
[tool.uv.sources]
2026
akousma = { git = "https://github.com/sonicfieldlabs/earworm.git", tag = "v0.4.0", subdirectory = "packages/py-akousma" }
2127

tests/test_project_consistency.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ def test_akousma_dependency_matches_the_current_earworm_store_contract() -> None
4343
assert 'path = "../earworm' not in project
4444

4545

46+
def test_stable_audio_uses_the_audited_torch_override() -> None:
47+
project = _read("pyproject.toml")
48+
assert '"torch==2.10.0"' in project
49+
assert '"torchaudio==2.10.0"' in project
50+
51+
4652
def test_release_version_is_consistent_across_runtime_and_packaging() -> None:
4753
assert __version__ == "0.3.0"
4854
assert 'version = "0.3.0"' in _read("pyproject.toml")

0 commit comments

Comments
 (0)