Fixed
- Router priority ordering now respects explicit priority over circuit state. Previously, routing candidates were ordered strictly by circuit state (
CLOSEDcandidates always beforeHALF_OPEN), then by priority and health score. This meant a high-priority model sitting inHALF_OPENrecovery could be skipped in favor of a lower-priorityCLOSEDmodel — defeating the whole point of explicit priority levels. The comparator now sorts by explicit priority first, then by circuit state (CLOSEDbeforeHALF_OPEN), then by health score. Higher-priority models are never again jumped over just because they are mid-recovery.
Changed
- Probe loop hardening.
scheduleProbeLoop()now clears a staleprobeWatchdogtimer alongside the main probe timer, trackslastProbeAttimestamps after every successful cycle, and wraps the scheduling body in atry/catchso a single failed probe cycle can no longer destabilize the background routing daemon. Results in more reliable health-check cadences across the CLI, web, and Tauri surfaces (shared core).
Added
- Public re-exports of the provider-key-test helpers from
key-handler.js(buildProviderModelsUrl,parseProviderModelIds,listProviderTestModels,classifyProviderTestOutcome,buildProviderTestDetail). Completes the shared-module refactor introduced in #121 (provider key testing moved tosrc/core/provider-key-tester.js) so the TUI key-handler exposes the same surface other modules already consume.
Docs
- Credited @MoriDanWork in the README contributors table and the AGENTS.md contributor list for PR #121 (move provider key testing to a shared module).