Composition & sequence rules¶
Per-field rules (what's required, what values are allowed) live in the
Content-block reference — generated from the
schemas. This page covers the composition rules: how blocks combine into a
valid conversation or session. These are owned by the app's behavioural specs
(in the naluma-app repo) and are linked here as the source of truth — read
the linked spec for the normative wording.
Coach conversations¶
- Terminator contract. Every authored conversation must end the way the app
expects (the closing CTA / terminator). See the Authored conversation
terminator contract requirement in
naluma-app/openspec/specs/coach/spec.md. - A
tag_matchbranch must rejoin the flow. Reply chips can carry a tag that forks subsequent items; each branch is an inneritems[]that continues the conversation. See Reply chips can carry a tag that forks subsequent items in the coach spec. items[]ordering. A conversation's items render in order with a typing prelude; a branch's inneritems[]starts with a coach (received_bubble) message. See the coach spec's progressive-reveal requirements.- Reference cards.
session_card/sound_cardin reference form resolve their display data from the catalog at compose time. The exact JSONB contract is pinned innaluma-app/openspec/specs/content-api/spec.md→ "Coach items JSONB schema".
Sessions¶
- Each session's structured
contentmust match itstemplate_type(the validator enforces this on save; the shape is the Content-block reference entry for that template). Behavioural detail:naluma-app/openspec/specs/sessions/spec.md.
Why link instead of copy
These rules change with the app. Restating them here would drift. The specs above are the single source of truth; this page is a signpost.