# Cyberart documentation — agent index

Generated from the same documentation manifest that renders the human site. Canonical JSON: /docs/agent/index.json. Per-feature JSON: /docs/agent/features/:slug.json. Ids, slugs, routes, and anchors are stable; display titles may change.

- Engine: @cyberart-io/engine 0.0.12
- Manifest schema: 1 · Agent surface schema: 2
- Source revision: cdbb9388980b61e901885b57e006eddae4e168fb
- Content hash: 443533f81a3bcac4bea709d794388786b96ea4f95149f05bfb7c14e12142f077
- Generated at: 2026-10-20T05:44:25.751Z

## Section kinds

- normative: Framework contract. Hosts and carts may rely on it for the compatible engine versions listed.
- tutorial: Explanation and guidance. Not a contract.
- example: Behaviour of one canonical example at its pinned commit. Not a framework contract.
- provenance: Versions, source paths, tests, and links. Use to pin or verify.

## Feature page sections

Every routed feature page (`/docs/features/<slug>`) uses these anchors in this order.

- #problem — What this solves [tutorial]: Name the problem the feature exists to solve.
- #when-to-use — When to use it [tutorial]: Say when this is the right tool, and when a related feature is a better fit.
- #conceptual-model — Conceptual model [tutorial]: Objects, states, and how they relate. Diagrams optional; names must match the API.
- #lifecycle — Lifecycle [normative]: Create / attach / run / snapshot / restore / destroy, including which events fire.
- #cart-vs-host — Cart versus host [normative]: What the cart may declare or emit versus what the host/runtime must provide. Do not blur the boundary.
- #contract — Minimal contract [normative]: Smallest API/configuration surface that a correct integration uses, with types and defaults.
- #failure — Failure and fallback [normative]: How the feature fails closed, what events/diagnostics look like, and what the host should do.
- #accessibility — Accessibility [normative]: Keyboard, focus, reduced motion, captions/non-audio alternatives, contrast, and anything the feature itself publishes (e.g. semantic regions).
- #example — Runnable example [example]: Link canonical example IDs from the manifest. Embed and exact source come from the lock; this section must not paste a drifting snippet.
- #expected-result — Expected result [example]: What a reader should see, hear, or be able to do after the example runs.
- #source — Source, tests, and version [provenance]: Links to implementationPath, tests, engine guide, and the pinned enginePackageVersion.
- #related — Related features [tutorial]: Prerequisites first, then relatedFeatureIds. Use manifest ids, not free text names.
- #advanced — Advanced composition [tutorial, optional]: Optional: combining this feature with runtime groups, compositor, bindings, or scenarios.
- #version — Version provenance [provenance]: Engine package version this page describes, when the API first appeared, and a warning if the live package.json has moved on.

## Features

### runtime

- Title: Runtime and carts
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/runtime · JSON: /docs/agent/features/runtime.json
- Purpose: Mount an AnimationCart into a host-owned DOM element, run the update/render loop, and expose pause, snapshot, events, and teardown.
- Package: @cyberart-io/engine · module ./canvas/cyberArtRuntime · surfaces browser
- Primary exports: createRuntime, HostChannel
- Prerequisites: (none)
- Related: random, keyboard, pointer, events, deterministic-mode, calculation-carts, snapshots
- Examples: create-runtime-canvas (artifact available, source restricted)
- Keywords: createRuntime, AnimationCart, mount, cart, HostChannel

### random

- Title: Seeded random
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/random · JSON: /docs/agent/features/random.json
- Purpose: Art Blocks / kautomata sfc32 Random plus token seed helpers so generative output follows the hash.
- Package: @cyberart-io/engine · module ./generative/random · surfaces browser
- Primary exports: Random, canonicalizeSeed, resolveRuntimeSeed
- Prerequisites: (none)
- Related: runtime, snapshots
- Examples: (none bound)
- Keywords: random, Random, canonicalizeSeed, resolveRuntimeSeed

### keyboard

- Title: Keyboard manager
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/keyboard · JSON: /docs/agent/features/keyboard.json
- Purpose: Cart-facing single-character key bindings with optional window capture and deterministic inject().
- Package: @cyberart-io/engine · module ./keyboardManager · surfaces browser
- Primary exports: KeyboardManager
- Prerequisites: (none)
- Related: pointer, midi, runtime, cart-state
- Examples: keyboard-inject (artifact available, source restricted)
- Keywords: keyboard, KeyboardManager

