Verified on main today.
Evidence
Two independent adapter layers ship in the same wheel:
src/orchestrator/models/providers/ src/orchestrator/integrations/
base.py anthropic_model.py
anthropic_provider.py google_model.py
openai_model.py
huggingface_model.py
lazy_huggingface_model.py
ollama_model.py
lazy_ollama_model.py
class AnthropicModel is defined twice — models/anthropic_model.py:24 and integrations/anthropic_model.py:27.
Why this matters now
This is the root cause of a user-visible packaging inconsistency: pyproject.toml advertises openai and google extras, but models/providers/ contains only anthropic_provider.py. The extras point at the integrations/ layer, which was never included in the Anthropic-only direction of #426. So the declared provider surface and the supported provider surface disagree.
It is also the likely source of the duplicated provider-registration warnings on startup.
Decision required
The ADR (docs/adr/0001-product-contract.md) names Anthropic as the only supported live provider. Two options:
- Adopt
models/providers/ as canonical, delete the integrations/ adapters, and drop the openai/google extras. Honest and smallest, but removes non-Anthropic support that partly exists today.
- Keep
integrations/ for breadth, make models/providers/ a thin façade over it, and restore real openai/google provider implementations so the extras are not misleading.
Recommend (1), consistent with the ADR — but this is a product decision tied to #426 and should be resolved alongside it.
Acceptance criteria
- Exactly one
AnthropicModel class in the package
- Every extra in
pyproject.toml corresponds to code that actually exists
import orchestrator; orchestrator.init_models() emits no duplicate-provider warnings
Verified on
maintoday.Evidence
Two independent adapter layers ship in the same wheel:
class AnthropicModelis defined twice —models/anthropic_model.py:24andintegrations/anthropic_model.py:27.Why this matters now
This is the root cause of a user-visible packaging inconsistency:
pyproject.tomladvertisesopenaiandgoogleextras, butmodels/providers/contains onlyanthropic_provider.py. The extras point at theintegrations/layer, which was never included in the Anthropic-only direction of #426. So the declared provider surface and the supported provider surface disagree.It is also the likely source of the duplicated provider-registration warnings on startup.
Decision required
The ADR (
docs/adr/0001-product-contract.md) names Anthropic as the only supported live provider. Two options:models/providers/as canonical, delete theintegrations/adapters, and drop theopenai/googleextras. Honest and smallest, but removes non-Anthropic support that partly exists today.integrations/for breadth, makemodels/providers/a thin façade over it, and restore realopenai/googleprovider implementations so the extras are not misleading.Recommend (1), consistent with the ADR — but this is a product decision tied to #426 and should be resolved alongside it.
Acceptance criteria
AnthropicModelclass in the packagepyproject.tomlcorresponds to code that actually existsimport orchestrator; orchestrator.init_models()emits no duplicate-provider warnings