2026-10-13 21:23:23 +02:00
|
|
|
# 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.
|
2026-10-13 21:27:37 +02:00
|
|
|
|
|
|
|
|
## 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.
|
2026-10-13 21:30:48 +02:00
|
|
|
|
|
|
|
|
Linux staging now invokes the same ELF closure verification after manifest,
|
|
|
|
|
architecture and CPU/acceleration checks. A valid inventory cannot bypass this
|
|
|
|
|
check; missing `readelf` also fails staging. Six targeted staging tests passed,
|
|
|
|
|
including inspected ELF coverage, failure propagation and Windows independence.
|
|
|
|
|
|
|
|
|
|
The upcoming real CPU test fixture was prepared from the unchanged verified
|
|
|
|
|
English WAV (source SHA-256
|
|
|
|
|
`0aa1fa97d367d987bfb3bb01d7eca11db77a544552ccb8dc0a78ad74d0b496ea`).
|
|
|
|
|
Exact mono 16-kHz signed PCM16 samples were converted to float32 by division by
|
|
|
|
|
32768, preserving all 360192 samples. PCM SHA-256:
|
|
|
|
|
`56948226ac5a0ad4b70523a856dad0851929c7067957f339e9a5b30fc9b369ce`.
|
|
|
|
|
Fixture preparation succeeded; native recognition has not yet been executed.
|