### pointer

- Title: Pointer manager
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/pointer · JSON: /docs/agent/features/pointer.json
- Purpose: Canvas pointer position, buttons, and click queue, with listen:false for deterministic inject.
- Package: @cyberart-io/engine · module ./pointerManager · surfaces browser
- Primary exports: PointerManager
- Prerequisites: (none)
- Related: keyboard, normalized-geometry, semantic-layers
- Examples: (none bound)
- Keywords: pointer, PointerManager

### midi

- Title: MIDI
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/midi · JSON: /docs/agent/features/midi.json
- Purpose: Host-owned MidiManager: note/CC/pitch in and out, inject/fake port, structured requestAccess.
- Package: @cyberart-io/engine · module ./midiManager · surfaces browser
- Primary exports: MidiManager, parseMidiBytes, encodeMidiMessage
- Prerequisites: (none)
- Related: keyboard, capability-manifest, audio
- Examples: (none bound)
- Keywords: midi, MidiManager, parseMidiBytes, encodeMidiMessage

### calculation-carts

- Title: Calculation carts
- Lifecycle: substantial (normative) · introduced 0.0.7 · compatible >= 0.0.7
- Page: /docs/features/calculation-carts · JSON: /docs/agent/features/calculation-carts.json
- Purpose: kind: calculation runs update and events without a canvas so a sibling render cart can paint.
- Package: @cyberart-io/engine · module ./canvas/animation · surfaces browser
- Primary exports: CartKind
- Prerequisites: runtime
- Related: runtime, runtime-group
- Examples: calculation-capability (artifact available, source restricted)
- Keywords: calculation, CartKind, kind: calculation, no-canvas

### deterministic-mode

- Title: Deterministic mode
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/deterministic-mode · JSON: /docs/agent/features/deterministic-mode.json
- Purpose: step/schedule, virtual clocks, ScriptedAction, and replay diffs so CI can drive a cart without wall time.
- Package: @cyberart-io/engine · module ./canvas/cyberArtRuntime · surfaces browser
- Primary exports: createVirtualClock, createWallClock, describeReplayMismatch
- Prerequisites: runtime
- Related: runtime, events, headless-harness, replay-inspector
- Examples: (none bound)
- Keywords: deterministic-mode, createVirtualClock, createWallClock, describeReplayMismatch

### events

- Title: Events and router
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/events · JSON: /docs/agent/features/events.json
- Purpose: Mailbox envelope, typed contracts, createEventRouter, hops, idempotency, and rejections.
- Package: @cyberart-io/engine · module ./canvas/eventRouter · surfaces browser
- Primary exports: createEventRouter, normalizeEvent, createContractRegistry
- Prerequisites: (none)
- Related: runtime, presentation-adapter, capability-manifest, replay-inspector
- Examples: (none bound)
- Keywords: events, createEventRouter, normalizeEvent, createContractRegistry

### snapshots

- Title: Snapshots
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/snapshots · JSON: /docs/agent/features/snapshots.json
- Purpose: Versioned snapshot envelope, defineSnapshot / parseSnapshot, and host-owned migrations.
- Package: @cyberart-io/engine · module ./canvas/snapshotEnvelope · surfaces browser
- Primary exports: defineSnapshot, parseSnapshot, applySnapshotMigrations
- Prerequisites: (none)
- Related: runtime, cart-state, replay-inspector
- Examples: snapshot-restore (artifact available, source restricted)
- Keywords: snapshots, defineSnapshot, parseSnapshot, applySnapshotMigrations

### presentation-adapter

- Title: Presentation adapter
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/presentation-adapter · JSON: /docs/agent/features/presentation-adapter.json
- Purpose: Host-owned render model with loading / ready / error / unsupported phases and typed intents.
- Package: @cyberart-io/engine · module ./canvas/presentationAdapter · surfaces browser
- Primary exports: attachPresentationAdapter, mountPresentationAdapter
- Prerequisites: events
- Related: events, presentation-cue, visual-layers
- Examples: (none bound)
- Keywords: presentation-adapter, attachPresentationAdapter, mountPresentationAdapter

