# Experience and frontends

One models product experience independently of a renderer, UI framework,
device, or delivery target.

## Experience owns product meaning

An Experience can define:

- places and navigation intent;
- user intents and operation bindings;
- projections and canonical interaction state;
- edit, validation, and conflict contracts;
- accessibility and localization obligations;
- presentation and performance budgets;
- offline, live-data, and synchronization behavior.

A React tree, DOM node, SwiftUI view, terminal widget, or native screen is a
realization, not the semantic owner.

## Target-qualified roots

Browser clients, frontend servers, gateways, workers, desktop shells, native
apps, independently delivered modules, and protected debug artifacts are
separate roots.

Each root receives only its reachable schemas, codecs, artifacts, capabilities,
origins, and permissions. Server secrets cannot leak into a client because the
workspace contains both.

## Framework adapters remain honest

When One owns routes and interactions, an adapter can materialize framework
files and clients from the Experience contract.

When an existing framework owns its internal route and render tree, One imports
an explicit external surface contract with declared routes, calls, streams,
artifacts, budgets, authority, and losses. It does not pretend the framework
was generated by One.

## Client authority stays narrow

Hidden UI is not authorization. A browser, device, worker, or renderer receives
only planned capabilities. Direct database, secret, or infrastructure access
requires a contract and an explicitly selected realization.

## Live and offline behavior is semantic

Snapshot, cursor, ordering, replay, gap handling, tombstones, resumption,
authorization renewal, local replicas, outboxes, and conflict behavior are
declared before choosing a transport or framework.

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