Context
qracer/provider_catalog.py scans entry points for data/LLM providers, but full lifecycle management is missing. docs/architecture.md lines 80-122 describe a plugin system with providers.toml config-driven registration, but current code uses hardcoded _build_registries().
Goal
Complete the plugin lifecycle so third-party providers can be discovered, configured, health-checked, and shut down cleanly.
Scope
- Add
initialize(), health_check(), shutdown() protocol methods to provider base classes
- Wire
providers.toml config to provider_catalog.py for declarative provider registration
- Call lifecycle hooks in
_build_registries() and Server.shutdown()
- Graceful degradation: if a provider fails
health_check(), exclude it with a warning instead of crashing
- Add example third-party provider entry point in docs
Related
qracer/provider_catalog.py (entry point scanning exists)
qracer/config/schema/providers.toml (config schema exists)
Context
qracer/provider_catalog.pyscans entry points for data/LLM providers, but full lifecycle management is missing.docs/architecture.mdlines 80-122 describe a plugin system withproviders.tomlconfig-driven registration, but current code uses hardcoded_build_registries().Goal
Complete the plugin lifecycle so third-party providers can be discovered, configured, health-checked, and shut down cleanly.
Scope
initialize(),health_check(),shutdown()protocol methods to provider base classesproviders.tomlconfig toprovider_catalog.pyfor declarative provider registration_build_registries()andServer.shutdown()health_check(), exclude it with a warning instead of crashingRelated
qracer/provider_catalog.py(entry point scanning exists)qracer/config/schema/providers.toml(config schema exists)