### presentation-cue

- Title: Presentation cue
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/presentation-cue · JSON: /docs/agent/features/presentation-cue.json
- Purpose: Deterministic createPresentationTimeline with duplicate policy, reduced-motion, and cue lifecycle events.
- Package: @cyberart-io/engine · module ./canvas/presentationCue · surfaces browser
- Primary exports: createPresentationTimeline, applyCueEasing
- Prerequisites: (none)
- Related: presentation-adapter, presentation-sequences, audio
- Examples: (none bound)
- Keywords: presentation-cue, createPresentationTimeline, applyCueEasing

### loading-indicator

- Title: Loading indicator
- Lifecycle: substantial (normative) · introduced 0.0.12 · compatible >= 0.0.12
- Page: /docs/features/loading-indicator · JSON: /docs/agent/features/loading-indicator.json
- Purpose: Host-facing presentation-only loader carts with seeded variants, honest progress, snapshot/restore, and builtin fallback.
- Package: @cyberart-io/engine · module ./canvas/loadingIndicator · surfaces browser, headless
- Primary exports: createLoadingIndicatorController, parseLoadingIndicatorParams, parseLoadingIndicatorSnapshot, loadingIndicatorEventContracts
- Prerequisites: (none)
- Related: presentation-cue, presentation-adapter
- Examples: (none bound)
- Keywords: loading-indicator, createLoadingIndicatorController, parseLoadingIndicatorParams, parseLoadingIndicatorSnapshot, loadingIndicatorEventContracts

### asset-resolver

- Title: Asset resolver
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/asset-resolver · JSON: /docs/agent/features/asset-resolver.json
- Purpose: Host-pluggable images/audio/fonts/spritesheets with cache, preload, provenance, and silent fallbacks.
- Package: @cyberart-io/engine · module ./canvas/assetResolver · surfaces browser
- Primary exports: createHostedAssetResolver, createDeclaredAssetResolver, createAssetPreloader
- Prerequisites: (none)
- Related: capability-manifest, audio, remote-cart-manifest, selection-trace
- Examples: (none bound)
- Keywords: asset-resolver, createHostedAssetResolver, createDeclaredAssetResolver, createAssetPreloader

### audio

- Title: Audio broker and cues
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/audio · JSON: /docs/agent/features/audio.json
- Purpose: Shared unlock broker plus deterministic audio cue timeline. PCM is not deterministic; headless traces are.
- Package: @cyberart-io/engine · module ./canvas/audioBroker · surfaces browser, headless
- Primary exports: createAudioBroker, createAudioCueTimeline, createHeadlessAudioAdapter
- Prerequisites: (none)
- Related: asset-resolver, presentation-cue, presentation-sequences, capability-manifest
- Examples: audio-unlock (artifact available, source restricted)
- Keywords: audio, createAudioBroker, createAudioCueTimeline, createHeadlessAudioAdapter

### capability-manifest

- Title: Capability manifest
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/capability-manifest · JSON: /docs/agent/features/capability-manifest.json
- Purpose: Versioned JSON for runtime features, phases, managers, assets, events, permissions, and integrations.
- Package: @cyberart-io/engine · module ./canvas/capabilityManifest · surfaces browser
- Primary exports: defineCapabilityManifest, parseCapabilityManifest, validateCapabilityManifest
- Prerequisites: (none)
- Related: events, asset-resolver, executable-modules, remote-cart-manifest
- Examples: calculation-capability (artifact available, source restricted)
- Keywords: capability-manifest, defineCapabilityManifest, parseCapabilityManifest, validateCapabilityManifest

### executable-modules

- Title: Executable modules
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/executable-modules · JSON: /docs/agent/features/executable-modules.json
- Purpose: Trusted versioned factories, host allowlists, isolation, and per-module failures.
- Package: @cyberart-io/engine · module ./canvas/executableModule · surfaces browser
- Primary exports: createExecutableModuleHost, freezeCapabilityBag
- Prerequisites: (none)
- Related: capability-manifest, remote-cart-manifest
- Examples: (none bound)
- Keywords: executable-modules, createExecutableModuleHost, freezeCapabilityBag

### normalized-geometry

