# Interoperability

One connects languages, runtimes, providers, and external systems through exact
contracts and explicit boundaries.

## Unify meaning, not internals

Languages retain their own syntax, type system, package model, ownership,
exceptions, concurrency, and runtime. One provides shared semantic identities
for schemas, operations, faults, effects, capabilities, and evidence.

Two implementations can interoperate only when an exact projection or mapping
disposes every relevant semantic obligation.

## Choose the narrowest boundary

| Boundary | Typical use |
| --- | --- |
| Static | Same language/toolchain, monomorphized local composition |
| Native ABI | Governed same-host integration with explicit ownership rules |
| Component Model | Isolated portable components through WIT projections |
| Process | Separate lifecycle and sandbox with an owned IPC contract |
| Remote | Independent failure domain through an explicit protocol |

Moving between boundaries changes failure, authority, serialization, cost, and
evidence. One does not claim location transparency.

## Generated projections are caches

OCS can produce Rust, native-One, TypeScript, Python, WIT, Protobuf, OpenAPI,
GraphQL, clients, servers, and documentation through exact projection
profiles.

Every projection includes fingerprints, source mapping, dependencies, runtime
support, and exhaustive mapping/loss dispositions. Generated output cannot
become a second semantic source by being edited.

## Imported models are proposals

An external Smithy, WIT, Protobuf, OpenAPI, Rust, or other model enters with an
exact parser/importer artifact, provenance, mappings, and unresolved-loss
diagnostics.

An owner acceptance step establishes one canonical authored source. Arbitrary
round-trip edits do not silently redefine the contract.

## Unsupported is a valid result

When a target cannot preserve a type, fault, effect, capability, or resource
contract, the first affected operation fails with a typed unsupported or
unsatisfied result. One does not guess or silently erase the obligation.

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