Default breadmill load-dynamic build no longer supplies its promised CPU ONNX Runtime #14

Closed
opened 2026-10-15 11:11:14 +08:00 by Breadway · 3 comments
Owner

Found during independent ROAD-15 review of Breadway/breadsearch PR13, exact head 295838df42. Confidence: high. breadmill/Cargo.toml:46 enables ort/load-dynamic in the default dependency. Cargo.lock:2177-2199 actually resolves ort and ort-sys 2.0.0-rc.13 (not rc.12). In rc.13 load-dynamic enables ort-sys/disable-linking; ort-sys build/main.rs:25-33 returns before downloading/copying runtime libraries. Pristine locked default, full and default release builds all pass, but find target -name libonnxruntime* returns no files and readelf shows no runtime rpath or linked ORT. README.md:20 promises bundled CPU ORT with no system runtime; bakery.toml system_deps does not include onnxruntime and release artifact loops ship only the executables. With isolated XDG paths, roots=[], existing real model/tokenizer and ORT_DYLIB_PATH pointing at an absent library (deterministic no-runtime simulation), default breadmill model loader panics at ort/src/lib.rs:234 and never becomes model-ready, although daemon/socket stays alive. Supplying a CPU ORT 1.30 library separately makes CPU/CUDA-disabled fallback/OpenVINO-missing-provider fallback all load successfully. Fix default CPU runtime provisioning/packaging or preserve the promised no-system-runtime behavior through an appropriate dependency feature/pin design; make library load failure handled rather than an uncaught loader-thread panic, and add isolated installation/runtime coverage. Preserve optional backend feature gates. Evidence logs in ~/.worktrees/breadsearch/fix/review-road15-295838d/review-evidence/.

Found during independent ROAD-15 review of Breadway/breadsearch PR13, exact head 295838df42b93af4d4f0f071db32c9c2a8b08e77. Confidence: high. breadmill/Cargo.toml:46 enables ort/load-dynamic in the default dependency. Cargo.lock:2177-2199 actually resolves ort and ort-sys 2.0.0-rc.13 (not rc.12). In rc.13 load-dynamic enables ort-sys/disable-linking; ort-sys build/main.rs:25-33 returns before downloading/copying runtime libraries. Pristine locked default, full and default release builds all pass, but find target -name libonnxruntime* returns no files and readelf shows no runtime rpath or linked ORT. README.md:20 promises bundled CPU ORT with no system runtime; bakery.toml system_deps does not include onnxruntime and release artifact loops ship only the executables. With isolated XDG paths, roots=[], existing real model/tokenizer and ORT_DYLIB_PATH pointing at an absent library (deterministic no-runtime simulation), default breadmill model loader panics at ort/src/lib.rs:234 and never becomes model-ready, although daemon/socket stays alive. Supplying a CPU ORT 1.30 library separately makes CPU/CUDA-disabled fallback/OpenVINO-missing-provider fallback all load successfully. Fix default CPU runtime provisioning/packaging or preserve the promised no-system-runtime behavior through an appropriate dependency feature/pin design; make library load failure handled rather than an uncaught loader-thread panic, and add isolated installation/runtime coverage. Preserve optional backend feature gates. Evidence logs in ~/.worktrees/breadsearch/fix/review-road15-295838d/review-evidence/.
Author
Owner

Second independent ROAD-15 review at PR13 head 295838d (unchanged, no repair landed) reproduces both blockers: (1) default build still provisions no CPU runtime (fresh debug and release targets, zero libonnxruntime files, no ORT NEEDED/RPATH), and (2) absent runtime still panics the loader thread at ort rc.13 src/lib.rs:234 with the daemon alive and model_ready=false permanently. Full verdict with build evidence posted on Breadway/breadsearch PR13. Verdict: changes requested, no merge.

Second independent ROAD-15 review at PR13 head 295838d (unchanged, no repair landed) reproduces both blockers: (1) default build still provisions no CPU runtime (fresh debug and release targets, zero libonnxruntime files, no ORT NEEDED/RPATH), and (2) absent runtime still panics the loader thread at ort rc.13 src/lib.rs:234 with the daemon alive and model_ready=false permanently. Full verdict with build evidence posted on Breadway/breadsearch PR13. Verdict: changes requested, no merge.
Author
Owner