- Title: Normalized geometry
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/normalized-geometry · JSON: /docs/agent/features/normalized-geometry.json
- Purpose: Coordinate spaces, contain/cover/crop layout, landmarks, hit regions, and a debug overlay.
- Package: @cyberart-io/engine · module ./canvas/normalizedGeometry · surfaces browser
- Primary exports: createPresentationLayout, createLandmarkRegistry, validateGeometry
- Prerequisites: (none)
- Related: pointer, semantic-layers, compositor, runtime
- Examples: (none bound)
- Keywords: normalized-geometry, createPresentationLayout, createLandmarkRegistry, validateGeometry

### runtime-group

- Title: Runtime group
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/runtime-group · JSON: /docs/agent/features/runtime-group.json
- Purpose: createRuntimeGroup: several carts, shared router attach, lockstep clock. Headless twin is createHeadlessMultiCartHarness.
- Package: @cyberart-io/engine · module ./canvas/runtimeGroup · surfaces browser, headless
- Primary exports: createRuntimeGroup
- Prerequisites: runtime, events
- Related: runtime, calculation-carts, compositor, portal-lifecycle, headless-harness
- Examples: (none bound)
- Keywords: runtime-group, createRuntimeGroup

### compositor

- Title: Compositor
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/compositor · JSON: /docs/agent/features/compositor.json
- Purpose: Transparent multi-cart stacking, blend modes, and captureComposedFrame / writeComposedFrame.
- Package: @cyberart-io/engine · module ./canvas/compositor · surfaces browser, headless
- Primary exports: createCompositor
- Prerequisites: runtime-group
- Related: runtime-group, visual-layers, normalized-geometry
- Examples: (none bound)
- Keywords: compositor, createCompositor

### visual-layers

- Title: Visual layers
- Lifecycle: substantial (normative) · introduced 0.0.7 · compatible >= 0.0.7
- Page: /docs/features/visual-layers · JSON: /docs/agent/features/visual-layers.json
- Purpose: Versioned overlay layers, deterministic swaps, and hostState JSON projected onto paint.
- Package: @cyberart-io/engine · module ./canvas/visualLayers · surfaces browser, headless
- Primary exports: createVisualLayerController, captureVisualLayers
- Prerequisites: (none)
- Related: compositor, presentation-bindings, semantic-layers, presentation-sequences
- Examples: (none bound)
- Keywords: visual-layers, createVisualLayerController, captureVisualLayers

### semantic-layers

- Title: Semantic layers
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/semantic-layers · JSON: /docs/agent/features/semantic-layers.json
- Purpose: Named mask/polygon/rect/depth regions, host a11y names/roles, and hit-test policies.
- Package: @cyberart-io/engine · module ./canvas/semanticLayers · surfaces browser, headless
- Primary exports: createSemanticLayerController
- Prerequisites: (none)
- Related: normalized-geometry, visual-layers, presentation-bindings, pointer
- Examples: (none bound)
- Keywords: semantic-layers, createSemanticLayerController

### presentation-sequences

- Title: Presentation sequences
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/presentation-sequences · JSON: /docs/agent/features/presentation-sequences.json
- Purpose: One frame-stepped clock across audio, captions, semantic focus, visual layers, and cues, with skip/fallback/restore.
- Package: @cyberart-io/engine · module ./canvas/presentationSequence · surfaces browser, headless
- Primary exports: definePresentationSequence, createPresentationSequencePlayer
- Prerequisites: (none)
- Related: presentation-cue, audio, visual-layers, semantic-layers, presentation-bindings
- Examples: (none bound)
- Keywords: presentation-sequences, definePresentationSequence, createPresentationSequencePlayer

### presentation-bindings

- Title: Presentation bindings
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/presentation-bindings · JSON: /docs/agent/features/presentation-bindings.json
- Purpose: Versioned manifest projecting host state onto visual versions, presence, regions, and sequences; fail-closed defaults.
- Package: @cyberart-io/engine · module ./canvas/presentationBindings · surfaces browser, headless
- Primary exports: definePresentationBindings, createPresentationBindingRuntime
- Prerequisites: (none)
- Related: visual-layers, semantic-layers, presentation-sequences, selection-trace
- Examples: (none bound)
- Keywords: presentation-bindings, definePresentationBindings, createPresentationBindingRuntime

### portal-lifecycle

