[nu-demo] hero_voice's ort-sys 2.0.0-rc.12 requires ONNX Runtime 1.24+ but our canonical install is 1.23.2 (what hero_embedder uses) #173

Closed
opened 2026-04-24 15:48:27 +00:00 by mik-tf · 7 comments
Owner

Symptom

After resolving the libclang-dev + cmake prerequisites (home#169, home#172), cargo build -p hero_voice_server still fails:

error: ort-sys@2.0.0-rc.12: ort-sys could not link to the ONNX Runtime build in `/usr/local/onnxruntime/lib`
error: ort-sys@2.0.0-rc.12:  | rerun the build with `cargo build -vv | grep ort-sys` to see debug messages
error: build script logged errors

Verbose debug shows ort-sys falls into a doing full static linking since no single-file library was found path after failing to match against the installed shared libs.

Root cause

  • hero_embedder uses ort = "2.0.0-rc.11" which works with ONNX Runtime 1.23.x (per ort-rs matrix).
  • hero_voice's whisper-rs (and/or silero-vad) pulls ort-sys = "2.0.0-rc.12" which its Cargo manifest declares description = "Unsafe Rust bindings for ONNX Runtime 1.24" — i.e. it expects 1.24, not 1.23.

Installing ONNX 1.23.2 system-wide (what we did for the embedder) doesn't satisfy ort-sys-rc.12. Installing 1.24 system-wide would in turn break the embedder (ort-rc.11 wants 1.23).

The underlying conflict: two sibling Hero services pin different ort-sys RC versions that target different ONNX binary versions.

Fixes (ordered by reversibility)

1. Pin both services to the same ort-sys RC

Preferred. Either:

  • Upgrade hero_embedder to ort = "2.0.0-rc.12" (and ship ONNX 1.24) — needs embedder retest.
  • Downgrade hero_voice dependency chain to ort-sys-rc.11 — may require forking whisper-rs / silero-vad.

2. Ship TWO ONNX installs side-by-side

less pretty: /usr/local/onnxruntime-1.23/lib and /usr/local/onnxruntime-1.24/lib, set ORT_LIB_LOCATION per-service in the hero_proc action env. hero_embedder points at 1.23, hero_voice at 1.24. Works but doubles install footprint.

3. Let ort-sys download its own ONNX blob

ort-sys-rc.12 has a download-binaries feature (enabled via CARGO_FEATURE_DOWNLOAD_BINARIES=1 in the verbose log). Theoretically it'll fetch 1.24 binaries at build time. On herodemo this path also failed — likely because the cargo sandbox / network context at build time doesn't have unrestricted outbound, or the download URL is broken.

4. Drop whisper-rs, use a remote STT service

hero_voice's transcription could route through hero_aibroker's /v1/audio/transcriptions endpoint (Groq Whisper) instead of local whisper.cpp. Eliminates the ONNX 1.24 dependency entirely. Adds a network hop but removes ~100 MB of C++ compile + local models.

Demo impact

hero_voice is not critical for the Hero OS core demo (AI assistant + books + office + business all work without it). Voice is a nice-to-have. For herodemo we're shipping without it and flagging clearly.

Demo workaround (herodemo 2026-04-24)

None applied — hero_voice binary missing, service inactive, voice island shows "Waiting for hero_voice" in dock.

  • home#128 — apt deps gap (prerequisite chain)
  • home#169 — libclang-dev gap
  • home#172 — cmake gap
  • home#145 — hero_embedder async refactor (if voice goes remote-STT, similar considerations)
  • home#134 — service_voice commented out in packages.nu (same blocker pattern)

Signed-off-by: mik-tf

## Symptom After resolving the libclang-dev + cmake prerequisites ([home#169](https://forge.ourworld.tf/lhumina_code/home/issues/169), [home#172](https://forge.ourworld.tf/lhumina_code/home/issues/172)), `cargo build -p hero_voice_server` still fails: ``` error: ort-sys@2.0.0-rc.12: ort-sys could not link to the ONNX Runtime build in `/usr/local/onnxruntime/lib` error: ort-sys@2.0.0-rc.12: | rerun the build with `cargo build -vv | grep ort-sys` to see debug messages error: build script logged errors ``` Verbose debug shows ort-sys falls into a `doing full static linking since no single-file library was found` path after failing to match against the installed shared libs. ## Root cause - `hero_embedder` uses `ort = "2.0.0-rc.11"` which works with ONNX Runtime **1.23.x** (per ort-rs matrix). - `hero_voice`'s whisper-rs (and/or silero-vad) pulls `ort-sys = "2.0.0-rc.12"` which its Cargo manifest declares `description = "Unsafe Rust bindings for ONNX Runtime 1.24"` — i.e. it **expects 1.24**, not 1.23. Installing ONNX 1.23.2 system-wide (what we did for the embedder) doesn't satisfy ort-sys-rc.12. Installing 1.24 system-wide would in turn break the embedder (ort-rc.11 wants 1.23). The underlying conflict: two sibling Hero services pin different ort-sys RC versions that target different ONNX binary versions. ## Fixes (ordered by reversibility) ### 1. Pin both services to the same ort-sys RC Preferred. Either: - Upgrade hero_embedder to `ort = "2.0.0-rc.12"` (and ship ONNX 1.24) — needs embedder retest. - Downgrade hero_voice dependency chain to ort-sys-rc.11 — may require forking whisper-rs / silero-vad. ### 2. Ship TWO ONNX installs side-by-side less pretty: `/usr/local/onnxruntime-1.23/lib` and `/usr/local/onnxruntime-1.24/lib`, set `ORT_LIB_LOCATION` per-service in the hero_proc action env. hero_embedder points at 1.23, hero_voice at 1.24. Works but doubles install footprint. ### 3. Let ort-sys download its own ONNX blob ort-sys-rc.12 has a `download-binaries` feature (enabled via `CARGO_FEATURE_DOWNLOAD_BINARIES=1` in the verbose log). Theoretically it'll fetch 1.24 binaries at build time. On herodemo this path also failed — likely because the cargo sandbox / network context at build time doesn't have unrestricted outbound, or the download URL is broken. ### 4. Drop whisper-rs, use a remote STT service hero_voice's transcription could route through hero_aibroker's `/v1/audio/transcriptions` endpoint (Groq Whisper) instead of local whisper.cpp. Eliminates the ONNX 1.24 dependency entirely. Adds a network hop but removes ~100 MB of C++ compile + local models. ## Demo impact hero_voice is **not critical for the Hero OS core demo** (AI assistant + books + office + business all work without it). Voice is a nice-to-have. For herodemo we're shipping without it and flagging clearly. ## Demo workaround (herodemo 2026-04-24) None applied — hero_voice binary missing, service inactive, voice island shows "Waiting for hero_voice" in dock. ## Related - [home#128](https://forge.ourworld.tf/lhumina_code/home/issues/128) — apt deps gap (prerequisite chain) - [home#169](https://forge.ourworld.tf/lhumina_code/home/issues/169) — libclang-dev gap - [home#172](https://forge.ourworld.tf/lhumina_code/home/issues/172) — cmake gap - [home#145](https://forge.ourworld.tf/lhumina_code/home/issues/145) — hero_embedder async refactor (if voice goes remote-STT, similar considerations) - [home#134](https://forge.ourworld.tf/lhumina_code/home/issues/134) — service_voice commented out in packages.nu (same blocker pattern) Signed-off-by: mik-tf
Author
Owner

Demo hotfix applied 2026-04-24

Both ONNX runtimes coexist on herodemo:

  • /usr/local/onnxruntime/ → 1.23.2 (used by hero_embedderd)
  • /usr/local/onnxruntime-1.24/ → 1.24.4 (used by hero_voice)

hero_voice_server and hero_voice_ui action env patched with:

ORT_LIB_LOCATION=/usr/local/onnxruntime-1.24/lib
LD_LIBRARY_PATH=/usr/local/onnxruntime-1.24/lib
ORT_PREFER_DYNAMIC_LINK=1

ORT_PREFER_DYNAMIC_LINK=1 is the key flag — without it, ort-sys rc.12 attempts static linking and errors out even with the correct ORT_LIB_LOCATION. Per-process LD_LIBRARY_PATH ensures embedder and voice each load their own version.

Verified: hero_voice running, both rpc.sock and ui.sock created, UI loads at https://herodemo.gent01.grid.tf/hero_voice/ui/.

Prod-level fix needed

The double-install is workable but not ideal:

  1. Unify the ort crate version across hero_voice, hero_embedder, and any future ONNX consumers. Choose either 2.0.0-rc.11 (pin embedder + voice both there) or rc.12 (bump embedder to 1.24-compatible model loader). Prefer rc.12 since it's newer and has bugfixes.
  2. Document the ORT_PREFER_DYNAMIC_LINK=1 requirement in hero_skills' service_voice.nu installer + add it to the canonical action env spec.
  3. Add an installer step in hero_skills that detects the ort crate version range and installs the matching ONNX runtime.
  4. CI test: smoke check that hero_voice can load a Kokoro voice and emit a wav within 5s.
## Demo hotfix applied 2026-04-24 Both ONNX runtimes coexist on herodemo: - `/usr/local/onnxruntime/` → 1.23.2 (used by `hero_embedderd`) - `/usr/local/onnxruntime-1.24/` → 1.24.4 (used by `hero_voice`) `hero_voice_server` and `hero_voice_ui` action env patched with: ``` ORT_LIB_LOCATION=/usr/local/onnxruntime-1.24/lib LD_LIBRARY_PATH=/usr/local/onnxruntime-1.24/lib ORT_PREFER_DYNAMIC_LINK=1 ``` `ORT_PREFER_DYNAMIC_LINK=1` is the key flag — without it, ort-sys rc.12 attempts static linking and errors out even with the correct `ORT_LIB_LOCATION`. Per-process LD_LIBRARY_PATH ensures embedder and voice each load their own version. **Verified:** hero_voice running, both `rpc.sock` and `ui.sock` created, UI loads at https://herodemo.gent01.grid.tf/hero_voice/ui/. ## Prod-level fix needed The double-install is workable but not ideal: 1. **Unify the `ort` crate version** across hero_voice, hero_embedder, and any future ONNX consumers. Choose either 2.0.0-rc.11 (pin embedder + voice both there) or rc.12 (bump embedder to 1.24-compatible model loader). Prefer rc.12 since it's newer and has bugfixes. 2. **Document the `ORT_PREFER_DYNAMIC_LINK=1` requirement** in hero_skills' service_voice.nu installer + add it to the canonical action env spec. 3. **Add an installer step** in hero_skills that detects the ort crate version range and installs the matching ONNX runtime. 4. **CI test:** smoke check that hero_voice can load a Kokoro voice and emit a wav within 5s.
Author
Owner

Deploy-side resolved: install_onnxruntime now installs ONNX 1.23.2 + 1.24.4 side-by-side, and service_voice/service_embedder env vars route each binary to the right runtime. Full ort crate unification across hero_embedder + hero_voice (single ort version) is still pending — keeping open.

Part of: lhumina_code/hero_skills@7c823d1 (PR lhumina_code/hero_skills#126).
Tracker: #185.

Deploy-side resolved: `install_onnxruntime` now installs ONNX 1.23.2 + 1.24.4 side-by-side, and service_voice/service_embedder env vars route each binary to the right runtime. Full ort crate unification across hero_embedder + hero_voice (single ort version) is still pending — keeping open. Part of: https://forge.ourworld.tf/lhumina_code/hero_skills/commit/7c823d1 (PR https://forge.ourworld.tf/lhumina_code/hero_skills/pulls/126). Tracker: https://forge.ourworld.tf/lhumina_code/home/issues/185.
despiegk added this to the ACTIVE project 2026-04-26 10:11:55 +00:00
Author
Owner

Resolved

Landed across three repos on development (squash commits):

  • hero_voice fc89cec — pin ort = "=2.0.0-rc.11" with load-dynamic + ndarray features in workspace.dependencies; consume as direct dep in crates/hero_voice/Cargo.toml to anchor the resolution. Cargo.lock downgraded to rc.11.
  • hero_skills 0a561f9install_onnxruntime trims to a single ONNX 1.23.2 download; service_voice.nu ORT_LIB_LOCATION/usr/local/onnxruntime/lib (same as service_embedder).
  • hero_demo 9b5bc6e — runbook §2.3 single-ONNX line; §13 drops the home#173 row.

Real root cause

The issue framed it as "two services pin different ort-sys RC versions" — true symptom, but whisper-rs (which the issue named) does not pull ort at all. It uses whisper-rs-sys 0.15 → bindgen + cmake on whisper.cpp directly, no ONNX dependency. The actual ort consumer in hero_voice is kokoro-micro 1.0.0 (TTS).

Kokoro's manifest declares ort = "2.0.0-rc.11" — same RC hero_embedder pins. The drift to rc.12 was purely cargo's caret-semver auto-upgrade. A single exact-pin in hero_voice/Cargo.toml workspace plus a direct consume from one crate is enough to anchor the resolution to rc.11. No fork of whisper-rs / silero-vad needed.

Verification on herodemo (2026-04-26)

Check Result
cargo build -p hero_voice_server (release, 6m04s on herodemo) clean, ort 2.0.0-rc.11 resolved
service_voice start --reset registers actions ORT_LIB_LOCATION=/usr/local/onnxruntime/lib (1.23.2, same as embedder)
hero_proc service list | grep hero_voice running
curl /health (rpc + ui sockets) both 200 OK
GET /tts/voices returns 50+ Kokoro voices
POST /tts {"text":"Hello world","voice":"af_heart","speed":1.0} 200 OK, 129,644 bytes of WAV audio — kokoro lazy-loaded ONNX 1.23.2 dlopen-style and ran inference end-to-end
hero_embedder still running on the same ONNX install unchanged

Effort vs. estimate

Runbook §13 estimated multi-day cross-repo work assuming whisper-rs forking would be needed. Actual: ~1 hour from plan to live verification. The misattribution of ort to whisper-rs was the false complexity multiplier.

Signed-off-by: mik-tf

## Resolved Landed across three repos on `development` (squash commits): - `hero_voice` [fc89cec](https://forge.ourworld.tf/lhumina_code/hero_voice/commit/fc89cec) — pin `ort = "=2.0.0-rc.11"` with `load-dynamic` + `ndarray` features in workspace.dependencies; consume as direct dep in `crates/hero_voice/Cargo.toml` to anchor the resolution. Cargo.lock downgraded to rc.11. - `hero_skills` [0a561f9](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/0a561f9) — `install_onnxruntime` trims to a single ONNX 1.23.2 download; `service_voice.nu` `ORT_LIB_LOCATION` → `/usr/local/onnxruntime/lib` (same as service_embedder). - `hero_demo` [9b5bc6e](https://forge.ourworld.tf/lhumina_code/hero_demo/commit/9b5bc6e) — runbook §2.3 single-ONNX line; §13 drops the home#173 row. ## Real root cause The issue framed it as "two services pin different ort-sys RC versions" — true symptom, but `whisper-rs` (which the issue named) does **not** pull `ort` at all. It uses `whisper-rs-sys` 0.15 → bindgen + cmake on whisper.cpp directly, no ONNX dependency. The actual `ort` consumer in hero_voice is **`kokoro-micro` 1.0.0** (TTS). Kokoro's manifest declares `ort = "2.0.0-rc.11"` — same RC hero_embedder pins. The drift to rc.12 was purely cargo's caret-semver auto-upgrade. A single exact-pin in `hero_voice/Cargo.toml` workspace plus a direct consume from one crate is enough to anchor the resolution to rc.11. No fork of whisper-rs / silero-vad needed. ## Verification on herodemo (2026-04-26) | Check | Result | |------|--------| | `cargo build -p hero_voice_server` (release, 6m04s on herodemo) | clean, ort 2.0.0-rc.11 resolved | | `service_voice start --reset` registers actions | `ORT_LIB_LOCATION=/usr/local/onnxruntime/lib` (1.23.2, same as embedder) | | `hero_proc service list \| grep hero_voice` | running | | `curl /health` (rpc + ui sockets) | both 200 OK | | `GET /tts/voices` | returns 50+ Kokoro voices | | `POST /tts` `{"text":"Hello world","voice":"af_heart","speed":1.0}` | **200 OK, 129,644 bytes of WAV audio** — kokoro lazy-loaded ONNX 1.23.2 dlopen-style and ran inference end-to-end | | `hero_embedder` still running on the same ONNX install | unchanged | ## Effort vs. estimate Runbook §13 estimated multi-day cross-repo work assuming whisper-rs forking would be needed. Actual: ~1 hour from plan to live verification. The misattribution of `ort` to whisper-rs was the false complexity multiplier. Signed-off-by: mik-tf
Author
Owner

We should have 1.24 for embedder instead of going down to 1.23

We should have 1.24 for embedder instead of going down to 1.23
mik-tf reopened this issue 2026-04-27 12:26:11 +00:00
Author
Owner

home#173 follow-up — flipped direction: keep ONNX 1.24 across embedder + voice

Kristof's call on the previous comment ("We should have 1.24 for embedder instead of going down to 1.23") landed. Reverting the temporary unification down to rc.11/ONNX 1.23 and instead pulling hero_voice up to rc.12/ONNX 1.24, so both services share the modern stack.

Why the rc.12 bump looked scary at first

rc.12 introduced two source-level breaks for callers:

  1. api-XX cargo feature is now mandatory. rc.12's EP modules (e.g. vitis.rs) reference OrtApi fields gated behind #[cfg(feature = "api-18")] and above. Without an explicit api-XX feature, cargo errors with E0609 ("no field … on type &OrtApi"). Fix: add "api-24" (matches ort's own default = [..., "api-24"]) to ort's feature list.
  2. ort::Error<T> is no longer Send + Sync for FFI-bound inner types like NonNull<OrtSessionOptions>. The ? operator can't auto-convert these into anyhow::Error (which requires Send + Sync). Fix: stringify at the boundary using the canonical anyhow idiom — .map_err(|e| anyhow::anyhow!("{e}"))?.

Neither is a bug — both are defensible upstream design choices (explicit API-version opt-in; not lying about thread-safety of FFI handles). The migration cost on our side was 2 source sites in hero_embedder_lib. No code on the hero_voice side needed any change beyond the version pin (whisper-rs and silero-vad already target rc.12 natively; kokoro-micro 1.0.0's caret-pinned ort = "2.0.0-rc.11" resolves up to rc.12 fine — semver allows pre-release escalation within 2.0.0).

Changes

Three repos, all on development_mik and pushed:

Repo Commit What
hero_voice f24619b Workspace pin ort = "=2.0.0-rc.12", comment block explaining the rc.11→rc.12 escalation across whisper-rs + silero-vad + kokoro-micro
hero_embedder e3e4d68 Workspace pin ort = "=2.0.0-rc.12" + "api-24" feature; .map_err(|e| anyhow::anyhow!("{e}"))? migration in embedder.rs and reranker.rs
hero_skills 62af07a install_onnxruntime 1.23.2 → 1.24.4 with VERSION_NUMBER detection so existing 1.23.2 installs auto-upgrade instead of silently skipping

Files touched on the embedder side (the only non-trivial fix)

  • crates/hero_embedder_lib/src/ml/embedder.rs:43-48 — Session::builder chain now uses .map_err(\|e\| anyhow::anyhow!("{e}"))? for the two builder steps that returned ort::Error<NonNull<OrtSessionOptions>>.
  • crates/hero_embedder_lib/src/ml/reranker.rs:29-34 — Same migration, same chain.

Both sites have a comment block referencing this issue so future readers don't go re-investigating the same thing.

Verification

  • hero_embedder: cargo fmt --check ✓, cargo clippy --workspace --all-targets -- -D warnings ✓, cargo check on _lib + _server + _embedderd ✓.
  • hero_voice: not locally verified — local dev box is missing libclang headers needed by espeak-rs-sys (home#169 covers this in CI). Will rely on Forgejo CI for the rc.12 build.
  • hero_skills: nu parse-checked.

Outstanding

  • Need explicit OK to squash-merge the three development_mik branches → development (per workflow gate).
  • After merge: rebuild herodemo's onnxruntime via hero_skills and confirm both hero_embedder and hero_voice start cleanly against the same /usr/local/onnxruntime/ (1.24.4) so the original sharing motivation is preserved.

Keeping this issue open until the merges land + herodemo is verified on the new shared 1.24 stack.

Signed-off-by: mik-tf

## home#173 follow-up — flipped direction: keep ONNX 1.24 across embedder + voice Kristof's call on the previous comment ("We should have 1.24 for embedder instead of going down to 1.23") landed. Reverting the temporary unification down to rc.11/ONNX 1.23 and instead pulling hero_voice **up** to rc.12/ONNX 1.24, so both services share the modern stack. ### Why the rc.12 bump looked scary at first rc.12 introduced two source-level breaks for callers: 1. **`api-XX` cargo feature is now mandatory.** rc.12's EP modules (e.g. `vitis.rs`) reference `OrtApi` fields gated behind `#[cfg(feature = "api-18")]` and above. Without an explicit `api-XX` feature, cargo errors with `E0609` ("no field … on type &OrtApi"). Fix: add `"api-24"` (matches ort's own `default = [..., "api-24"]`) to ort's feature list. 2. **`ort::Error<T>` is no longer `Send + Sync`** for FFI-bound inner types like `NonNull<OrtSessionOptions>`. The `?` operator can't auto-convert these into `anyhow::Error` (which requires `Send + Sync`). Fix: stringify at the boundary using the canonical anyhow idiom — `.map_err(|e| anyhow::anyhow!("{e}"))?`. Neither is a bug — both are defensible upstream design choices (explicit API-version opt-in; not lying about thread-safety of FFI handles). The migration cost on our side was 2 source sites in `hero_embedder_lib`. No code on the hero_voice side needed any change beyond the version pin (whisper-rs and silero-vad already target rc.12 natively; kokoro-micro 1.0.0's caret-pinned `ort = "2.0.0-rc.11"` resolves up to rc.12 fine — semver allows pre-release escalation within `2.0.0`). ### Changes Three repos, all on `development_mik` and pushed: | Repo | Commit | What | |------|--------|------| | hero_voice | [`f24619b`](https://forge.ourworld.tf/lhumina_code/hero_voice/commit/f24619b) | Workspace pin `ort = "=2.0.0-rc.12"`, comment block explaining the rc.11→rc.12 escalation across whisper-rs + silero-vad + kokoro-micro | | hero_embedder | [`e3e4d68`](https://forge.ourworld.tf/lhumina_code/hero_embedder/commit/e3e4d68) | Workspace pin `ort = "=2.0.0-rc.12"` + `"api-24"` feature; `.map_err(\|e\| anyhow::anyhow!("{e}"))?` migration in `embedder.rs` and `reranker.rs` | | hero_skills | [`62af07a`](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/62af07a) | `install_onnxruntime` 1.23.2 → 1.24.4 with VERSION_NUMBER detection so existing 1.23.2 installs auto-upgrade instead of silently skipping | ### Files touched on the embedder side (the only non-trivial fix) - `crates/hero_embedder_lib/src/ml/embedder.rs:43-48` — Session::builder chain now uses `.map_err(\|e\| anyhow::anyhow!("{e}"))?` for the two builder steps that returned `ort::Error<NonNull<OrtSessionOptions>>`. - `crates/hero_embedder_lib/src/ml/reranker.rs:29-34` — Same migration, same chain. Both sites have a comment block referencing this issue so future readers don't go re-investigating the same thing. ### Verification - hero_embedder: `cargo fmt --check` ✓, `cargo clippy --workspace --all-targets -- -D warnings` ✓, `cargo check` on `_lib` + `_server` + `_embedderd` ✓. - hero_voice: not locally verified — local dev box is missing libclang headers needed by espeak-rs-sys (home#169 covers this in CI). Will rely on Forgejo CI for the rc.12 build. - hero_skills: `nu` parse-checked. ### Outstanding - Need explicit OK to squash-merge the three `development_mik` branches → `development` (per workflow gate). - After merge: rebuild herodemo's onnxruntime via `hero_skills` and confirm both `hero_embedder` and `hero_voice` start cleanly against the same `/usr/local/onnxruntime/` (1.24.4) so the original sharing motivation is preserved. Keeping this issue open until the merges land + herodemo is verified on the new shared 1.24 stack. Signed-off-by: mik-tf
Author
Owner

home#173 follow-up — landed on development across all three repos

Squash-merged 2026-04-27:

Repo Squash commit Branch state
hero_skills 8bd278b merged + dev_mik deleted
hero_embedder aab9221 merged + dev_mik deleted
hero_voice 4ec144d merged + dev_mik deleted

All three branches verified end-to-end on herodemo before merging:

  • hero_voice + hero_embedder build clean against ort rc.12
  • ONNX 1.24.4 .so swap works (services restart with restarts: 0)
  • Voice RPC returns full OpenRPC schema (model loads on rc.12)
  • Embedder RPC responds (load-dynamic resolution against new lib)
  • TTS A/B test against rc.11 returned md5-identical audio bytes — zero quality regression from the rc.12 move (pre-existing kokoro-micro 1.0.0 audio dropouts tracked on home#197)
  • install_onnxruntime version-detection branch fired correctly on herodemo's existing 1.23.2 install: Replacing ONNX Runtime unknown → 1.24.4

Follow-ups surfaced during the herodemo verification — tracked separately, not blocking this issue:

  • home#197 — kokoro-micro 1.0.0 audio dropouts (NOT rc.12-related, A/B verified)
  • home#198 — hero_aibroker_server crash-loop on herodemo (pre-existing, ~3 days old)
  • home#199 — Settings → Environment WASM URL bug
  • One small follow-up against hero_skills install_onnxruntime itself: ^sudo assumption breaks on hosts where driver has no sudo — needs a $env.USER == "root" guard. Will land in a separate hero_skills patch.

Closing this issue once #197 (the cosmetic kokoro audio item that was flagged by the original commenter) is at least triaged.

Signed-off-by: mik-tf

## home#173 follow-up — landed on development across all three repos Squash-merged 2026-04-27: | Repo | Squash commit | Branch state | |---|---|---| | hero_skills | [`8bd278b`](https://forge.ourworld.tf/lhumina_code/hero_skills/commit/8bd278b) | merged + dev_mik deleted | | hero_embedder | [`aab9221`](https://forge.ourworld.tf/lhumina_code/hero_embedder/commit/aab9221) | merged + dev_mik deleted | | hero_voice | [`4ec144d`](https://forge.ourworld.tf/lhumina_code/hero_voice/commit/4ec144d) | merged + dev_mik deleted | All three branches verified end-to-end on herodemo before merging: - hero_voice + hero_embedder build clean against ort rc.12 - ONNX 1.24.4 .so swap works (services restart with `restarts: 0`) - Voice RPC returns full OpenRPC schema (model loads on rc.12) - Embedder RPC responds (load-dynamic resolution against new lib) - TTS A/B test against rc.11 returned **md5-identical audio bytes** — zero quality regression from the rc.12 move (pre-existing kokoro-micro 1.0.0 audio dropouts tracked on [home#197](https://forge.ourworld.tf/lhumina_code/home/issues/197)) - `install_onnxruntime` version-detection branch fired correctly on herodemo's existing 1.23.2 install: `Replacing ONNX Runtime unknown → 1.24.4` Follow-ups surfaced during the herodemo verification — tracked separately, not blocking this issue: - [home#197](https://forge.ourworld.tf/lhumina_code/home/issues/197) — kokoro-micro 1.0.0 audio dropouts (NOT rc.12-related, A/B verified) - [home#198](https://forge.ourworld.tf/lhumina_code/home/issues/198) — hero_aibroker_server crash-loop on herodemo (pre-existing, ~3 days old) - [home#199](https://forge.ourworld.tf/lhumina_code/home/issues/199) — Settings → Environment WASM URL bug - One small follow-up against hero_skills `install_onnxruntime` itself: `^sudo` assumption breaks on hosts where driver has no sudo — needs a `$env.USER == "root"` guard. Will land in a separate hero_skills patch. Closing this issue once #197 (the cosmetic kokoro audio item that was flagged by the original commenter) is at least triaged. Signed-off-by: mik-tf
Author
Owner

Meta close-out

The rc.12 / ONNX 1.24 follow-up surfaced 4 separate issues during the herodemo verification — all 4 now have fixes landed on development:

Issue Fix Status
home#173 follow-up (this) rc.11 → rc.12 / ONNX 1.24 across hero_voice, hero_embedder, hero_skills merged
home#197 — kokoro audio dropouts Fork at lhumina_code/kokoro-micro with style-indexing fix; hero_voice pinned to fork; upstream PR https://github.com/DavidValin/kokoro-micro/pull/2 closed
home#198 — aibroker / Settings / agent broken on herodemo ensure_shell_init in hero_skills install_core is the root-cause fix (.profile → .bashrc bridge); broker re-seeded on herodemo closed
home#199 — Settings → Environment WASM URL env_service.rs now uses /hero_osis/ui/config/env; needs hero_os WASM rebuild + hero_demo redeploy 🟡 fix landed, awaiting redeploy
home#41 follow-up (install_onnxruntime sudo) sudo guard in install_onnxruntime — bare commands when running as root merged

Closing #173 itself — the original ort/ONNX unification is done, the modern stack is alive on herodemo, and the cascade of follow-ups is documented above. #199 stays open until the next hero_demo redeploy verifies the WASM fix in-browser.

Signed-off-by: mik-tf

## Meta close-out The rc.12 / ONNX 1.24 follow-up surfaced 4 separate issues during the herodemo verification — all 4 now have fixes landed on `development`: | Issue | Fix | Status | |---|---|---| | home#173 follow-up (this) | rc.11 → rc.12 / ONNX 1.24 across hero_voice, hero_embedder, hero_skills | ✅ merged | | [home#197](https://forge.ourworld.tf/lhumina_code/home/issues/197) — kokoro audio dropouts | Fork at `lhumina_code/kokoro-micro` with style-indexing fix; hero_voice pinned to fork; upstream PR https://github.com/DavidValin/kokoro-micro/pull/2 | ✅ closed | | [home#198](https://forge.ourworld.tf/lhumina_code/home/issues/198) — aibroker / Settings / agent broken on herodemo | `ensure_shell_init` in hero_skills `install_core` is the root-cause fix (.profile → .bashrc bridge); broker re-seeded on herodemo | ✅ closed | | [home#199](https://forge.ourworld.tf/lhumina_code/home/issues/199) — Settings → Environment WASM URL | `env_service.rs` now uses `/hero_osis/ui/config/env`; needs hero_os WASM rebuild + hero_demo redeploy | 🟡 fix landed, awaiting redeploy | | home#41 follow-up (install_onnxruntime sudo) | sudo guard in install_onnxruntime — bare commands when running as root | ✅ merged | Closing #173 itself — the original ort/ONNX unification is done, the modern stack is alive on herodemo, and the cascade of follow-ups is documented above. #199 stays open until the next hero_demo redeploy verifies the WASM fix in-browser. Signed-off-by: mik-tf
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/home#173
No description provided.