Merge branch 'fix/review-2115' into fix/community-integration
# Conflicts: # CHANGELOG.md
This commit is contained in:
@@ -63,10 +63,9 @@ jobs:
|
||||
experimental: false
|
||||
- os: macos-14
|
||||
platform: darwin-arm64
|
||||
# Metal build path is unpublished upstream (Pitfall 1 in
|
||||
# 04-RESEARCH.md); experimental so a failed Metal build doesn't
|
||||
# block — the SPIKE-01 ADR records the in-process fallback.
|
||||
experimental: true
|
||||
# Apple Silicon Metal build compiles cleanly with -DGGML_METAL=ON
|
||||
# at the pinned SHA (#2105); non-experimental to catch regressions.
|
||||
experimental: false
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
|
||||
@@ -57,6 +57,8 @@ the frozen-backend fallback mirror it for their toolchains.
|
||||
|
||||
- Distinguish architecture preflight rejection from independent compile-stack failures (#2085) — thanks @Moep90!
|
||||
|
||||
- Require the pinned Apple Silicon GGUF build to pass and document runtime preflight conditions (#2115) — thanks @LMGXENON and @martinezpl!
|
||||
|
||||
## [0.5.3] — 2026-09-17
|
||||
|
||||
**Highlights**
|
||||
|
||||
@@ -113,11 +113,11 @@ This clears the quarantine xattr recursively — including on the bundled
|
||||
returns a clear error message pointing at this command rather than
|
||||
silently hanging on a Gatekeeper-killed spawn.
|
||||
|
||||
If the macOS Apple Silicon Metal build fails to materialize in Wave 1
|
||||
(no published `buildmetal.sh` in `omnivoice.cpp` per Pitfall 1), the
|
||||
GGUF engine is unavailable on Apple Silicon and the existing in-process
|
||||
`VoiceStudioBackend` remains the cloning default on that platform — no
|
||||
hard block, no error toast on launch.
|
||||
The macOS Apple Silicon Metal build compiles cleanly with `-DGGML_METAL=ON`
|
||||
at the pinned `omnivoice.cpp` SHA (#2105), enabling GPU-accelerated GGUF
|
||||
voice cloning when the packaged binary passes preflight and is permitted by
|
||||
macOS. Missing binaries, placeholders, or Gatekeeper rejection leave
|
||||
`VoiceStudioBackend` available as the in-process fallback.
|
||||
|
||||
## Smoke test
|
||||
|
||||
|
||||
+6
-7
@@ -21,13 +21,12 @@ The pinned commit SHA for `omnivoice.cpp` lives in
|
||||
scripts/build-omnivoice-tts.sh --platform <slug> --commit-sha <40hex>
|
||||
```
|
||||
|
||||
See `.github/workflows/ci.yml` `build-omnivoice-tts` job for the CI
|
||||
matrix that produces these artifacts on every PR. The Apple Silicon
|
||||
slot (`macos-14`) is marked `continue-on-error: true` because the
|
||||
upstream `omnivoice.cpp` README does not publish a `buildmetal.sh`
|
||||
(Pitfall 1 in `04-RESEARCH.md`); a failed Metal build is documented
|
||||
and the macOS Apple Silicon cloning default falls back to the
|
||||
in-process `VoiceStudioBackend`.
|
||||
See `.github/workflows/build-omnivoice-tts.yml` `build-omnivoice-tts` job
|
||||
for the CI matrix that produces these artifacts. Apple Silicon (`macos-14`)
|
||||
builds cleanly with `-DGGML_METAL=ON` at the pinned SHA (#2105), enabling
|
||||
hardware-accelerated Metal inference when the packaged artifact passes binary
|
||||
preflight and macOS permits execution. Missing or blocked binaries retain the
|
||||
in-process `VoiceStudioBackend` fallback.
|
||||
|
||||
## Placeholder note
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ The integration shape is `VoiceStudioGGUFBackend(TTSBackend)` wrapping Phase 2's
|
||||
| License compatible with v0.3.x ship? | YES — Apache-2.0 (model) + MIT (runtime) | Both verified via HF model card + GitHub README. Same Apache-2.0 chain as the upstream model already shipping in v0.2.7. |
|
||||
| Runtime: llama.cpp / candle / custom? | CUSTOM (`omnivoice.cpp`, MIT) — does NOT load in vanilla llama.cpp | `gguf.architecture = "omnivoice-lm"` from HF API; README states "GGUF weights for omnivoice.cpp, a C++17/GGML port of VoiceStudio". |
|
||||
| Quant variants and footprints? | 4 quants × 2 files each (base + tokenizer): Q4_K_M (659 MB), Q8_0 (945 MB), BF16 (1.60 GB), F32 (3.19 GB) | HF `siblings` list confirms all 8 files; sizes from model card table. |
|
||||
| Cross-platform runtime fit? | Linux + Windows + macOS Intel YES via documented build scripts; macOS Apple Silicon Metal CONDITIONAL (no `buildmetal.sh` published, only feature mention) | `buildcpu.sh`, `buildcuda.sh`, `buildvulkan.sh`, `buildall.sh` listed; Metal in description only — Wave 1 Task 3 builds and verifies via `cmake -DGGML_METAL=ON` per A1. |
|
||||
| Cross-platform runtime fit? | Linux + Windows + macOS Intel YES via documented build scripts; macOS Apple Silicon Metal YES (builds clean via `cmake -DGGML_METAL=ON` at pinned SHA, #2105) | `buildcpu.sh`, `buildcuda.sh`, `buildvulkan.sh`, `buildall.sh` listed; Metal builds cleanly via `cmake -DGGML_METAL=ON` in CI and locally (#2105). |
|
||||
| Subprocess CLI fits Phase 2 `SubprocessBackend`? | YES | README shows `echo "Hello world." | ./build/omnivoice-tts --model … --codec … --lang … -o …` — line-oriented stdin + argv + output-file pattern is exactly what `SubprocessBackend` is designed for. |
|
||||
|
||||
### Pinned SHAs (filled in Wave 1 by Task 1)
|
||||
@@ -52,13 +52,13 @@ Both SHAs are mirrored in `backend/engines/omnivoice_gguf/quant_map.json` `_meta
|
||||
- Adds a maintained-by-others C++ runtime to the dependency graph (`omnivoice.cpp`, 42 stars at decision time).
|
||||
- Adds ~12-16 MB of platform binaries to the installer (must verify against Phase 3 mirror-timing baseline per Pitfall 6).
|
||||
- macOS code signing scope expands by 4 binaries (track via REL-05; same `xattr -cr` workaround as #54 applies in v0.3.x).
|
||||
- `omnivoice.cpp` README does not publish a macOS Metal build script — only `buildcpu.sh`, `buildcuda.sh`, `buildvulkan.sh`, `buildall.sh`. Apple Silicon Metal must be verified in Wave 1.
|
||||
- `omnivoice.cpp` README does not publish a standalone `buildmetal.sh` script; Apple Silicon Metal is built directly via `cmake -DGGML_METAL=ON` (#2105).
|
||||
|
||||
**Mitigations:**
|
||||
- Pin `omnivoice.cpp` by commit SHA (`886fc079838ca7400cb2b42b36e2a65aa1daabe8`); rebuild from pinned SHA in CI for all 4 target platforms.
|
||||
- Pin every quant file by commit SHA in `quant_map.json` (`361609388ae572a820d085185bbbe2a2aac4b30e`); shippable JSON so the table can update without an app release.
|
||||
- In-process `VoiceStudioBackend` remains as fallback if any GGUF step fails (probe, download, load, generate).
|
||||
- macOS Apple Silicon Metal build is verified in Wave 1 with explicit acceptance criteria; if blocked, downgrade SPIKE-01 default on macOS to in-process path and document in this ADR's "Status" line.
|
||||
- macOS Apple Silicon Metal build is verified via `cmake -DGGML_METAL=ON` (#2105); in-process `VoiceStudioBackend` remains available as general fallback.
|
||||
- SHA-256 checksums on bundled binaries (per GATE-05); verify at first launch and on every quant load.
|
||||
- Subprocess arg composition uses typed `Path` objects rooted in app directories; quant override UI is a dropdown over `quant_map.json` entries only (no freeform path input — supply-chain control analogous to INST-09).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user