Skip to content

RISE CURRENT V1 SLICE

github-actions[bot] edited this page Oct 8, 2026 · 4 revisions

External Current v1: first implementation slice

Status: implementation slice, 29 September 2026. The attached direction proposes a larger realtime protocol; this document scopes the first independently testable seam.

Purpose

Let a human author or model provider hand RISE a bounded, declarative answer. RISE validates it and compiles it through the existing Experience Program and Session Compiler. The compiled Session and its Player remain the one runtime Current. An external Current document is input, not another player or an alternate score format.

Document contract

schema: "rise.current.v1", a trimmed id, a nonempty title, an origin (kind: "human" | "model", name, required provider for a model), an optional theme, and 1–16 ordered segments. The theme is one of the shipped color themes (JEV_COLOR_THEMES in src/core/jev-color-themes.js); any other value, null included, is refused (CURRENT_THEME) with the list of valid ids. Every segment has a unique trimmed id, 1–4,000 characters of nonblank text, an optional visual selection ("still", "attractor", "genesis"), an optional literal: true flag, and up to eight dives. Dives remain valid input, but the guide a host's model is given (src/live/guide/) no longer asks for them and a Composer presentation does not show them (decision). Each Dive has a unique id within the segment, text of at most 600 characters, and an exact, half-open UTF-16 character span covering complete whitespace tokens plus opening and closing quote fingerprints. The fingerprints must match the selected source text and cannot contain NUL. Total text is at most 20,000 characters. Ordinary text cannot contain the chunker's control markers ([PAUSE], [FLASH], [HOLD], |, or U+E000); literal text treats the first four as words, while U+E000 and the stand-ins used to escape controls remain reserved. Unknown fields, explicit null optional fields, sparse entries, and unsafe/prototype keys are refused, not discarded. A model origin identifies who generated words; it is not a factual citation.

validateRiseCurrent(input) returns detached, immutable data, failing with a code and path. materializeRiseCurrent(input) returns a detached, JSON-safe { program, sources } pair: one canonical rise.experience-program.v1 with one movement per segment, a visual lane with a closed renderer choice, and a thread lane for anchored Dive text; plus a separately identified source for every segment with bounded origin metadata. compileRiseCurrent(input) uses the same mapping and passes the pair to compileSession, preserving the Stream and Page projections. Generated content has proposed score authority; human content has user authority. No model supplied script, URL, shader, CSS, or arbitrary renderer configuration reaches the runtime. A theme is a name only: the shared mapping compiles it through the fixed table (RISE_CURRENT_THEMES) to the matching shipped page colors, attractor system, palette and form, and Genesis preset, so no model color reaches the runtime. A Current with no theme keeps its existing presentation and cue behavior.

The compiler provides the same Stream and Page projections as other Sessions. A session with at least one non-still visual starts with the continuous field enabled so the authored visual schedule can reach the Chamber; an all-still document starts with visuals off. Playback, passage anchoring, and Dive use existing runtime semantics. A caller may explicitly choose projection: "page"; default is stream. Compilation never makes network calls.

Deliberately outside this slice

This is a sealed response, not a realtime event stream. It does not synthesize speech, align audio, accept a microphone, connect to any model provider, provide an MCP app, or branch the conversation. A later event protocol must define incremental commit, cancellation, audio clock ownership, and branch/surface semantics before it claims to run live. No new Experience State or affect dimensions are introduced here; the unvalidated affect PR is not the foundation of the external format.

Evidence

One fixture from a named human and one from a named model must compile to the same Session contract. Tests must reject unknown visuals, executable-looking extra fields, malformed or dishonest quote spans, duplicate ids, empty content, excessive length, and invalid provider attribution. A short demo module can feed a two-segment answer into the compiler without browser or provider credentials. Successful tests establish the protocol seam only, not the proposed audiovisual product's value.


Published from docs/specs/RISE-CURRENT-V1-SLICE.md. Edits made here are overwritten on the next push to main.

Start here

Release

Pilot

The Archive - texts and their editing

Authoring - scores, rooms, and rendering

Reading surfaces

Imagery - what may be shown, and on whose authority

The Chapel

Direction and unbuilt work

Affect and the Emotions room

Reading decision service and retired gate

Product direction and team tracking


Documentation index · Repository

Clone this wiki locally