Skip to content

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_match branch must rejoin the flow. Reply chips can carry a tag that forks subsequent items; each branch is an inner items[] 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 inner items[] starts with a coach (received_bubble) message. See the coach spec's progressive-reveal requirements.
  • Reference cards. session_card / sound_card in reference form resolve their display data from the catalog at compose time. The exact JSONB contract is pinned in naluma-app/openspec/specs/content-api/spec.md → "Coach items JSONB schema".

Sessions

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.