Skip to content

Stabilize native pipeline builds and configurable audio limits - #97

Merged
ekhodzitsky merged 9 commits into
masterfrom
integrate/native-pipeline-stability
Sep 23, 2026
Merged

ekhodzitsky merged 9 commits into
masterfrom
integrate/native-pipeline-stability

Conversation

@ekhodzitsky

@ekhodzitsky ekhodzitsky commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

Native pipeline configuration and local model support left FFI and local-only tests unable to compile, while a stale Python lockfile was silently rewritten by dependency checks. This integrates the reviewed fixes and configurable audio length limit, preserving the default one-hour cap and independent FFI/WAV limits.

  • Restore FFI error handling and no-download library tests, with CI coverage and explicit local PLDA fixtures.
  • Require locked dependency resolution and wheel builds; reject Cargo errors instead of treating them as missing dependencies.
  • Add the configurable sample cap, boundary/builder tests, accurate errors and migration notes.
  • Invalidate thread-local packed GEMM weights after model destruction. A deterministic regression reproduces address reuse across model lifetimes; previously, repeated model loads could silently use old packed weights.
  • Advance the unreleased development version to 0.22.0 for accumulated incompatible public API additions. No release tag or publication.

Validation on the combined changes: 943 CLI/FFI library tests and 875 local-only library tests pass with local models available; CLI, baseline metadata and FFI integration suites pass (22 tests; 3 model-dependent FFI cases ignored). Clippy passes with all features/targets and separately for kernels. Dependency regression tests, locked standalone lockfiles, dependency invariants, formatting and diff checks pass. Semver accepts the 0.21 to 0.22 compatibility bump. The locked CPython 3.13 Linux release wheel builds and its 11 model-free smoke/result tests pass. All 58 active kernel tests pass in release mode (3 manual benchmarks ignored). Linux native-scoreboard passes: DER micro 7.0295%, macro 7.3559%, model-size ceiling retained. Remote CI is running without failures at merge time; no Darwin hardware performance/RSS rerun was performed locally.

The original audio-cap contribution and feature-build fix are retained in merge ancestry.

enrey and others added 9 commits September 22, 2026 11:29
`Pipeline::run` rejected any input over one hour against the hard-coded
`MAX_AUDIO_SAMPLES`. That constant documents itself as a guard so the C FFI
and the Python bindings cannot unbounded-allocate on untrusted buffers, but
it was enforced on the Rust pipeline API too, where the caller often produced
the audio itself and knows its length is bounded. Such a caller had no way to
diarize a two-hour recording: the constant is read directly at the check site,
`Pipeline`'s stage fields are private, and splitting the input into sub-hour
chunks would break recording-wide clustering.

Move the limit into `PipelineConfig::max_audio_samples`, defaulting to
`MAX_AUDIO_SAMPLES`, with a matching builder setter. This mirrors the legacy
pipeline, which already exposes `max_duration_secs` on its own config.

Existing callers are unaffected: the default is unchanged, and the C FFI and
WAV loader keep enforcing the constant directly, so the untrusted-input guard
stays where its documentation says it is.
# Conflicts:
#	CHANGELOG.md
@ekhodzitsky
ekhodzitsky merged commit 9b2c950 into master Sep 23, 2026
48 checks passed
@ekhodzitsky
ekhodzitsky deleted the integrate/native-pipeline-stability branch September 23, 2026 15:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants