# Providers and adapters

A provider realizes an owned contract. An adapter maps a foreign contract at
the narrowest useful boundary. Both remain removable and explicit.

## Contract first

Application and semantic contracts never depend on a concrete provider.
Providers declare:

- exact contract and implementation identities;
- supported capabilities and target envelopes;
- lifecycle, ownership, topology, and failure behavior;
- configuration, secrets, dependencies, costs, and limits;
- conformance and provenance evidence.

Workspace or registry presence makes a package resolvable only. It does not
select, trust, include, or authorize it.

## Provider selection is physical

Planning selects an exact provider profile and topology. Build materializes the
exact implementation or records an explicit external binding. Deployment
places it and binds approved grants.

A provider cannot self-select through runtime registration, reflection,
linker inventory, package features, or a source section.

## Adapters declare losses

An adapter states source and destination contracts, call direction, lifecycle
and resource ownership, capabilities, faults, conversions, semantic losses,
cost, and conformance.

Use the smallest boundary that removes more maintenance than the adapter adds.
An external framework that owns its control loop should not be disguised as a
library.

## Ecosystem packages are supply-chain objects

Organizations can distribute:

- semantic-domain packages;
- provider and adapter packages;
- source-language parser, analyzer, and formatter packages;
- exact profile, conformance, provenance, and publisher trust evidence.

Providers owns catalog and publisher/package trust. It does not own another
language's grammar, another domain's meaning, tool execution, or sandbox
receipts.

## External models stay bounded

Substrait can adapt relational query plans. WIT can project Component Model
ABIs. Smithy can import or export service models. None becomes the canonical
System IDL, general cross-language generator, or semantic authority.

Canonical owner:
[Providers](https://github.com/muijf/one/blob/main/systems/providers/AGENTS.md).
