v1.2.4 — Performance, Test Hardening & CI
What's Changed
Phases 21-22 of the v1.2 milestone, plus CI fixes.
Performance & Resilience (Phase 21)
- Thread-safe LRU analysis cache eliminates redundant computation across comparison calls
- Polyphase FIR resampling for cross-sample-rate comparison (auto-resamples instead of erroring)
- FFT spectrum sharing in
detect_problems— eliminates 4 redundant FFT passes - Environment variable helpers (
PHANTOM_PHAT_WINDOW_S,PHANTOM_MASKING_TOP_N) for tuning - Adaptive
top_nfor multi-stem masking based on stem count
Code Review Fixes (Phase 21)
- Sentinel object for cache miss instead of None (prevents false hits)
fcntl.flockadvisory locking replaces TOCTOU-vulnerable O_CREAT|O_EXCL pattern- Exception chaining with
from excin env helpers - Integer array overflow protection in RMS calculations
- Resampling log downgraded from warning to info (expected operation)
Test Hardening & CI (Phase 22)
- 60-second stereo fixture for duration-handling tests
- Error schema consistency tests for all 18 MCP tools
- Plugin skill content validation (frontmatter, tool references, domain keywords)
- Long audio duration tests with 120s timeout guards
- Optional dependency integration tests (matchering, demucs, pedalboard)
- GitHub Actions CI workflow — Python 3.10 + 3.12 matrix, ruff + pytest
- Dependabot configuration for pip and GitHub Actions updates
CI Fixes
- Use setup-uv@v7 (v8 not yet published)
- Install dev extras for ruff and pytest in CI
- Pedalboard skip guards for optional dependency tests
- tomllib fallback for Python 3.10 compatibility
Full Changelog: v1.2.3...v1.2.4