- Title: Portal lifecycle
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/portal-lifecycle · JSON: /docs/agent/features/portal-lifecycle.json
- Purpose: Enter/exit/abort another cart exclusively, with parent suspend, grant transfer, and nested stack restore.
- Package: @cyberart-io/engine · module ./canvas/portalLifecycle · surfaces browser, headless
- Primary exports: createPortalLifecycle, cabinetPortal, paintingPortal
- Prerequisites: runtime-group
- Related: runtime-group, remote-cart-manifest
- Examples: (none bound)
- Keywords: portal-lifecycle, createPortalLifecycle, cabinetPortal, paintingPortal

### job-orchestration

- Title: Job orchestration
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/job-orchestration · JSON: /docs/agent/features/job-orchestration.json
- Purpose: Durable queued jobs with retries, leases, evaluator feedback, and host-owned apply. Results are refs, not payloads.
- Package: @cyberart-io/engine · module ./canvas/jobOrchestration · surfaces browser, headless
- Primary exports: createJobCoordinator, createMemoryJobPersistence, createHeadlessJobWorker
- Prerequisites: (none)
- Related: world-patch, content-revision, headless-harness
- Examples: (none bound)
- Keywords: job-orchestration, createJobCoordinator, createMemoryJobPersistence, createHeadlessJobWorker

### world-graph

- Title: World graph
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/world-graph · JSON: /docs/agent/features/world-graph.json
- Purpose: Optional spatial graph with stable ids, canonical vs known projections, and semantic-time transit.
- Package: @cyberart-io/engine · module ./canvas/worldGraph · surfaces browser, headless
- Primary exports: createWorldGraph, worldGraphEventContracts
- Prerequisites: (none)
- Related: world-patch, semantic-layers
- Examples: (none bound)
- Keywords: world-graph, createWorldGraph, worldGraphEventContracts

### world-patch

- Title: World patch
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/world-patch · JSON: /docs/agent/features/world-patch.json
- Purpose: Transactional dry-run and atomic commit of a generated world patch as one revision.
- Package: @cyberart-io/engine · module ./canvas/worldPatch · surfaces browser, headless
- Primary exports: createWorldPatchApplier, createMemoryWorldPersistence
- Prerequisites: (none)
- Related: world-graph, job-orchestration, content-revision
- Examples: (none bound)
- Keywords: world-patch, createWorldPatchApplier, createMemoryWorldPersistence

### content-revision

- Title: Content revision
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/content-revision · JSON: /docs/agent/features/content-revision.json
- Purpose: Atomic staging and commit of an external content bundle with last-known-good rollback.
- Package: @cyberart-io/engine · module ./canvas/contentRevision · surfaces browser, headless
- Primary exports: createContentRevisionActivator, createStaticContentAdapter, createRemoteContentAdapter
- Prerequisites: (none)
- Related: remote-cart-manifest, selection-trace, asset-resolver
- Examples: (none bound)
- Keywords: content-revision, createContentRevisionActivator, createStaticContentAdapter, createRemoteContentAdapter

### remote-cart-manifest

- Title: Remote cart manifests
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/remote-cart-manifest · JSON: /docs/agent/features/remote-cart-manifest.json
- Purpose: HMAC-signed versioned catalogs, declared asset hashes, deny-by-default host grants, no ambient network.
- Package: @cyberart-io/engine · module ./canvas/remoteCartManifest · surfaces browser, headless
- Primary exports: defineRemoteCartManifest, loadRemoteCart, createRemoteCartSandbox, createHostGrantSet
- Prerequisites: (none)
- Related: capability-manifest, executable-modules, content-revision
- Examples: (none bound)
- Keywords: remote-cart-manifest, defineRemoteCartManifest, loadRemoteCart, createRemoteCartSandbox, createHostGrantSet

### headless-harness

- Title: Headless harness
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/headless-harness · JSON: /docs/agent/features/headless-harness.json
- Purpose: Node/jsdom createHeadlessHarness around production createRuntime({ deterministic }), software Canvas2D, and pixel asserts.
- Package: @cyberart-io/engine · module ./canvas/headlessHarness · surfaces headless
- Primary exports: createHeadlessHarness, installHeadlessCanvas
- Prerequisites: runtime, deterministic-mode
- Related: deterministic-mode, runtime-group, frame-benchmark, browser-harness, production-scenario
- Examples: calculation-capability (artifact available, source restricted)
- Keywords: headless-harness, createHeadlessHarness, installHeadlessCanvas

