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
|
|
|
|
|
|
2026-10-13 21:33:26 +02:00
|
|
|
A normal auto runtime diagnostic build from that immutable snapshot was started in
|
|
|
|
|
`/home/karl/.cache/searchi-validation/speech-auto-016`. It included Vulkan
|
|
|
|
|
compilation and no GPU inference. It was deliberately cancelled after inspection
|
|
|
|
|
confirmed that it predates the relocation correction, rather than due to a wait
|
|
|
|
|
timeout. The exact owned builder command line was verified before terminating
|
|
|
|
|
its process tree; its original tool session then reported terminal exit 1.
|
|
|
|
|
No runtime from that incomplete build is releasable.
|
2026-10-13 21:27:37 +02:00
|
|
|
|
|
|
|
|
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.
|
2026-10-13 21:33:26 +02:00
|
|
|
The original snapshot does not contain this correction. Its output must not be
|
|
|
|
|
released as corrected evidence. A corrected normal auto build from immutable
|
|
|
|
|
commit `61afa08` is now running in
|
|
|
|
|
`/home/karl/.cache/searchi-validation/speech-auto-61afa08`. Next: wait for its
|
|
|
|
|
terminal result, inspect the complete ELF closure, then validate the runtime
|
2026-10-13 21:27:37 +02:00
|
|
|
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.
|
2026-10-13 21:33:26 +02:00
|
|
|
The same six tests subsequently passed directly on Ubuntu 24.04 (0.409 seconds).
|
2026-10-13 21:30:48 +02:00
|
|
|
|
|
|
|
|
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.
|
2026-10-13 21:38:31 +02:00
|
|
|
|
|
|
|
|
## Headless release preparation
|
|
|
|
|
|
|
|
|
|
The locked offline Linux release build of `searchi-cli` and
|
|
|
|
|
`searchi-extract-worker` from source `61afa08` passed in 58.38 seconds.
|
|
|
|
|
The extraction helper was staged with its current source fingerprint and
|
|
|
|
|
verified. CLI executable: 21921224 bytes, SHA-256
|
|
|
|
|
`f7602d41eeab80c74e00014ab51297223eae651755707b341951c2e624807d94`.
|
|
|
|
|
This is compilation and provenance evidence, not a new published archive.
|
|
|
|
|
|
|
|
|
|
`tools/package_linux.py --speech-runtime PATH` now includes a verified normal
|
|
|
|
|
speech runtime in its isolated `speech-runtime/` directory. The worker is
|
|
|
|
|
executable; inventory, libraries and approved notices are included. Archive
|
|
|
|
|
instructions explain speech-model setup and indexing, and metadata identifies
|
|
|
|
|
speech as experimental. Omitting this parameter preserves reproduction of older
|
|
|
|
|
speech-free packages. New speech-enabled releases must provide it.
|
|
|
|
|
|
|
|
|
|
Twenty-one focused package tests passed, including archive hashes/permissions,
|
|
|
|
|
instructions, and rejection of internal CPU artifacts, tampering, absent notices
|
|
|
|
|
and invalid ELF closure while preserving an existing output. These use fixture
|
|
|
|
|
artifacts and do not replace the pending genuine native-runtime verification.
|
2026-10-13 21:40:51 +02:00
|
|
|
|
|
|
|
|
The same 21 packaging tests also passed directly on Ubuntu (1.317 seconds).
|
|
|
|
|
Package preparation from immutable source `36bd510` verified 21 normal Google
|
|
|
|
|
runtime records, four pinned decoder/notice records and current extraction-worker
|
|
|
|
|
provenance. The stripped release CLI is 17560544 bytes, SHA-256
|
|
|
|
|
`51523b1b20e5afcd2ea81a9c824148262f79ea8360ad411c1ce8a97278290d2f`.
|
|
|
|
|
Its actual `setup --help` and `embed --help` accepted the speech options used in
|
|
|
|
|
archive instructions. No model inference was performed in these preparation checks.
|
|
|
|
|
The corrected native speech build and its queued relocated CPU test are still
|
|
|
|
|
running/waiting; no speech-enabled Linux archive has been published yet.
|