ci: per-engine CI lanes for parakeet-cpp and tts-cpp (QIP PR 0)#93
Open
ogad-tether wants to merge 7 commits into
Open
ci: per-engine CI lanes for parakeet-cpp and tts-cpp (QIP PR 0)#93ogad-tether wants to merge 7 commits into
ogad-tether wants to merge 7 commits into
Conversation
… QIP (PR 0) Nothing in this repo's CI built or tested our engines until now — real verification happened three repos downstream in tetherto/qvac. This adds path-filtered workflows that, per PR: - build qvac-ext-ggml@speech (CPU-only, cached by branch-tip SHA — the same fork the ggml-speech vcpkg port ships) - build each engine + all test harnesses against it as system ggml - run the non-GPU ctest lanes (`-LE 'gpu|perf'`); model-dependent tests auto-DISABLE to "Not Run" per the existing harness design Validated locally on macOS arm64: tts lane 68/68 pass, parakeet lane green (1 runnable test model-free; parity suites need staged GGUF fixtures — follow-up documented in the QIP). GPU lanes are stubbed behind workflow_dispatch until self-hosted GPU runners exist. docs/QIP-speech-repo-reorg.md is the reorg proposal this is "PR 0" of (symmetric engines/ layout, upstream vendored as a minimally-divergent git subtree under third_party/). The workflows land against today's paths; the reorg PRs only touch the path filters. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review StatusCurrent Status: ❌ PENDING Pending reviews: Needs 1 Management or Team Lead, and 1 more from Management, Team Lead, or Member. |
… QIP to #94 First run of the new tts CI lane caught a real cross-platform bug: test-campplus and test-campplus-backward-parity compile src/campplus.cpp (which calls tts_cpp::detail::init_cpu_backend()) without src/backend_selection.cpp, where that symbol lives. Apple's toolchain happened to optimize the reference away; GNU ld on Linux fails with an undefined reference — and Linux-with-tests was never built by any CI until now. Mirror the source list test-voice-embedding already uses. Also drop docs/QIP-speech-repo-reorg.md from this branch — the QIP now has its own approval PR (#94); this PR is CI + fixes only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ads) On ubuntu the test binaries resolve libqvac-speech-ggml.so via their build RUNPATH, but RUNPATH is not consulted for that library's own transitive dependencies (libqvac-speech-ggml-cpu.so.0 et al), so 35 tts tests failed at exec with "cannot open shared object file". macOS is unaffected (@rpath resolution walks the executable's rpath stack for the whole load chain). Point LD_LIBRARY_PATH at the ggml install dir for the ctest step in both lanes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ogad-tether
marked this pull request as ready for review
July 17, 2026 09:12
…e engines engines-cross-ci.yml: engine x platform matrix complementing the linux/mac lanes — - windows-2022: MSVC, static system ggml, full build + non-GPU ctest - android: NDK arm64-v8a compile smoke (no device to run tests on) - ios: device arm64 compile smoke, Metal embedded (flags mirror build-xcframework.sh) iOS recipe validated locally (ggml + both engines compile clean against the iphoneos 26.2 SDK). On-device e2e remains downstream in tetherto/qvac; these lanes front-load cross-compile/link breaks ahead of the repo-reorg moves (QIP #94). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…amples in cross lanes The new Windows lane's first run caught 9 test files calling POSIX setenv/unsetenv, which MSVC's CRT doesn't provide — add test/test_env_portable.h (same-named _putenv_s shims on _MSC_VER, plain <cstdlib> elsewhere) and include it where used. Also -DPARAKEET_BUILD_EXAMPLES=OFF in the windows/android/ios lanes: the live-mic examples hand GCC-style warning flags to cl.exe and use mic-capture APIs that don't exist on the iOS device SDK; examples are dev conveniences, not part of the cross-platform surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
test-gguf-stream and test-lavasr-enhancer-ggml consulted only TMPDIR with a hard "/tmp" fallback — Windows sets TEMP/TMP and has no /tmp, so both failed on the new Windows lane. Add test_tmpdir() to test_env_portable.h (TMPDIR -> TEMP -> TMP -> "/tmp") and use it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GustavoA1604
requested changes
Jul 17, 2026
…env shim, GPU flags in gpu stubs - All ggml provisioning steps now fetch the exact SHA the cache key was derived from (git init + fetch --depth 1 <sha> + checkout FETCH_HEAD) instead of cloning the branch tip with a swallowed checkout — the tip advancing between ls-remote and clone could poison the cache with a commit the key never described. Applies to parakeet-ci, tts-ci and all three engines-cross-ci jobs. - test_env_portable.h: the MSVC setenv shim now honors overwrite=0 (existing variable left untouched, return 0) instead of silently diverging from POSIX. - GPU stub jobs: build ggml with -DGGML_VULKAN=ON (the backend the -L gpu suites target; Metal is default-on on Apple hosts) so a dispatch run can't falsely pass against a CPU-only ggml; flag set to be revisited when the runner fleet exists. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ogad-tether
added a commit
that referenced
this pull request
Jul 17, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GustavoA1604
approved these changes
Jul 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
PR 0 of the repo-reorg QIP (#94 — the plan itself; approve there). This PR is the CI scaffold and lands independently of the QIP's approval:
.github/workflows/parakeet-ci.yml/tts-ci.yml— the first CI in this repo that builds and tests our engines. Per PR (path-filtered):qvac-ext-ggml@speechCPU-only (shallow clone,actions/cachekeyed by branch-tip SHA; same fork theggml-speechvcpkg port ships).PARAKEET_USE_SYSTEM_GGML=ON/ tts already mandates system ggml).ctest -LE 'gpu|perf' --output-on-failure— model-dependent tests auto-DISABLEto "Not Run" per the existing harness design, so the lane is green with committed fixtures only.workflow_dispatch(runs-on: [self-hosted, gpu]) until GPU runners exist. Hostedmacos-14exposes Metal, so trialling-L gputhere is a cheap follow-up.tts-cpp/CMakeLists.txtfix — the lane's very first run caught a real bug:test-campplus/test-campplus-backward-paritycompilesrc/campplus.cppwithoutsrc/backend_selection.cpp, wheretts_cpp::detail::init_cpu_backend()lives. Apple's toolchain tolerated it; GNU ld fails with an undefined reference — Linux-with-tests had never been built by any CI before. Fixed by mirroringtest-voice-embedding's source list.Why now
Engine regressions currently surface days later in
tetherto/qvace2e (3-PR propagation). This front-loads build breaks and unit/fixture regressions to the PR itself. The workflows land against today's paths (parakeet-cpp/,tts-cpp/); the reorg PRs (#94) only touch the path filters.Validation
d7e27ac7): parakeet + tts build clean; tts lane 68/68 pass, parakeet lane green (1 test runnable model-free, parity suites "Not Run" pending staged GGUF fixtures).Not in this PR (per QIP #94)
port-smoke.yml(needs registry portfiles), whisper build job (upstreambuild.ymlstill covers it until PR 2), GGUF fixture hosting for the parity suites🤖 Generated with Claude Code