demo.config.json is listed in docs/schema.md in the repo.
That file is generated from the same schema the player validates with, and CI fails if it drifts. It covers the demo itself (id, title, theme, chrome, chapters), both kinds of step (content and cover), every annotation type, every cover widget, and the button actions, each with its type, whether it is required, and its default. It lives in the repo rather than here so that it always matches the code.
demo.config.json reference
Every field, generated from the schema.
Validate as you type
Point your text editor at the published JSON Schema for autocompletion and inline validation:init writes this line into the demo it scaffolds. A version-pinned copy lives at:
Validate from the command line
validate checks every demo against the schema and confirms that each referenced file exists. See validate.

