### Create: a WAI app described, built as a model writes it, and made a project by `wai create --from app.oui`

- **The widgets** ([`wai-app`](wai-app/), a library with no binary): a joule-ui registry of WAI
  widgets, `App`, `Room`, `WatchTogether`, `Show`, `Player`, `Chat`, `Poll`, `Participants`,
  `Receipts`, `EnergyMeter` and `Text`, each backed by the room client of `joule-moq-web`
  running in a frame of the page. Each kind of room accepts only the widgets its room service
  keeps: a watch room holds no `Chat` and no `Poll`, and a line that asks for one is refused
  `disallowed-child` at its line. An app holds one room; a poll has 2 to 32 options; a show's
  audience is 1 to 255; a watch room's source is a file within the app.
- **Create**: a page where a person describes an app and a model writes it in joule-ui's line
  language ([joule-ui SPEC](../joule-ui/SPEC.md) §11), which the page parses as it streams and
  renders widget by widget, every widget validated against the registry. The page calls no
  model of its own and holds no key: the visitor's own model (its address and their key,
  called from the page alone), their coding agent (`wai mcp --toolset app`, whose bridge on
  127.0.0.1 the page reads with a pairing code), or a recorded stream. Every action on the page
  is sealed into a hash-chained log the page signs with its own key and verifies
  (joule-ui-interaction; the figures are estimates, labelled `Estimator`: a page has no meter).
  Export hands over the program, `app.oui`, and the command that makes it a project.
- **`wai create <dir> --from app.oui`** (`app.export`; the feature `app`): an ordinary WAI
  project, the same kind `wai create --template` writes: its `wai.json`, written by the one
  writer every project file has, names the program (`app`) and the room `wai dev` runs for it
  (`dev.mode` `room`, `watch` or `show`, a watch room's file, a show's `audience`); beside it
  the program in its canonical form, the page and its runtime under `vendor/` (each file
  checked against the runtime's listing), a README and an AGENTS.md. No key is in it.
  **`wai app guide`** and **`wai app check`** (`app.guide`, `app.check`): the guide a model
  writes against, and the app, the room its project file names and its runtime checked.
  **`wai mcp --toolset app`**: `app_guide`, `app_check`, `app_stream` (into the person's open
  Create page through the bridge) and `app_export`.
- **Every project `wai create` writes carries its licence**, Apache-2.0, as `LICENSE`, and every
  example's README says so.
- **`wai dev --show [--audience N]`** (or `"mode": "show"` in `wai.json`): a room with
  co-performance, its relay holding the floor to the room's clock. `wai dev`'s front never
  serves a path with a segment that starts with a dot, so a project's `.wai/`, where its room's
  keys are, stays off the origin.

