Skip to content

§2 Data Model

This chapter defines the protocol data model for version 0.1.0.

Graph

A document root with metadata, defaults, and ordered nodes.

PropertyTypeRequiredNotes
$schemastring?NoSchema identifier URI.
fireside-versionVersions?NoProtocol version ("0.1.0").
titlestring?NoHuman-readable graph title.
authorstring?NoAuthor metadata.
datestring?NoDate metadata.
descriptionstring?NoSummary metadata.
versionstring?NoDocument version metadata.
tagsstring[]?NoClassification tags.
themestring?NoTheme hint for engines.
fontstring?NoFont hint for engines.
defaultsNodeDefaults?NoGlobal defaults for nodes.
extensionsExtensionDeclaration[]?NoDeclared extension capabilities.
nodesNode[]YesminItems: 1. Entry point is index 0.

Node

A graph vertex containing renderable content and traversal hints.

PropertyTypeRequiredNotes
idNodeId?NoMust be unique when present.
titlestring?NoHuman-readable node title.
tagsstring[]?NoNode-level categorization tags.
durationstring?NoDuration hint (ISO 8601 recommended).
layoutLayout?NoNode layout hint.
transitionTransition?NoNode transition hint.
speaker-notesstring?NoPresenter-only notes.
traversalTraversal?NoTraversal overrides.
contentContentBlock[]YesRenderable blocks for this node.

ContentBlock Union

Conforming engines MUST support seven core block kinds:

  • heading
  • text
  • code
  • list
  • image
  • divider
  • container

ContainerBlock

container composes nested blocks.

PropertyTypeRequired
kind"container"Yes
childrenContentBlock[]Yes (minItems: 1)
layoutstring?No

ExtensionBlock

Extensions use explicit typed blocks.

PropertyTypeRequired
kind"extension"Yes
typestringYes
fallbackContentBlock?No
publisherstring?No
schema-versionstring?No
...Record<unknown>No

Traversal Types

Traversal defines optional overrides:

  • next: explicit next target
  • after: post-return target override
  • branch-point: branch prompt with options

BranchOption.target values MUST resolve to existing node IDs.

Layout Enum

default, center, split-horizontal, split-vertical, fullscreen, align-left, align-right, focus-code, agenda, compare, image-left, image-right.

Transition Enum

none, fade, slide-left, slide-right, slide-up, slide-down, dissolve, matrix.