feat: support configurable ONNX Runtime providers#181
Conversation
Arcade Agent architecture reviewI ran Overall result
The four additional static edges come from routing the legacy Turbo and v3 Turbo ONNX paths through one shared provider-policy module. No component, cycle, or concern-overload smell was added. I am reporting the score movement explicitly rather than treating it as a release gate; the dependency direction is intentional so provider detection and validation are implemented once. The repository-level report currently flags the existing low-severity Optional follow-up proposalIf this analysis is useful to maintainers, I can open a separate PR adding the pinned Arcade GitHub Action ( |
|
|
Nice, clean separation — Since it's still a draft, these are just notes for when you un-draft — nothing blocking:
Also, heads-up: Thanks! 🙏 |



Summary
onnx_providersoverride with early validation and clear errorsCPUExecutionProvideras the automatic fallback when it is installedFixes #167.
Root cause
The Turbo paths constructed fixed CUDA/CPU or CPU-only provider lists. As a result, installing another ONNX Runtime distribution did not make its execution provider usable, and callers could not explicitly control provider order.
Usage
If an explicitly requested provider is not reported by
onnxruntime.get_available_providers(), construction now fails early with the requested and available provider names.Validation
pytest -q tests/test_base_utils.py tests/test_engine_turbo.py tests/test_engine_v3turbo.py— 15 passed