### frame-benchmark

- Title: Frame benchmarking
- Lifecycle: substantial (normative) · introduced 0.0.8 · compatible >= 0.0.8
- Page: /docs/features/frame-benchmark · JSON: /docs/agent/features/frame-benchmark.json
- Purpose: benchmarkCartFrames (headless) and optional onFrameTiming (live); zero cost when unset.
- Package: @cyberart-io/engine · module ./canvas/frameBenchmark · surfaces headless
- Primary exports: benchmarkCartFrames, formatFrameBenchmarkResult
- Prerequisites: (none)
- Related: headless-harness, runtime
- Examples: (none bound)
- Keywords: frame-benchmark, benchmarkCartFrames, formatFrameBenchmarkResult

### browser-harness

- Title: Browser harness
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/browser-harness · JSON: /docs/agent/features/browser-harness.json
- Purpose: createBrowserHarness: DOM clicks, viewport/DPR, composed screenshots, Playwright-compatible adapter.
- Package: @cyberart-io/engine · module ./canvas/browserHarness · surfaces browser
- Primary exports: createBrowserHarness, createPlaywrightCompatibleAdapter
- Prerequisites: (none)
- Related: headless-harness, production-scenario, compositor
- Examples: (none bound)
- Keywords: browser-harness, createBrowserHarness, createPlaywrightCompatibleAdapter

### production-scenario

- Title: Production scenario
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/production-scenario · JSON: /docs/agent/features/production-scenario.json
- Purpose: One JSON scenario drives the real host/runtime/cart composition; evidence bundles record firstBrokenBoundary.
- Package: @cyberart-io/engine · module ./canvas/productionScenario · surfaces browser, headless
- Primary exports: defineProductionScenario, createProductionScenarioRunner
- Prerequisites: (none)
- Related: browser-harness, runtime-group, compositor, presentation-bindings, selection-trace
- Examples: (none bound)
- Keywords: production-scenario, defineProductionScenario, createProductionScenarioRunner

### replay-inspector

- Title: Replay inspector
- Lifecycle: substantial (normative) · introduced 0.0.6 · compatible >= 0.0.6
- Page: /docs/features/replay-inspector · JSON: /docs/agent/features/replay-inspector.json
- Purpose: Causation trees, redacted export/import, and headless replay of recorded traces.
- Package: @cyberart-io/engine · module ./canvas/replayInspector · surfaces browser, headless
- Primary exports: createReplayInspector, compareReplayTraces, replayExportedTrace
- Prerequisites: (none)
- Related: events, deterministic-mode, selection-trace
- Examples: (none bound)
- Keywords: replay-inspector, createReplayInspector, compareReplayTraces, replayExportedTrace

### selection-trace

- Title: Selection trace
- Lifecycle: substantial (normative) · introduced 0.0.9 · compatible >= 0.0.9
- Page: /docs/features/selection-trace · JSON: /docs/agent/features/selection-trace.json
- Purpose: Why a binding, revision, asset, sequence, or fallback won, with secret-safe export.
- Package: @cyberart-io/engine · module ./canvas/selectionTrace · surfaces browser, headless
- Primary exports: createSelectionTrace, attachSelectionTrace, recordSelectionDecision
- Prerequisites: (none)
- Related: presentation-bindings, content-revision, asset-resolver, production-scenario, replay-inspector
- Examples: (none bound)
- Keywords: selection-trace, createSelectionTrace, attachSelectionTrace, recordSelectionDecision

## Examples

### create-runtime-canvas

- Title: Silent createRuntime canvas fill
- Page: /docs/examples/create-runtime-canvas
- Purpose: Show the engine README quick start: mount a silent cart, fill the canvas from seed-driven state, and start the loop. No audio, network, or extra UI.
- Bound to features: runtime
- Runtime kind: render
- Artifact: available — Cache verified against the lock.
- Source: restricted — Source not published; example-carts is private.
- Host capabilities: permissions (none); network none; credentials none
- Interaction: none
- Expected (example-specific): visible — The canvas is filled with an rgb color whose red channel is taken from the token seed hue and drifts each frame.
- Expected (example-specific): audible — silent
- Accessibility fallback: A text description of a solid color field that slowly changes is sufficient when canvas is unavailable.
- Provenance: cyberart-io/example-carts @ 2ed0eb599ded827cca46bcd2fc66dea78f387a0c · engine 0.0.12

