# Stem: Three layers

## Claim

**L0 recipe** (user job) → **L1 surface** (lifetime + exchange + dual-lock) →
**L2 host** (who embeds or refuses). Same visual shape does not imply same L1.

## Reconstruct

- Pick with `docs/agent/pick-a-surface.md` and registry `recipe` / `layer`.
- Combobox = form single-select; grid cell select = host-local primitive today.

## Not this

- Mode forests that switch commit path on one Hyperpart.
- Merging L1s because they look like dropdowns.

## Expressions

- `docs/decisions/0002-three-layers.md`
- `CONSUMER_MAP.md` › By recipe
- Registry `_RECIPE_SEED`
