# derived shape

`derived/shape` is the non-canonical shape layer rebuilt from canonical + derived extraction inputs.

Purpose:

- hold deterministic payloads that match stable UI contracts
- separate tidy distillation from UI-ready shape construction
- keep runtime app state outside the repository data layer

Layer order:

- `canonical`: source-of-truth facts
- `derived/extraction`: tidy distillation for stable reuse
- `derived/shape`: UI-facing shape payloads
- `public`: publication ledger, public keys, and external delivery control

Rules:

- `shape` may depend on `derived/extraction` or other stable non-canonical routing inputs
- `shape` must not redefine canonical truth
- `shape` may include timeline slots, display order, selector routing, and graph/page contracts
- `shape` must stay deterministic and rebuildable
- temporary UI state such as selected scope, open tab, hover, or local cache does not belong here

Current compatibility policy:

- the repo still materializes shape payloads under `the published presentation compatibility namespace`
- read `presentation/` as the compatibility/public mirror of this layer
- new shape families should be designed against the `derived/shape` model even if their current physical output path stays under `presentation/`

Subdirectories:

- `graph/`: graph-ready view payloads
- `indexes/`: routing/search selector payloads
- `pages/`: page-ready bundles and summaries