### calculation-capability

- Title: Calculation cart with capability manifest
- Page: /docs/examples/calculation-capability
- Purpose: Show a calculation cart that updates from host-channel events without a canvas, plus a versioned engine capability manifest the host can validate. Not a game.
- Bound to features: calculation-carts, capability-manifest, headless-harness
- Runtime kind: calculation
- Artifact: available — Cache verified against the lock.
- Source: restricted — Source not published; example-carts is private.
- Host capabilities: permissions host.intent.*, host.state.*; network none; credentials none
- Interaction: scripted
- Expected (example-specific): visible — No canvas. After a scene-changed event, cart state.sceneId matches the payload and the cart emits host.intent.overlay with overlayId banner.
- Expected (example-specific): audible — silent
- Accessibility fallback: State and emitted events are the accessible representation.
- Provenance: cyberart-io/example-carts @ 2ed0eb599ded827cca46bcd2fc66dea78f387a0c · engine 0.0.12

### keyboard-inject

- Title: Keyboard inject and key trace
- Page: /docs/examples/keyboard-inject
- Purpose: Show KeyboardManager: register a single-character action, inject or press j, and paint a growing bar plus last-key fill. No audio, network, or credentials.
- Bound to features: keyboard
- Runtime kind: render
- Artifact: available — Cache verified against the lock.
- Source: restricted — Source not published; example-carts is private.
- Host capabilities: permissions (none); network none; credentials none
- Interaction: keyboard
- Expected (example-specific): visible — A light bar grows across a dark canvas each time j is received. After the first j the background shifts to blue-gray.
- Expected (example-specific): audible — silent
- Accessibility fallback: Text: hits increment when j is injected; lastKey becomes j.
- Provenance: cyberart-io/example-carts @ 2ed0eb599ded827cca46bcd2fc66dea78f387a0c · engine 0.0.12

### audio-unlock

- Title: Audio unlock control
- Page: /docs/examples/audio-unlock
- Purpose: Show the host unlock gesture for the shared audio graph. This cart paints a speaker glyph and emits no PCM. Run is the unlock control; the caption is the non-audio alternative.
- Bound to features: audio
- Runtime kind: render
- Artifact: available — Cache verified against the lock.
- Source: restricted — Source not published; example-carts is private.
- Host capabilities: permissions (none); network none; credentials none
- Interaction: none
- Expected (example-specific): visible — A two-rectangle speaker glyph on a dark field.
- Expected (example-specific): audible — Unlock click arms the shared audio graph; this cart emits no PCM. The caption is the transcript.
- Accessibility fallback: Text: Run unlocks the page audio graph. This example does not play a tone.
- Provenance: cyberart-io/example-carts @ 2ed0eb599ded827cca46bcd2fc66dea78f387a0c · engine 0.0.12

### snapshot-restore

- Title: Snapshot export and restore
- Page: /docs/examples/snapshot-restore
- Purpose: Show versioned snapshots: ticks grow a strip; exportSnapshot then importSnapshot restores the saved width. Reset remounts at zero. No audio, network, or credentials.
- Bound to features: snapshots
- Runtime kind: render
- Artifact: available — Cache verified against the lock.
- Source: restricted — Source not published; example-carts is private.
- Host capabilities: permissions (none); network none; credentials none
- Interaction: none
- Expected (example-specific): visible — An orange strip grows with ticks. After importSnapshot the strip jumps back to the saved width. Reset remounts at zero.
- Expected (example-specific): audible — silent
- Accessibility fallback: Text: ticks increment each frame; importSnapshot restores the saved tick count.
- Provenance: cyberart-io/example-carts @ 2ed0eb599ded827cca46bcd2fc66dea78f387a0c · engine 0.0.12

## Redirects

- / → /gallery (relocate)

## Planned redirects

Declared in the manifest migration map; the target is not routed in this build. Do not follow.

- (none)

## Deprecations

- (none)

