loom.ai.errors¶
Agent compilation and run-time error codes.
Two disjoint catalogues, mirroring loom.streaming.compiler._errors:
AgentErrorCodeCompile-time failures. A broken artifact or an unresolvable deployment produces one or more
AgentCompilationIssue, andAgentCompilationErroraggregates them so a single run reports every problem at once.AgentRunErrorCodeExecution outcomes. Each code belongs to an
AgentRunErrorClassand the retry policy reads the class, never the message (FR-028).
Every code has a dedicated factory function so call-sites stay intention-revealing and free of string formatting.
- Issue factories
The factories below share one contract, stated here once rather than repeated on each of them. Every factory returns a single
AgentCompilationIssuecarrying its ownAgentErrorCode.componentnames the artifact component or configuration path the issue is attributed to —"market","ai.mcp_servers.data". Every other parameter is interpolated into the human-readablemessageand is never read for control flow: callers branch on the code, never on the text. Messages never carry secret material — in credential-related issues the offending value is deliberately omitted.
Module Attributes
the deps bundle carries no invoker. |
|
Client text of every |
|
Client text of every |
Functions
|
An |
|
A remote agent's card cannot be retrieved. |
|
Report an |
A2A exposure was enabled without naming a single agent. |
|
|
A remote agent URL is malformed, not |
|
A use case's |
|
A use case's |
|
Two artifacts in the same application declare the same agent name. |
|
The agent name does not satisfy the published name pattern. |
Both artifact sources declare agents; there is no implicit precedence. |
|
The |
|
|
An unauthenticated agent holds a data or remote capability. |
An authentication exclusion covers an agent or A2A invocation path. |
|
|
A capability entry grants nothing at all. |
|
The configured engine does not serve this capability kind. |
|
The loader cannot build the use case's Input from the run context. |
|
Agents declare a conversation loader but the deployment has no usable use-case invoker. |
|
The loader's use case is also granted to the model as a capability. |
|
The conversation loader names a use-case key absent from the registry. |
|
An agent opted into HTTP exposure without naming its authentication. |
|
An engine announces a handshake version this release cannot speak. |
|
Two distributions claim the same engine entry-point name. |
|
No installed entry point provides the requested engine. |
|
Wrap a bare string as an |
|
A model-role binding lacks a setting its provider requires. |
|
An authored instruction block violates a compile-time rule. |
|
Return whether a run-time failure may be retried by the caller. |
|
The nesting bound is below the one entry every top-level run already spends. |
|
A server sets both |
|
A registered auth strategy could not be constructed, or is unusable. |
|
A named auth strategy resolves to no entry point in |
|
One MCP server name resolves to two different connections in one worker. |
|
Credentials were written into the artifact instead of being referenced. |
|
A resolved |
|
A use case's |
|
An |
|
An MCP server is not reachable at start-up. |
|
An MCP server declares fields that its |
|
An MCP server URL is malformed, not |
|
The agent's model role is not present in |
|
The same provider tool is granted twice to one agent. |
|
The model bound to this role cannot run the requested provider tool. |
|
The hook cannot build the use case's Input from the run context and output. |
|
Agents declare an output hook but the deployment has no usable use-case invoker. |
|
The hook's use case is also granted to the model as a capability. |
|
The output hook names a use-case key absent from the registry. |
|
The |
|
A model-role binding names an |
|
The declared output schema is not a valid JSON Schema object. |
|
The |
|
The output reference resolves to a type the engine cannot use. |
|
A policy value falls outside its documented range. |
|
A provider SDK is missing; the message names the extra to install. |
|
A provider setting (credentials, region, endpoint) is absent. |
|
The provider is not one this release knows how to bind. |
|
A |
|
A |
|
A |
|
A |
|
A |
|
The start-up tolerance of remote clients names no known mode. |
|
Return the failure class of a run-time error code. |
|
A skill library resolves outside the directory it is anchored to. |
|
A skill library does not resolve to a readable library directory. |
|
Two libraries granted to one agent expose the same skill name. |
|
A bare skill library was named with no |
|
The artifact is not decodable as the version it declares. |
|
An unrecognised field appeared in the artifact; it is never ignored. |
|
The artifact's version is still accepted but has been superseded. |
|
An artifact declares no |
|
The declared spec version is not understood by this release. |
|
A |
|
A |
|
The connection's roles cannot be bound to a caller identity. |
|
A |
|
Live configuration contradicts the plan's read-only assumption. |
|
A |
|
Both |
|
The declared state schema is not a valid JSON Schema object. |
|
A stateful artifact is exposed over a run surface that carries no state. |
|
The |
|
The state reference resolves to a symbol no schema can be derived from. |
|
A templated instruction block fails to compile against its declared state. |
|
A block declares |
|
An include/exclude filter excludes every tool the target exposes. |
A use case's |
|
|
A granted use-case key is absent from the use-case registry. |
Classes
|
One structured agent compilation failure. |
|
Enumeration of all agent compile-time failure codes. |
|
Class of a run-time failure; the retry policy reads this, not the message. |
|
Enumeration of all agent run-time failure codes. |
Exceptions
|
Raised when one or more agent artifacts fail to compile. |
|
A run failed with a stable, machine-readable code. |
- class loom.ai.errors.AgentErrorCode(value)[source]¶
Bases:
StrEnumEnumeration of all agent compile-time failure codes.
- class loom.ai.errors.AgentCompilationIssue(*, code, message, component='', field=None)[source]¶
Bases:
LoomFrozenStructOne structured agent compilation failure.
- Parameters:
code (AgentErrorCode) – Machine-readable
AgentErrorCode.message (str) – Human-readable description; the aggregated exception text is built from these messages.
component (str) – Artifact, agent or config section the issue points at (for example
"agents/triage.agent.yaml").field (str | None) – Optional field path involved (for example
"capabilities[0].url").
- loom.ai.errors.from_message(message)[source]¶
Wrap a bare string as an
AgentErrorCode.UNSPECIFIEDissue.- Parameters:
message (str)
- Return type:
- exception loom.ai.errors.AgentCompilationError(issues)[source]¶
Bases:
ExceptionRaised when one or more agent artifacts fail to compile.
Aggregates every
AgentCompilationIssuefound in a compilation run so a generator sees the whole picture instead of one failure at a time.- issues¶
Structured issues, one per failure.
- Parameters:
issues (tuple[AgentCompilationIssue, ...]) – Issues (or bare message strings) collected by the compiler. Strings are normalised through
from_message().- Return type:
None
- loom.ai.errors.spec_version_missing(component)[source]¶
An artifact declares no
spec_version, so it cannot be routed.- Parameters:
component (str)
- Return type:
- loom.ai.errors.spec_version_unsupported(component, found, supported)[source]¶
The declared spec version is not understood by this release.
- Parameters:
- Return type:
- loom.ai.errors.spec_unknown_field(component, field)[source]¶
An unrecognised field appeared in the artifact; it is never ignored.
- Parameters:
- Return type:
- loom.ai.errors.spec_malformed(component, reason, field=None)[source]¶
The artifact is not decodable as the version it declares.
- Parameters:
- Return type:
- loom.ai.errors.agent_name_invalid(component, reason)[source]¶
The agent name does not satisfy the published name pattern.
- Parameters:
- Return type:
- loom.ai.errors.agent_name_duplicate(name, sources)[source]¶
Two artifacts in the same application declare the same agent name.
- Parameters:
- Return type:
- loom.ai.errors.output_schema_invalid(component, reason)[source]¶
The declared output schema is not a valid JSON Schema object.
- Parameters:
- Return type:
- loom.ai.errors.output_type_ref_unresolvable(component, ref)[source]¶
The
module:Symboloutput reference cannot be imported.- Parameters:
- Return type:
- loom.ai.errors.output_type_ref_unsupported(component, ref, reason)[source]¶
The output reference resolves to a type the engine cannot use.
- Parameters:
- Return type:
- loom.ai.errors.output_check_unresolvable(component, ref)[source]¶
The
module:symboloutput check reference cannot be imported.- Parameters:
- Return type:
- loom.ai.errors.on_output_usecase_unknown(component, key)[source]¶
The output hook names a use-case key absent from the registry.
- Parameters:
- Return type:
- loom.ai.errors.on_output_input_unsatisfied(component, key, reason)[source]¶
The hook cannot build the use case’s Input from the run context and output.
- Parameters:
- Return type:
- loom.ai.errors.on_output_usecase_also_granted(component, key)[source]¶
The hook’s use case is also granted to the model as a capability.
- Parameters:
- Return type:
- loom.ai.errors.INVOKER_MISSING_REASON: Final[str] = 'no use-case invoker is configured'¶
the deps bundle carries no invoker.
- Type:
Default
reasonof the invoker-missing issues
- loom.ai.errors.on_output_invoker_missing(agents, *, reason=INVOKER_MISSING_REASON)[source]¶
Agents declare an output hook but the deployment has no usable use-case invoker.
- Parameters:
- Return type:
- loom.ai.errors.conversation_usecase_unknown(component, key)[source]¶
The conversation loader names a use-case key absent from the registry.
- Parameters:
- Return type:
- loom.ai.errors.conversation_input_unsatisfied(component, key, reason)[source]¶
The loader cannot build the use case’s Input from the run context.
- Parameters:
- Return type:
- loom.ai.errors.conversation_usecase_also_granted(component, key)[source]¶
The loader’s use case is also granted to the model as a capability.
- Parameters:
- Return type:
- loom.ai.errors.conversation_invoker_missing(agents, *, reason=INVOKER_MISSING_REASON)[source]¶
Agents declare a conversation loader but the deployment has no usable use-case invoker.
- Parameters:
- Return type:
- loom.ai.errors.state_declaration_conflict(component)[source]¶
Both
deps_typeanddeps_schemaare declared; only one may be.- Parameters:
component (str)
- Return type:
- loom.ai.errors.state_type_ref_unresolvable(component, ref)[source]¶
The
module:Symbolstate reference cannot be imported.- Parameters:
- Return type:
- loom.ai.errors.state_type_ref_unsupported(component, ref, reason)[source]¶
The state reference resolves to a symbol no schema can be derived from.
- Parameters:
- Return type:
- loom.ai.errors.state_schema_invalid(component, reason)[source]¶
The declared state schema is not a valid JSON Schema object.
- Parameters:
- Return type:
- loom.ai.errors.state_surface_unsupported(component, surface)[source]¶
A stateful artifact is exposed over a run surface that carries no state.
- Parameters:
- Return type:
- loom.ai.errors.instruction_block_invalid(component, reason)[source]¶
An authored instruction block violates a compile-time rule.
- Parameters:
- Return type:
- loom.ai.errors.template_compilation_failed(component, block, reason)[source]¶
A templated instruction block fails to compile against its declared state.
- Parameters:
component (str) – Artifact the block belongs to.
block (str) – The block’s name, or its position when it has none.
reason (str) – The template checker’s own message, interpolated verbatim. A compilation error can carry a fragment of the source template, so redacting it — if the caller needs that — is the caller’s responsibility, not this factory’s.
- Return type:
- loom.ai.errors.template_extra_missing(component, block, extra)[source]¶
A block declares
template:while the templating extra is not installed.- Parameters:
- Return type:
- loom.ai.errors.capability_kind_unsupported(component, kind, engine)[source]¶
The configured engine does not serve this capability kind.
- Parameters:
- Return type:
- loom.ai.errors.native_tool_unsupported(component, *, tool, role, provider, model, supported)[source]¶
The model bound to this role cannot run the requested provider tool.
- loom.ai.errors.native_tool_duplicate(component, tool)[source]¶
The same provider tool is granted twice to one agent.
- Parameters:
- Return type:
- loom.ai.errors.capability_empty(component, kind)[source]¶
A capability entry grants nothing at all.
- Parameters:
- Return type:
- loom.ai.errors.usecase_key_unknown(component, key)[source]¶
A granted use-case key is absent from the use-case registry.
- Parameters:
- Return type:
- loom.ai.errors.sql_connection_unknown(component, connection)[source]¶
A
sqlcapability names a connection that is not configured.- Parameters:
- Return type:
- loom.ai.errors.sql_connection_not_readonly(component, connection)[source]¶
A
sqlcapability names a connection that permits writes.- Parameters:
- Return type:
- loom.ai.errors.sql_config_missing(component)[source]¶
A
sqlcapability was declared with no data-layer config to validate.- Parameters:
component (str)
- Return type:
- loom.ai.errors.sql_connection_roles_unbound(component, connection)[source]¶
The connection’s roles cannot be bound to a caller identity.
- Parameters:
- Return type:
- loom.ai.errors.sql_result_bound_missing(component, connection)[source]¶
A
sqlcapability declares no result bounds.- Parameters:
- Return type:
- loom.ai.errors.mcp_server_unknown(component, server)[source]¶
An
mcpcapability names a server that is not configured.- Parameters:
- Return type:
- loom.ai.errors.mcp_url_invalid(component, url, reason)[source]¶
An MCP server URL is malformed, not
https://, or carries credentials.- Parameters:
- Return type:
- loom.ai.errors.mcp_credentials_inline(component, field)[source]¶
Credentials were written into the artifact instead of being referenced.
- Parameters:
- Return type:
- loom.ai.errors.mcp_headers_ref_invalid(component)[source]¶
A resolved
headers_refpayload is not oneName=valueheader pair.- Parameters:
component (str)
- Return type:
- loom.ai.errors.mcp_auth_conflict(component)[source]¶
A server sets both
headers_refandauth, two credentials for one connection.- Parameters:
component (str)
- Return type:
- loom.ai.errors.mcp_transport_invalid(component, reason, *, field='transport')[source]¶
An MCP server declares fields that its
transportdoes not accept, or an unknown one.- Parameters:
- Return type:
- loom.ai.errors.mcp_auth_strategy_unknown(component, kind, available)[source]¶
A named auth strategy resolves to no entry point in
loom.ai.remote_auth.- Parameters:
- Return type:
- loom.ai.errors.mcp_auth_strategy_invalid(kind, reason)[source]¶
A registered auth strategy could not be constructed, or is unusable.
- Parameters:
- Return type:
- loom.ai.errors.skills_library_invalid(component, library, reason)[source]¶
A skill library does not resolve to a readable library directory.
- Parameters:
- Return type:
- loom.ai.errors.skills_library_escapes(component, library)[source]¶
A skill library resolves outside the directory it is anchored to.
- Parameters:
- Return type:
- loom.ai.errors.skills_name_collision(component, skill, first_library, second_library)[source]¶
Two libraries granted to one agent expose the same skill name.
- Parameters:
- Return type:
- loom.ai.errors.skills_root_missing(component)[source]¶
A bare skill library was named with no
skills_rootconfigured.- Parameters:
component (str)
- Return type:
- loom.ai.errors.python_factory_unresolvable(component, factory, reason)[source]¶
A
pythoncapability factory cannot be imported.- Parameters:
- Return type:
- loom.ai.errors.python_factory_not_callable(component, factory)[source]¶
A
pythoncapability factory does not satisfyToolsetFactory.- Parameters:
- Return type:
- loom.ai.errors.python_factory_params_rejected(component, factory, reason)[source]¶
A
pythoncapability’sparamsdo not bind to the factory’s signature.- Parameters:
- Return type:
- loom.ai.errors.python_remote_not_granted(component, factory, server)[source]¶
A
pythonfactory asked for an MCP server its agent was not granted.- Parameters:
- Return type:
- loom.ai.errors.python_factory_failed(component, factory, error)[source]¶
A
pythonfactory raised while building its toolset at start-up.Only the exception class is named: the message could carry a
paramsvalue or anything else the factory touched.- Parameters:
- Return type:
- loom.ai.errors.a2a_agent_unknown(component, agent)[source]¶
An
a2acapability names a remote agent that is not configured.- Parameters:
- Return type:
- loom.ai.errors.a2a_url_invalid(component, url, reason)[source]¶
A remote agent URL is malformed, not
https://, or carries credentials.- Parameters:
- Return type:
- loom.ai.errors.anonymous_with_data_capability(component, kind)[source]¶
An unauthenticated agent holds a data or remote capability.
- Parameters:
- Return type:
- loom.ai.errors.model_role_unbound(component, role)[source]¶
The agent’s model role is not present in
ai.models.- Parameters:
- Return type:
- loom.ai.errors.inference_target_incomplete(role, setting)[source]¶
A model-role binding lacks a setting its provider requires.
- Parameters:
- Return type:
- loom.ai.errors.output_mode_unknown(role, value, valid)[source]¶
A model-role binding names an
output_modeloom does not offer.The valid set is a parameter, as in every sibling factory that names one: it keeps this module free of domain imports.
- Parameters:
- Return type:
- loom.ai.errors.policy_out_of_range(component, policy, value, minimum, maximum)[source]¶
A policy value falls outside its documented range.
value,minimumandmaximumacceptDecimalas well asint: every policy value is an integer count exceptmax_usd, which is aDecimal(FR-043), and the two share this one factory rather than each carrying its own near-identical message.
- loom.ai.errors.engine_not_found(name, available)[source]¶
No installed entry point provides the requested engine.
- Parameters:
- Return type:
- loom.ai.errors.engine_duplicate(name, distributions)[source]¶
Two distributions claim the same engine entry-point name.
- Parameters:
- Return type:
- loom.ai.errors.engine_api_mismatch(name, found, supported)[source]¶
An engine announces a handshake version this release cannot speak.
- Parameters:
- Return type:
- loom.ai.errors.provider_not_installed(provider, extra)[source]¶
A provider SDK is missing; the message names the extra to install.
- Parameters:
- Return type:
- loom.ai.errors.provider_unknown(provider, supported)[source]¶
The provider is not one this release knows how to bind.
Distinct from
PROVIDER_NOT_INSTALLED: there is no extra to install, because no such provider exists in this release.- Parameters:
- Return type:
- loom.ai.errors.provider_setting_missing(provider, setting)[source]¶
A provider setting (credentials, region, endpoint) is absent.
- Parameters:
- Return type:
- loom.ai.errors.mcp_connection_conflict(server, agents)[source]¶
One MCP server name resolves to two different connections in one worker.
- Parameters:
- Return type:
- loom.ai.errors.mcp_server_unreachable(server, reason)[source]¶
An MCP server is not reachable at start-up.
- Parameters:
- Return type:
- loom.ai.errors.tool_filter_matches_nothing(component, target)[source]¶
An include/exclude filter excludes every tool the target exposes.
- Parameters:
- Return type:
- loom.ai.errors.sql_readonly_drift(connection)[source]¶
Live configuration contradicts the plan’s read-only assumption.
- Parameters:
connection (str)
- Return type:
- loom.ai.errors.endpoint_auth_missing(component)[source]¶
An agent opted into HTTP exposure without naming its authentication.
- Parameters:
component (str)
- Return type:
- loom.ai.errors.a2a_base_url_invalid(url, reason)[source]¶
Report an
ai.a2a.base_urlthat is unsafe to publish.- Parameters:
- Returns:
The issue, coded
AgentErrorCode.A2A_BASE_URL_INVALID.- Return type:
- loom.ai.errors.a2a_expose_empty()[source]¶
A2A exposure was enabled without naming a single agent.
- Return type:
- loom.ai.errors.auth_exclusion_overlaps_agents(paths)[source]¶
An authentication exclusion covers an agent or A2A invocation path.
- Parameters:
- Return type:
- loom.ai.errors.a2a_agent_unreachable(agent, reason)[source]¶
A remote agent’s card cannot be retrieved.
- Parameters:
- Return type:
- loom.ai.errors.agent_specs_conflict()[source]¶
Both artifact sources declare agents; there is no implicit precedence.
- Return type:
- loom.ai.errors.agent_specs_missing()[source]¶
The
ai:section is configured but no artifact source declares agents.- Return type:
- loom.ai.errors.remote_clients_unknown(value, valid)[source]¶
The start-up tolerance of remote clients names no known mode.
- Parameters:
- Return type:
- loom.ai.errors.max_agent_depth_invalid(value)[source]¶
The nesting bound is below the one entry every top-level run already spends.
- Parameters:
value (int) – The rejected value of
ai.max_agent_depth.- Return type:
- loom.ai.errors.spec_version_deprecated(component, found, latest)[source]¶
The artifact’s version is still accepted but has been superseded.
- Parameters:
- Return type:
- loom.ai.errors.agent_marker_unknown(usecase, parameter, agent, available)[source]¶
A use case’s
Agent()marker names an agent no engine compiled.- Parameters:
- Return type:
- loom.ai.errors.mcp_marker_unknown(usecase, parameter, server, available)[source]¶
A use case’s
Mcp()marker names a server no engine compiled.The existing
mcp_server_unknown()cannot serve this condition: it carries neither the parameter nor the available server names, both of which this message needs to point someone at the right signature.- Parameters:
- Return type:
- loom.ai.errors.use_case_tool_filter_matches_nothing(usecase, parameter, server)[source]¶
A use case’s
Mcp()includematches no tool the named server publishes.A standalone factory, not a variant selected inside
filter_issues: the use-case check runs over the marker’s own parameter, somethingfilter_issuesnever carries a name for. It reusesAgentErrorCode.TOOL_FILTER_MATCHES_NOTHINGrather than minting a new code — one condition, one code — and differs fromtool_filter_matches_nothing()in both message andfield: this one carriesparameters.{parameter}(via_AGENT_MARKER_FIELD_TEMPLATE) instead ofcapabilities.include. Thatfielddifference is what makes reusing the shared code safe: it is the only thing that lets a caller filtering onAgentErrorCode.TOOL_FILTER_MATCHES_NOTHINGtell an agent-artifact issue apart from a use-case-parameter one.- Parameters:
- Return type:
- loom.ai.errors.agent_marker_output_mismatch(usecase, parameter, agent, expected, declared)[source]¶
A use case’s
AgentHandleannotation disagrees with the named agent’s own declared output type.- Parameters:
usecase (str) – Registered key of the use case declaring the marker.
parameter (str) – Name of the
executeparameter carrying the marker.agent (str) – Agent name the marker declared.
expected (str) – Output type named by the parameter’s
AgentHandle[...]annotation.declared (str) – Output type the named agent actually declares.
- Return type:
- class loom.ai.errors.AgentRunErrorClass(value)[source]¶
Bases:
StrEnumClass of a run-time failure; the retry policy reads this, not the message.
- class loom.ai.errors.AgentRunErrorCode(value)[source]¶
Bases:
StrEnumEnumeration of all agent run-time failure codes.
- exception loom.ai.errors.AgentRunError(code, message, *, interaction_id=None, usage=None)[source]¶
Bases:
ExceptionA run failed with a stable, machine-readable code.
Lives with
AgentRunErrorCoderather than with the runtime that raises it: the engine adapters classify and re-raise it, and importing the whole live runtime — its exit stack, its shared sessions, its SQL configuration — to reach one exception class would point the dependency arrow at the concretion instead of at the contract.- Parameters:
code (AgentRunErrorCode) – Run-time failure code; the retry policy reads its class.
message (str) – Human-readable description, safe to return to the caller.
interaction_id (str | None) – Identifier of the admitted run, when the failure happened after admission;
Nonefor pre-admission failures.usage (AgentUsage | None) – What the failed run had already spent, when the engine knew it;
Nonewhen nothing was spent or nothing was measurable.
- Return type:
None
- code¶
The failure code carried by this error.
- interaction_id¶
The run this error belongs to, or
None.
- usage¶
The partial accounting of the failed run, or
None.
Example:
raise AgentRunError(AgentRunErrorCode.RUN_TIMEOUT, "the run took too long")
- loom.ai.errors.CONVERSATION_LOAD_FAILED_MESSAGE: Final[str] = 'the conversation could not be loaded; the detail is recorded server-side'¶
Client text of every
CONVERSATION_LOAD_FAILEDerror (D8).Defined once here because both the runtime loader and an engine’s history decoder raise the code; the loader’s own detail is logged, never returned.
- loom.ai.errors.CONVERSATION_LOAD_TIMEOUT_MESSAGE: Final[str] = 'the conversation loader exceeded its time limit'¶
Client text of every
CONVERSATION_LOAD_TIMEOUTerror (FR-063).
- loom.ai.errors.run_error_class(code)[source]¶
Return the failure class of a run-time error code.
The mapping is total: every member of
AgentRunErrorCodehas an entry, so a new code without a class fails immediately instead of silently defaulting to a retriable class.- Parameters:
code (AgentRunErrorCode) – Run-time error code to classify.
- Returns:
The class the retry policy must read.
- Raises:
KeyError – If the code has no registered class.
- Return type:
- loom.ai.errors.is_retriable(code)[source]¶
Return whether a run-time failure may be retried by the caller.
Only
AgentRunErrorClass.INFRASTRUCTUREfailures are retriable, with one explicit exception:COST_NOT_MEASURABLEstaysINFRASTRUCTUREbut is never retriable, because the provider call it reports on has already returned and already been billed.- Parameters:
code (AgentRunErrorCode) – Run-time error code to test.
- Returns:
Truewhen the code’s class isINFRASTRUCTURE;Falsefor every other class, and forCOST_NOT_MEASURABLEdespite itsINFRASTRUCTUREclass.- Return type: