Files
searchi/docs/LINUX-SPEECH-0.1.6.md
T

53 lines
2.9 KiB
Markdown
Raw Normal View History

# Linux speech client portability check
2026-10-13, Ubuntu 24.04 WSL x86-64. Immutable source snapshot from commit
`9bc7221`; existing isolated Cargo cache and target, locked offline dependencies.
`SEARCHI_FORCE_CPU=1` throughout. No model inference or GPU execution occurred.
Executed checks:
```sh
cargo test -p searchi-speech --locked --offline
cargo check -p searchi-cli --locked --offline
SEARCHI_TEST_PYTHON=python3 cargo test -p searchi-speech actual_subprocess_timeout_and_overflow_are_reaped --locked --offline -- --ignored --nocapture
```
Five default unit tests passed. The real owned-subprocess transport test also
passed: timeout and oversized framing reaped their child processes; only the
typed transport failure was eligible for recovery. The genuine native speech
model test remained ignored. CLI compilation passed, including the shared
speech/service/assets dependencies, without desktop dependencies.
Recorded command output: speech compilation 11.67 seconds; headless dependency
check 7.28 seconds; real transport test 0.14 seconds. These are build/test durations,
not inference or search performance measurements.
Snapshot: `/home/karl/.cache/searchi-validation/linux-source-9bc7221`.
This closes a client portability check only. It does not prove the Linux native
speech worker, model setup, runtime packaging, recognition quality, desktop UI
or GPU operation. Published Linux downloads remain version 0.1.4.
## Native runtime preparation
A normal auto runtime build from that immutable snapshot is running in
`/home/karl/.cache/searchi-validation/speech-auto-016`; it includes Vulkan
compilation and does not run GPU inference. Do not restart it merely because
an observation times out. Its full compilation and relocation remain unchecked.
Inspection exposed an unverified release path: speech packaging flattened shared
libraries without checking ELF dependency closure or their build-tree lookup
paths. The builder now checks every staged ELF for origin-only RUNPATH and
declared dependencies, allowing a system Vulkan loader only for the dynamic
Vulkan module. Three builder tests passed, including rejection of build-tree
paths, missing libraries and a Vulkan dependency on the CPU worker.
The CMake configuration now gives Linux shared targets their own `$ORIGIN`
RUNPATH; this is required because executable RUNPATH is not transitive.
Actual configuration and a separate native `ggml-base` build passed in
`speech-rpath-check-016`. `readelf` verified that the resulting library has
RUNPATH `$ORIGIN`; generated executable link flags use the same path.
This narrow library check does not establish complete runtime relocation.
The running original snapshot does not contain this correction. Its output
must not be released as corrected evidence. Next: wait for its terminal result,
inspect the complete ELF closure, then validate a corrected normal runtime
outside the build tree with `LD_LIBRARY_PATH` unset and forced CPU recognition.