fix(voice): reject stale diarizer GGUF gate order - #11569
Conversation
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Review + local verification (part of the #11377 re-bake confirm — full evidence: Built this branch's
Also verified the epoch-2 converter output stays loadable by the current shipped fused lib (the loader's unknown-key skip) — it loads and runs, so merging this does not strand the converter output on old runtimes. Two findings the merge note should carry:
Verdict: recommend merge — code is correct, tests are real, metadata is forward-compatible — with the fork-sync companion tracked as the blocking prerequisite for the #11377 republish. |
…tifact republish (#11377) The DER-1.000 over-segmentation signature was pure LSTM gate-order skew between diarizer GGUF artifact and reader (proven bit-for-bit in both directions in the rebake-confirm evidence). Cutover, in the safe order: - bump plugins/plugin-local-inference/native/llama.cpp to fork commit dda200ab0 (elizaOS/llama.cpp#40 + #41, both merged): vendored voice_diarizer.c now unpacks gates as IFGO (matching the packages-side converter/reader) and carries the #11569 fail-closed guard — artifacts without converter_epoch>=2 + lstm_gate_order=IFGO are rejected loudly before tensor load instead of silently scrambling. Descendant of the prior pin 58c0391eb, so the #11612 Metal fixes are retained. - add diarizer 0.3.0 to VOICE_MODEL_VERSIONS: new HF file voice/diarizer/pyannote-segmentation-3.0-ifgo-epoch2.gguf (sha 100a5dbf…, HF commit a89e5615, elizaos/eliza-1). The 0.2.0 IOFC artifact stays published for older fused libs. - prefer the epoch-2 filename in the workbench / attribution-smoke probe candidate lists. - evidence: .github/issue-evidence/11377-diarizer-ifgo-cutover/ (DER 1.000 -> 0.211 fixed pairing, loud guard rejection of the published IOFC artifact, kokoro/asr no-regression lanes) + preserve the rebake-confirm bundle referenced from the issue thread. Closes #11377 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tifact republish (#11377) (#11796) The DER-1.000 over-segmentation signature was pure LSTM gate-order skew between diarizer GGUF artifact and reader (proven bit-for-bit in both directions in the rebake-confirm evidence). Cutover, in the safe order: - bump plugins/plugin-local-inference/native/llama.cpp to fork commit dda200ab0 (elizaOS/llama.cpp#40 + #41, both merged): vendored voice_diarizer.c now unpacks gates as IFGO (matching the packages-side converter/reader) and carries the #11569 fail-closed guard — artifacts without converter_epoch>=2 + lstm_gate_order=IFGO are rejected loudly before tensor load instead of silently scrambling. Descendant of the prior pin 58c0391eb, so the #11612 Metal fixes are retained. - add diarizer 0.3.0 to VOICE_MODEL_VERSIONS: new HF file voice/diarizer/pyannote-segmentation-3.0-ifgo-epoch2.gguf (sha 100a5dbf…, HF commit a89e5615, elizaos/eliza-1). The 0.2.0 IOFC artifact stays published for older fused libs. - prefer the epoch-2 filename in the workbench / attribution-smoke probe candidate lists. - evidence: .github/issue-evidence/11377-diarizer-ifgo-cutover/ (DER 1.000 -> 0.211 fixed pairing, loud guard rejection of the published IOFC artifact, kokoro/asr no-regression lanes) + preserve the rebake-confirm bundle referenced from the issue thread. Closes #11377 Co-authored-by: Shaw <shawgotbags@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
Claude encountered an error —— View job I'll analyze this and get back to you. |
Summary
Refs #11377.
This does not republish the stale HuggingFace diarizer artifact, so it does not close the
needs-humanpart of #11377. It hardens the native runtime so stale/pre-#9460 diarizer GGUFs fail closed instead of silently scrambling ONNX IOFC LSTM gates into the current IFGO C cell convention and surfacing as DER=1.000 over-segmentation.Changes:
voice_diarizer.converter_epoch = 2andvoice_diarizer.lstm_gate_order = "IFGO"voice_diarizer_openrejects missing/pre-epoch metadata and unsupported gate order before tensor loadvoice_diarizer_metadata_testwith tiny metadata-only GGUF fixtures for fresh vs stale metadataValidation
cmake -B packages/native/plugins/voice-classifier-cpp/build -S packages/native/plugins/voice-classifier-cppcmake --build packages/native/plugins/voice-classifier-cpp/build -jctest --test-dir packages/native/plugins/voice-classifier-cpp/build --output-on-failurevoice_speaker_parity_testskipped because the large speaker fixture is absentgit diff --check origin/develop...HEADEvidence
.github/issue-evidence/11377-diarizer-gguf-epoch/README.mdRemaining human step
The actual user-facing diarizer fix still requires re-baking and republishing
pyannote-segmentation-3.0.ggufwith the new metadata using the elizaOS HuggingFace write token, then bumping the manifest/sha. This PR makes stale artifacts fail fast until that republish lands.