Orchestrata Ultimate / RTM / 028-llm-client
RTM: 028-llm-client
Requirement to symbol to test rows for 028-llm-client: LLM Client Facade.
At a glance
| Item | Value |
|---|---|
| Requirement IDs | 56 |
Traced from src/ |
34 (60.7%) |
| Untraced | 22 |
Cited from tests/ |
1 (1.8%) |
Traced in src/ but not cited from tests/ |
33 |
Reading this matrix
This matrix lists each of the 56 requirement IDs of spec 028-llm-client with the src/ symbols that cite it and the tests that cite it. 34 of them (60.7%) have at least one citing symbol and 22 have none.
1 requirement is also cited from tests/, and 33 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-028-* (22).
Requirement to symbols to tests
| Requirement | Symbols in src/ |
Tests citing it |
|---|---|---|
REQ-028-001 call_llm is an async function with signature `call_llm(volk_id: str, messages:... |
none | none |
REQ-028-002 call_llm resolves the effective provider via get_volk_provider(volk_id) unless... |
none | none |
REQ-028-003 call_llm resolves the effective model via `get_volk_model(volk_id,... |
orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-004 call_llm delegates the resolved request to `ProviderManager.complete(provider,... |
none | none |
REQ-028-005 call_llm injects graph context into the first user message before dispatching when... |
orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-006 call_llm validates graph context compliance on the response and retries up to... |
orchestrata_ultimate/knowledge_graph/graph_context_validator compliance_ratio L53orchestrata_ultimate/knowledge_graph/graph_context_validator entities_found L61orchestrata_ultimate/knowledge_graph/graph_context_validator entities_missing L67+7 more |
none |
REQ-028-007 call_llm returns the plain assistant response text as a str |
none | none |
REQ-028-008 call_llm raises LLMClientError for permanent provider errors (HTTP 400, 401, 403, 404) |
none | none |
REQ-028-009 call_llm raises LLMProviderUnavailableError after exhausting all retry attempts on... |
none | none |
REQ-028-010 call_llm logs each attempt at DEBUG level and each retry at WARNING level with... |
none | none |
REQ-028-011 call_reasoner is an async function with the same signature as call_llm minus the... |
orchestrata_ultimate/llm/client call_reasoner L980 |
none |
REQ-028-012 call_reasoner delegates to call_llm with reasoning=True |
orchestrata_ultimate/llm/client call_reasoner L980 |
none |
REQ-028-013 Volks in REASONING_VOLKS calling call_reasoner receive the reasoning_model from... |
orchestrata_ultimate/llm/client call_reasoner L980 |
none |
REQ-028-014 Volks not in REASONING_VOLKS calling call_reasoner receive their standard model... |
orchestrata_ultimate/llm/client call_reasoner L980 |
none |
REQ-028-015 REASONING_VOLKS is defined as the frozen set {"U:Ar", "U:SD"} |
orchestrata_ultimate/llm/client call_reasoner L980 |
none |
REQ-028-016 VolkConfig is a dataclass with fields provider: str, model: str,... |
none | none |
REQ-028-017 Default assignments are defined for U:Cx → claude/claude-sonnet-4-5 |
none | none |
REQ-028-018 Default assignments are defined for U:Ar → claude/claude-opus-4-5 (standard) and... |
none | none |
REQ-028-019 Default assignments are defined for J:Junior → claude/claude-sonnet-4-5 |
none | none |
REQ-028-020 Default assignments are defined for U:Ox, U:PS, U:Cd, U:Ux, U:PM, U:Qa,... |
none | none |
REQ-028-021 A sentinel default key in VolkConfig map applies to any unrecognised volk_id |
orchestrata_ultimate/drivers/deepseek_coder_driver _recover_missing_files L445orchestrata_ultimate/drivers/deepseek_coder_driver _retry_on_empty L397orchestrata_ultimate/drivers/deepseek_coder_driver execute L298+5 more |
tests/llm/test_config.py::test_get_volk_model_none_falls_back_to_default_sentineltests/llm/test_config.py::test_known_agents_excludes_default_sentineltests/llm/test_config.py::test_unknown_agent_falls_back_to_default_sentinel |
REQ-028-022 ORCHESTRATA_LLM_PROVIDER env var globally overrides the provider field for all Volks |
orchestrata_ultimate/core/infra_config get_volk_provider L326 |
none |
REQ-028-023 ORCHESTRATA_LLM_MODEL env var globally overrides the model field for all Volks |
orchestrata_ultimate/core/infra_config get_volk_model L333 |
none |
REQ-028-024 ORCHESTRATA_LLM_REASONING_MODEL env var globally overrides the reasoning_model... |
none | none |
REQ-028-025 Per-volk env var overrides (pattern ORCHESTRATA_LLM_MODEL_<VOLK_SANITISED>) take... |
none | none |
REQ-028-026 get_volk_provider(volk_id: str) -> str returns the effective provider after applying... |
orchestrata_ultimate/core/infra_config get_volk_provider L326 |
none |
REQ-028-027 get_volk_model(volk_id: str, reasoning: bool = False) -> str returns... |
none | none |
REQ-028-028 Both functions fall back to the default config entry when volk_id is not in the map |
orchestrata_ultimate/llm/config get_model L270orchestrata_ultimate/llm/config get_provider L242orchestrata_ultimate/llm/config get_volk_model L341+1 more |
none |
REQ-028-029 HTTP status codes 429, 500, 502, 503 are classified as transient errors |
orchestrata_ultimate/llm/client _is_transient L515 |
none |
REQ-028-030 asyncio.TimeoutError and concurrent.futures.TimeoutError are classified as... |
orchestrata_ultimate/llm/client _is_transient L515 |
none |
REQ-028-031 ConnectionRefusedError, ConnectionResetError, and aiohttp.ClientConnectorError... |
orchestrata_ultimate/llm/client _is_transient L515 |
none |
REQ-028-032 HTTP status codes 400, 401, 403, 404 are classified as permanent errors |
orchestrata_ultimate/llm/client _is_transient L515 |
none |
REQ-028-033 A helper is_transient(exc) -> bool function encapsulates all transient error... |
orchestrata_ultimate/llm/client _is_transient L515 |
none |
REQ-028-034 Maximum retry attempts is MAX_RETRIES = 5 (6 total attempts including the first) |
orchestrata_ultimate/llm/client _execute_with_retry L566orchestrata_ultimate/llm/client _is_rate_limit_error L551 |
none |
REQ-028-035 Backoff delay formula is `min(base_delay * 2 ** attempt + random.uniform(0, jitter),... |
orchestrata_ultimate/llm/client _execute_with_retry L566orchestrata_ultimate/llm/client _is_rate_limit_error L551 |
none |
REQ-028-036 Default base_delay = 1.0 second, jitter = 0.5 seconds, max_delay = 60.0 seconds |
orchestrata_ultimate/llm/client _execute_with_retry L566orchestrata_ultimate/llm/client _is_rate_limit_error L551 |
none |
REQ-028-037 On permanent error, the exception is re-raised immediately without any retry |
orchestrata_ultimate/llm/client _execute_with_retry L566orchestrata_ultimate/llm/client _is_rate_limit_error L551 |
none |
REQ-028-038 After MAX_RETRIES transient failures, LLMProviderUnavailableError is raised with... |
orchestrata_ultimate/llm/client _execute_with_retry L566orchestrata_ultimate/llm/client _is_rate_limit_error L551 |
none |
REQ-028-039 When graph_context is a non-empty dict, its content is serialised to a... |
none | none |
REQ-028-040 The serialised block is prepended to the content of the first message where `role ==... |
orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-041 The injected block is delimited by ### Knowledge Graph Context ### header and `###... |
none | none |
REQ-028-042 The original user message content follows the injected block verbatim without modification |
orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-043 When graph_context is None or an empty dict, no prefix is added and the messages... |
orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-044 After receiving a response, the facade extracts entity names from graph_context |
none | none |
REQ-028-045 Compliance passes if at least one entity name appears (case-insensitive substring... |
none | none |
REQ-028-046 On compliance failure, a nudge message `"Please reference the provided graph context... |
none | none |
REQ-028-047 Maximum validation retries is MAX_VALIDATION_RETRIES = 3 |
none | none |
REQ-028-048 After MAX_VALIDATION_RETRIES compliance failures, the last response is returned with... |
none | none |
REQ-028-049 Compliance validation is entirely skipped when graph_context is None or empty |
orchestrata_ultimate/knowledge_graph/graph_context_validator has_entities L406orchestrata_ultimate/llm/client call_llm L807 |
none |
REQ-028-050 ProviderManager is accessed via a module-level get_provider_manager() function... |
orchestrata_ultimate/llm/client _get_provider_manager L481 |
none |
REQ-028-051 Default adapter registration covers claude_cli, anthropic, deepseek,... |
orchestrata_ultimate/llm/client _get_provider_manager L481 |
none |
REQ-028-052 Each adapter is lazily initialised on first use (constructor not called at import time) |
orchestrata_ultimate/llm/client _get_provider_manager L481 |
none |
REQ-028-053 Registering a provider name that already exists silently replaces the previous adapter |
orchestrata_ultimate/llm/client _get_provider_manager L481 |
none |
REQ-028-054 LLMClientError(Exception) is the base exception for all LLM client failures |
orchestrata_ultimate/llm/exceptions LLMClientError L7 |
none |
REQ-028-055 LLMProviderUnavailableError(LLMClientError) signals exhausted retries or no... |
orchestrata_ultimate/llm/exceptions LLMProviderUnavailableError L16 |
none |
REQ-028-056 Both exception classes are importable from the orchestrata_llm package top-level... |
orchestrata_ultimate/llm/exceptions LLMClientError L7 |
none |