Independent exact-head review CHANGES REQUESTED at 354343c58e. Full criterion mapping, commands and repair checklist: #13 (comment) . Locked default/full build, 4 tests, clippy and default/full real-model runtime smoke pass; official ORT checksum confirmed and bad checksum rejected. Required fixes: embed.rs:97-105 unbounded/nonregular cache reads and unsafe modes (FIFO blocks loader, umask000 libraries0666); :117-123 unlink/rename shared-cache race; README:164-168 stale implicit system-runtime discovery. Filed SEARCH-18. ECO-78 remains outside scope. No merge or done; preserve PR13 and repair, then fresh exact-head review.

Independent exact-head review CHANGES REQUESTED at 354343c58e500db32d915ec197d7ca423e9222ea. Full criterion mapping, commands and repair checklist: https://git.breadway.dev/Breadway/breadsearch/pulls/13#issuecomment-5386 . Locked default/full build, 4 tests, clippy and default/full real-model runtime smoke pass; official ORT checksum confirmed and bad checksum rejected. Required fixes: embed.rs:97-105 unbounded/nonregular cache reads and unsafe modes (FIFO blocks loader, umask000 libraries0666); :117-123 unlink/rename shared-cache race; README:164-168 stale implicit system-runtime discovery. Filed SEARCH-18. ECO-78 remains outside scope. No merge or done; preserve PR13 and repair, then fresh exact-head review.
Author
Owner

Independent exact-head re-review of PR13: PASS at head 71648b4903. Verdict and full criterion mapping: #13 (comment)

Merged to main as 8d620245a3, parents 18cd5295 (old main) and 71648b49 (reviewed head), merge tree identical to the reviewed head. Evidence: /tmp/opencode/pr13-71648b4/evidence/README-evidence.md.

All three repairs from review 5386 verified with old-fails/new-passes proof: FIFO cache entry now yields a prompt model_error (old head blocked with model_error null); cache directory 0700 and libraries 0644 under umask 000 and 077 plus repair of pre-existing 0777/0666 entries (old head left 0777/0666); publication is a unique temp file plus rename under an advisory flock, with 8-thread, 2-daemon and 3-daemon concurrent installs all leaving byte-exact official libraries and no "File exists" (old head failed 7 of 8 concurrent threads with that error). Docs now describe only ORT_DYLIB_PATH or the bundled CPU cache. Earlier passes re-confirmed: pinned ORT SHA-256 a3e1b79d..., corrupted archive rejected by the build script before extraction, missing/corrupt override gives a controlled model_error with no panic and no fallback. Exact-head CI check / check (push) success, reviews empty.

Left in review for your verification of the integrated behavior; not marked done.

Independent exact-head re-review of PR13: PASS at head 71648b4903923d49e5552b9ace59da299e43fb5b. Verdict and full criterion mapping: https://git.breadway.dev/Breadway/breadsearch/pulls/13#issuecomment-5413 Merged to main as 8d620245a386070aafab19883943262cd5a29b4a, parents 18cd5295 (old main) and 71648b49 (reviewed head), merge tree identical to the reviewed head. Evidence: /tmp/opencode/pr13-71648b4/evidence/README-evidence.md. All three repairs from review 5386 verified with old-fails/new-passes proof: FIFO cache entry now yields a prompt model_error (old head blocked with model_error null); cache directory 0700 and libraries 0644 under umask 000 and 077 plus repair of pre-existing 0777/0666 entries (old head left 0777/0666); publication is a unique temp file plus rename under an advisory flock, with 8-thread, 2-daemon and 3-daemon concurrent installs all leaving byte-exact official libraries and no "File exists" (old head failed 7 of 8 concurrent threads with that error). Docs now describe only ORT_DYLIB_PATH or the bundled CPU cache. Earlier passes re-confirmed: pinned ORT SHA-256 a3e1b79d..., corrupted archive rejected by the build script before extraction, missing/corrupt override gives a controlled model_error with no panic and no fallback. Exact-head CI check / check (push) success, reviews empty. Left in review for your verification of the integrated behavior; not marked done.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/breadsearch#14
No description provided.