Skip to content

fix(omnivoice): sync vendored diarizer reader to IFGO + fail-closed epoch guard - #41

Merged
lalalune merged 2 commits into
fix/11612-metal-nil-pipeline-recoverablefrom
fix/11377-ifgo-reader-sync
Jul 3, 2026
Merged

fix(omnivoice): sync vendored diarizer reader to IFGO + fail-closed epoch guard#41
lalalune merged 2 commits into
fix/11612-metal-nil-pipeline-recoverablefrom
fix/11377-ifgo-reader-sync

Conversation

@lalalune

@lalalune lalalune commented Jul 3, 2026

Copy link
Copy Markdown
Member

Summary

  • flips the vendored voice_diarizer.c LSTM gate unpack from raw ONNX IOFC to the converter's IFGO packing, matching packages/native/plugins/voice-classifier-cpp on elizaOS/eliza develop (post fix(voice): reject stale diarizer GGUF gate order eliza#11569)
  • ports the #11569 fail-closed guard into the vendored copy: voice_diarizer_open now requires explicit voice_diarizer.converter_epoch >= 2 and lstm_gate_order == "IFGO"; epoch-less legacy artifacts (the previously published IOFC bake, sha 30983eba…) and explicit non-IFGO artifacts are rejected loudly before tensor load instead of silently scrambling gates into the DER 1.000 signature
  • builds on the metadata parsing + test infrastructure merged in fix(omnivoice): reject explicit diarizer gate-order skew #40, extending the contract test to the fail-closed semantics: epoch-2 IFGO clears the guard (reaches the missing-tensor stage, proven via stderr capture); explicit IOFC, epoch-less, and epoch-1 artifacts each rejected with the exact guard message

Sequencing (elizaOS/eliza#11377)

This is step 1 of the coordinated cutover. Merging this alone is safe for the repo but a fused lib built from it will (correctly, loudly) refuse the currently published IOFC artifact — the eliza-side PR bumps the submodule pin and the manifest to a freshly published epoch-2 IFGO artifact in the same change.

Validation

  • cmake -B build-11377 -S . -DLLAMA_BUILD_OMNIVOICE=ON -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=ON -DBUILD_TESTING=ON
  • cmake --build build-11377 --target omnivoice-test-diarizer-metadata -j
  • ./build-11377/bin/omnivoice-test-diarizer-metadataomnivoice diarizer metadata failures=0
  • git diff --check clean
  • Real-artifact verification (fused libelizainference.dylib built from this branch, speakeriso:real DER + guard rejection of the published 30983eba artifact) lands in the eliza-side PR evidence bundle.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Jul 3, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 133050b9-8f80-4c06-94f2-86084c3860a7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/11377-ifgo-reader-sync

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

lalalune and others added 2 commits July 2, 2026 23:07
…fail-closed epoch guard

The vendored voice_diarizer.c still read pyannote LSTM gates in raw ONNX
IOFC order (the original C-side #9460 fix) while the package-side
converter moved the reorder converter-side and now bakes IFGO. Any
artifact x reader packing skew silently scrambles the gates into the
DER 1.000 over-segmentation signature (elizaOS/eliza#11377).

- flip the LSTM gate unpack to I,F,G,O — matches
  packages/native/plugins/voice-classifier-cpp voice_diarizer.c on
  elizaOS/eliza develop (post-#11569)
- port the #11569 fail-closed guard: require
  voice_diarizer.converter_epoch >= 2 and lstm_gate_order == "IFGO";
  epoch-less legacy artifacts (the previously published IOFC bake) and
  explicit non-IFGO artifacts are rejected loudly before tensor load
- extend the #40 metadata contract test to the fail-closed contract:
  epoch-2 IFGO clears the guard (reaches missing-tensor), explicit IOFC,
  epoch-less, and epoch-1 artifacts are all rejected with the exact
  guard message (stderr captured); metadata-only GGUFs padded to the
  32-byte data alignment so the zero-tensor mapper accepts them

Requires the coordinated epoch-2 IFGO artifact republish on HF
(elizaos/eliza-1 voice/diarizer/) before this ships in a fused lib pin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@lalalune
lalalune force-pushed the fix/11377-ifgo-reader-sync branch from 7bf947c to dda200a Compare July 3, 2026 03:08
@lalalune
lalalune changed the base branch from perf/kokoro-accelerate-blas to fix/11612-metal-nil-pipeline-recoverable July 3, 2026 03:08
@lalalune
lalalune merged commit ed88d61 into fix/11612-metal-nil-pipeline-recoverable Jul 3, 2026
12 of 45 checks passed
lalalune added a commit that referenced this pull request Jul 3, 2026
 IFGO reader sync) into the main reconciliation

develop's submodule gitlink advanced to dda200a while this reconciliation
was in flight; fold the two diarizer commits in so main contains the full
shipped lineage (elizaOS/eliza#11386).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant