Orchestrata Ultimate / RTM / 011-provider-manager
RTM: 011-provider-manager
Requirement to symbol to test rows for 011-provider-manager: Provider Manager.
At a glance
| Item | Value |
|---|---|
| Requirement IDs | 60 |
Traced from src/ |
39 (65.0%) |
| Untraced | 21 |
Cited from tests/ |
1 (1.7%) |
Traced in src/ but not cited from tests/ |
38 |
Reading this matrix
This matrix lists each of the 60 requirement IDs of spec 011-provider-manager with the src/ symbols that cite it and the tests that cite it. 39 of them (65.0%) have at least one citing symbol and 21 have none.
1 requirement is also cited from tests/, and 38 are traced in code but never named by a test. A test citation is a @traces on a test function; it shows intent to cover, not that the test runs or reaches the symbol.
Rows showing none in the symbols column are the gaps to close first. The densest untraced groups are REQ-011-* (21).
Requirement to symbols to tests
| Requirement | Symbols in src/ |
Tests citing it |
|---|---|---|
REQ-011-001 IProviderManager defined as ABC in orchestrata-core interfaces module |
orchestrata_ultimate/core/protocols/providers ProviderManagerProtocol L240 |
tests/knowledge_graph/test_graph_context_injection.py::test_call_llm_accepts_graph_contexttests/knowledge_graph/test_graph_context_injection.py::test_call_reasoner_passes_graph_contexttests/knowledge_graph/test_graph_context_injection.py::test_graph_context_empty_string_treated_as_none+3 more |
REQ-011-002 IProviderManager registered with ComponentType.PROVIDER_MANAGER in DI container |
none | none |
REQ-011-003 IComponent lifecycle implemented (initialize, start, stop, get_health) |
orchestrata_ultimate/core/protocols/base ComponentProtocol L202orchestrata_ultimate/core/protocols/providers ProviderManagerProtocol L240orchestrata_ultimate/providers/provider_manager ProviderManager L74+4 more |
none |
REQ-011-004 ProviderRequest data class defined with messages, model, capabilities, parameters |
orchestrata_ultimate/core/protocols/providers ProviderRequest L94 |
none |
REQ-011-005 ProviderResponse data class defined with content, model_used, provider_used, usage, cost |
orchestrata_ultimate/core/protocols/providers ProviderResponse L116 |
none |
REQ-011-006 Execute accepts ProviderRequest and returns ProviderResponse |
orchestrata_ultimate/core/protocols/providers execute L248orchestrata_ultimate/providers/provider_manager _enforce_budget L311orchestrata_ultimate/providers/provider_manager execute L247 |
none |
REQ-011-007 Provider selected based on model specification or capability matching |
orchestrata_ultimate/core/protocols/providers supports_capability L234orchestrata_ultimate/providers/adapters/anthropic_adapter supports_capability L224orchestrata_ultimate/providers/adapters/claude_cli_adapter supports_capability L307+9 more |
none |
REQ-011-008 Response normalized to common ProviderResponse format |
orchestrata_ultimate/providers/adapters/anthropic_adapter complete L136orchestrata_ultimate/providers/provider_manager _record_success L369orchestrata_ultimate/providers/provider_manager execute L247 |
none |
REQ-011-009 ProviderError raised with details when all providers fail |
orchestrata_ultimate/providers/provider_manager ProviderError L49orchestrata_ultimate/providers/provider_manager __init__ L53orchestrata_ultimate/providers/provider_manager _enforce_budget L311+1 more |
none |
REQ-011-010 Cost recorded for every executed request |
orchestrata_ultimate/providers/cost_tracker CostTracker L70orchestrata_ultimate/providers/provider_manager _record_failure L415orchestrata_ultimate/providers/provider_manager _record_success L369+1 more |
none |
REQ-011-011 Routing strategy: cost_optimized implemented |
orchestrata_ultimate/core/protocols/providers RoutingStrategy L34orchestrata_ultimate/providers/router RequestRouter L22orchestrata_ultimate/providers/router _rank L188 |
none |
REQ-011-012 Routing strategy: latency_optimized implemented |
orchestrata_ultimate/core/protocols/providers RoutingStrategy L34orchestrata_ultimate/providers/router RequestRouter L22orchestrata_ultimate/providers/router _rank L188 |
none |
REQ-011-013 Routing strategy: quality_optimized implemented |
orchestrata_ultimate/core/protocols/providers RoutingStrategy L34orchestrata_ultimate/providers/router RequestRouter L22orchestrata_ultimate/providers/router _rank L188 |
none |
REQ-011-014 Routing strategy: round_robin implemented |
orchestrata_ultimate/core/protocols/providers RoutingStrategy L34orchestrata_ultimate/providers/router RequestRouter L22orchestrata_ultimate/providers/router _rank L188 |
none |
REQ-011-015 Providers filtered by availability before routing |
orchestrata_ultimate/providers/provider_manager _token_counter_for L531orchestrata_ultimate/providers/provider_manager get_rate_limit_backoff L447orchestrata_ultimate/providers/router RequestRouter L22+3 more |
none |
REQ-011-016 Providers filtered by rate limit headroom before routing |
orchestrata_ultimate/providers/provider_manager get_rate_limit_backoff L447orchestrata_ultimate/providers/router RequestRouter L22orchestrata_ultimate/providers/router get_rate_limit_backoff L174+2 more |
none |
REQ-011-017 Routing decisions logged for auditability |
none | none |
REQ-011-018 Cost estimated before execution based on input token count |
orchestrata_ultimate/core/protocols/providers CostEstimate L68orchestrata_ultimate/core/protocols/providers estimate_cost L253orchestrata_ultimate/providers/provider_manager _estimate_cost_for_pricing L553+1 more |
none |
REQ-011-019 Actual cost recorded after execution based on usage |
orchestrata_ultimate/providers/cost_tracker calculate_cost L94orchestrata_ultimate/providers/cost_tracker record_cost L125 |
none |
REQ-011-020 Cumulative cost tracked per volk_id |
orchestrata_ultimate/providers/cost_tracker get_usage L185orchestrata_ultimate/providers/cost_tracker record_cost L125orchestrata_ultimate/providers/provider_manager get_usage L467 |
none |
REQ-011-021 Cumulative cost tracked per session_id |
orchestrata_ultimate/providers/cost_tracker get_usage L185orchestrata_ultimate/providers/cost_tracker record_cost L125orchestrata_ultimate/providers/provider_manager get_usage L467 |
none |
REQ-011-022 Cumulative cost tracked per project_id and portfolio_id |
orchestrata_ultimate/providers/provider_manager get_usage L467 |
none |
REQ-011-023 Cost queries supported with time range filters |
orchestrata_ultimate/core/protocols/providers get_usage L258orchestrata_ultimate/providers/provider_manager get_usage L467 |
none |
REQ-011-024 Dynamic provider registration and deregistration |
orchestrata_ultimate/core/protocols/providers deregister_provider L281orchestrata_ultimate/core/protocols/providers register_provider L271orchestrata_ultimate/providers/adapters/claude_cli_adapter close L280+6 more |
none |
REQ-011-025 Provider configuration validated on registration |
orchestrata_ultimate/core/protocols/providers register_provider L271orchestrata_ultimate/providers/provider_manager register_provider L191 |
none |
REQ-011-026 YAML configuration loading from configs/production.yaml |
none | none |
REQ-011-027 Environment variable interpolation for secrets |
none | none |
REQ-011-028 Model registry with capabilities, context_window, pricing |
orchestrata_ultimate/core/protocols/providers ModelInfo L173orchestrata_ultimate/core/protocols/providers ModelPricing L161orchestrata_ultimate/core/protocols/providers get_models L229+8 more |
none |
REQ-011-029 IProvider protocol defined for adapter implementations |
orchestrata_ultimate/core/protocols/providers ProviderProtocol L216 |
none |
REQ-011-030 OpenAI adapter implemented |
orchestrata_ultimate/providers/adapters/openai_adapter OpenAIAdapter L24 |
none |
REQ-011-031 Anthropic adapter implemented |
orchestrata_ultimate/providers/adapters/anthropic_adapter AnthropicAdapter L125orchestrata_ultimate/providers/adapters/anthropic_adapter _build_anthropic_messages L67orchestrata_ultimate/providers/adapters/anthropic_adapter _translate_tool_choice_to_anthropic L43+1 more |
none |
REQ-011-032 DeepSeek adapter implemented |
orchestrata_ultimate/providers/adapters/deepseek_adapter DeepSeekAdapter L25 |
none |
REQ-011-033 Ollama adapter implemented |
orchestrata_ultimate/providers/adapters/ollama_adapter OllamaAdapter L21 |
none |
REQ-011-034 Custom adapter registration supported |
none | none |
REQ-011-035 Fallback chains configurable per capability class |
none | none |
REQ-011-036 Fallback triggered on timeout, rate limit, server error |
orchestrata_ultimate/providers/router get_fallback_chain L87 |
none |
REQ-011-037 Fallback NOT triggered on auth error, invalid request, budget exceeded |
none | none |
REQ-011-038 Circuit breaker per provider (closed/open/half-open) |
orchestrata_ultimate/providers/circuit_breaker CircuitBreaker L46orchestrata_ultimate/providers/circuit_breaker CircuitState L36orchestrata_ultimate/providers/circuit_breaker _load_state L161+4 more |
none |
REQ-011-039 Circuit opens after configurable consecutive failures (default: 5) |
orchestrata_ultimate/providers/circuit_breaker CircuitBreaker L46orchestrata_ultimate/providers/circuit_breaker __init__ L56orchestrata_ultimate/providers/circuit_breaker record_failure L125 |
none |
REQ-011-040 Half-open probe after configurable cooldown (default: 60s) |
orchestrata_ultimate/providers/circuit_breaker CircuitBreaker L46orchestrata_ultimate/providers/circuit_breaker __init__ L56orchestrata_ultimate/providers/circuit_breaker is_available L95+1 more |
none |
REQ-011-041 Per-provider RPM and TPM tracking |
orchestrata_ultimate/providers/rate_limiter RateLimiter L20orchestrata_ultimate/providers/rate_limiter __init__ L33orchestrata_ultimate/providers/rate_limiter _maybe_reset_window L139+7 more |
none |
REQ-011-042 Rate limit headers parsed from provider responses |
orchestrata_ultimate/providers/rate_limiter RateLimiter L20 |
none |
REQ-011-043 Request queuing when rate limit headroom < 10% |
orchestrata_ultimate/providers/rate_limiter RateLimiter L20orchestrata_ultimate/providers/rate_limiter has_low_headroom L103 |
none |
REQ-011-044 Alternative provider routing when primary rate-limited |
orchestrata_ultimate/providers/rate_limiter RateLimiter L20 |
none |
REQ-011-045 Budget limits configurable at Volk, project, portfolio level |
orchestrata_ultimate/core/protocols/providers get_remaining_budget L286orchestrata_ultimate/providers/cost_tracker CostTracker L70orchestrata_ultimate/providers/cost_tracker budget_key L60+5 more |
none |
REQ-011-046 BudgetExceededError raised when budget exhausted |
orchestrata_ultimate/providers/provider_manager BudgetExceededError L59orchestrata_ultimate/providers/provider_manager __init__ L63 |
none |
REQ-011-047 Budget warning events at 80%, 90%, 95% thresholds |
none | none |
REQ-011-048 PAM++ governance overrides for emergency escalations |
none | none |
REQ-011-049 Model access policies enforced via Prolog governance |
none | none |
REQ-011-050 Per-Volk model allowlists and denylists supported |
none | none |
REQ-011-051 All provider operations logged to audit trail |
none | none |
REQ-011-052 Audit records stored in Neo4j for compliance queries |
none | none |
REQ-011-053 Audit queries by time range, volk, provider, cost threshold |
none | none |
REQ-011-054 Provider selection < 5ms (P95) |
none | none |
REQ-011-055 Cost estimation < 2ms (P95) |
none | none |
REQ-011-056 Full request overhead < 20ms (P95) |
none | none |
REQ-011-057 Concurrent requests: 200+ simultaneous |
none | none |
REQ-011-058 API keys in environment variables, never in code or logs |
none | none |
REQ-011-059 API keys excluded from audit records and error messages |
none | none |
REQ-011-060 Provider credentials rotatable without restart |
none | none |