Repository navigation
SYSTEM FIGURES
A system figure draws the parts a change touched (services, queues and stores), the paths between them, and each state the change passed through. It is one kind of the figure kit (src/core/figures/figure-kit.js; the figure kit in RISE Changes). The model gives only data. RISE places every box, path and label, and refuses a spec it cannot draw cleanly instead of shrinking or cutting anything.
{ kind: 'system', title: 'Tinybird writes, batched', states: ['A write per check', 'Batched'],
nodes: [
{ id: 'checker', label: 'Checker', at: [0, 1] },
{ id: 'batcher', label: 'Batcher', at: [1, 0], shape: 'queue', changed: true, in: ['Batched'] },
{ id: 'tinybird', label: 'Tinybird', at: [2, 1], shape: 'store' }
],
links: [
{ from: 'checker', to: 'tinybird', many: true, in: ['A write per check'] },
{ from: 'tinybird', to: 'checker', label: '429s', in: ['A write per check'] },
{ from: 'checker', to: 'batcher', many: true, in: ['Batched'] },
{ from: 'batcher', to: 'tinybird', label: '2s or 5 MB', changed: true, in: ['Batched'] }
] }- 3 to 8 nodes, each with an
id, alabelandat: [column, row]on a grid of 4 columns and 3 rows.shapeisservice(the default),queueorstore. - 2 to 10 links from one node to another.
many: truedraws a path that carries many messages at once.labelis optional and short. -
states(2 or 3, in order) are optional.inon a node or link lists the states it is in; none means every state. -
changed: truemarks what the change added or altered. It is drawn in the brand's accent. - Each label's budget in characters is in
KIT_BUDGETS.system. It is wider when fewer columns are used.
- The still is the last state. Whatever that state lacks is dashed, and its paths carry no dot.
- Where SMIL runs, the figure steps through the states every 3.2 seconds. Dots run along each live path, and the legend's bar and bold weight move to the state showing.
-
renderFigure(spec, { brand, state })draws a still of any one state with no stepping. That is how a static image, a slide or a thumbnail shows an earlier state.
The kit refuses, in plain sentences:
- a label over its budget;
- a link that runs through another node, or too short to see;
- a link label with no clear place beside its link;
- a legend wider than the frame;
- a link in a state that one of its nodes lacks;
- a system with no states and nothing changed.
The reference cases are real changes, kept in src/core/figures/fixtures/systems.js and held to goldens.
- Read the pull requests. Name only the parts and numbers they state.
- Add an entry to
SYSTEM_CASES: a name, thebrandit is drawn in (a key ofBRANDSinsrc/core/figures/brands.js), itssources(owner/repo#number), and the spec. - Check it draws:
npx vitest run src/core/figures/system-cases.test.js. A refusal names the node, link or label to move or shorten. Moving a node one column usually clears a link that crosses another. - Write its goldens:
npm run figures:systems -- --goldens. This writessystem-case-<name>.svg(the animation) andsystem-case-<name>-<n>.svg(one still per state) intosrc/core/figures/fixtures. - Look at it:
npm run figures:systems, then openout/system-figures/index.htmlin a browser. Watch the animation, and read each state's still on its own. - Commit the entry and its goldens together. A change to how the kind draws shows up as a diff in every golden, so review those diffs on the sheet too.
The kind-wide goldens (system-<theme or brand>.svg, drawn from the study spec in fixtures/specs.js) are compared in figure-kit.test.js and brands.test.js, like every other kind's.
These are the stable calls to build on:
-
renderFigure(spec, { theme | brand, state }): the figure as an SVG string, or an error that names what was refused. -
figureProblems(spec)andbrandProblems(brand): the refusals as plain sentences, empty when the figure can be drawn. -
FIGURE_KINDS,FIGURE_BOUNDSandKIT_BUDGETS: the kinds, their counts and each slot's budget. The composer's prompt is written from these, so it cannot drift from the kit. -
KIT_EXAMPLESinscripts/changes/compose.js: the example of each kind that the composer is shown. -
BRANDSinsrc/core/figures/brands.js: the reviewed brands. -
SYSTEM_CASES, andcaseFiguresandsystemSheetinsrc/core/figures/system-sheet.js: the reference cases, and the files they are reviewed in. -
npm run figures:systems: the contact sheet, from a fresh checkout, with no model, network or browser.
Published from docs/plans/SYSTEM-FIGURES.md. Edits made here are overwritten on the next push to main.
Start here
- COMPOSER-FIRST-ROADMAP
- VISION
- PROJECT-KNOWLEDGE
- ARCHITECTURE
- SYSTEM-DESIGN-REVIEW-2026-08-22
- ACCOUNT-SAVES
- RELEASING
- PLUS-CUSTOMER-LIFECYCLE
- AGENTS
Release
Pilot
- LIVE-CURRENT
- LIVE-HANDOFF
- LIVE-MCP
- DIRECTORY-SCREENSHOTS
- INSPECTOR-RUN-2026-10-10
- CLAUDE-RUN-2026-10-10
- CREATIVE-CONTROL-EVALS
- PERCEPTION-EVAL
- SOUND-LEVELS
- WORDING
- RUN-2026-10-08
- COMPOSER-INSTRUMENTS
- CHATGPT-DEMO
- EMBED-WITNESS
- RISE-GATE0
- CHATGPT-HOST-2026-10-04
- LIVE-002-HOST-2026-10-05
- EMBED-STAGE-HOST-2026-10-07
- RELEASE-GATES-2026-10-07
- EMBED-SAFETY-2026-10-05
- LIVE-GEMINI
- LIVE-NVIDIA
- LIVE-IMAGERY
- LIVE-EVALUATION
- LIVE-RED-TEAM
- CURRENT-CONSOLIDATION
- RISE-CHANGES
- SYSTEM-FIGURES
The Archive - texts and their editing
- ARCHIVE-CANON-SPEC
- ARCHIVE-CLEANSING-SPEC
- CORPUS-REVIEWER-PROMPT
- TYPESETTING-CANON
- PHRASE-CHUNKING-STUDY
- CHUNKER-AWARENESS-STUDY
- LIBRARY-SPEC
- SOL-PD-ACQUISITIONS-DOSSIER-LITERATURE-2026-07-28
Authoring - scores, rooms, and rendering
- EXPERIENCE-PROGRAM-SPEC
- LIVE-CURRENT-EVENTS-V1
- RISE-CURRENT-V1-SLICE
- RISE-SDK
- SCRIPTORIUM-SPEC
- WORKSHOP-COMPOSITION-STUDIO-SPEC
- AGENT-COMPOSITION-AND-RENDER-SPEC
- NARRATION-LANE-SPEC
- RECITATION-SPEC
- SCRIPTORIUM-STRENGTHENING-SPEC
Reading surfaces
- PAGE-MODE-SPEC
- RHYTHMIC-VISUAL-PRESENCE-SPEC
- IMAGE-STREAM-SPEC
- LATERAL-TRAVERSAL-SPEC
- CONTINUOUS-FIELD-SPEC
- JEV-VARIANCE
- INVOCATION-SKINS
- PHASE-2-SAFETY-SPEC
- SPATIAL-CHAMBER-SPEC
- Premium_Mobile_Chamber
Imagery - what may be shown, and on whose authority
- MUSEUM-ATLAS
- SOURCE-CURATION-SPEC
- SOURCE-EXPANSION-SPEC
- ATRIUM-IMAGERY-SPEC
- PERICOPE-IMAGERY-SPEC
- icon-museum-request-draft
- TEXT-ATTUNED-IMAGERY-SPEC
The Chapel
Direction and unbuilt work
Affect and the Emotions room
Reading decision service and retired gate
Product direction and team tracking
- README
- READER-DIRECTION
- CONSOLIDATED-READER
- COMPOSER-FIRST-ROADMAP
- TRACKER-DESIGN
- 2026-10-03-direction-decisions
- 2026-10-04-composer-decision
- 2026-10-05-consolidated-reader-decisions
- 2026-10-05-embed-stage-decision
- 2026-10-06-score-speech-service-roadmap
- 2026-10-07-current-with-a-look
- 2026-10-07-reader-control-and-replay
- 2026-10-05-one-colour-vocabulary-design
- 2026-10-07-chrome-follows-theme
- 2026-10-07-gallery-follows-with-works
- 2026-10-05-canonical-home-design
- 2026-10-04-reader-evidence
- 2026-10-original-performance-roadmap
- 2026-10-08-voice-hardening-2-findings
- 2026-10-09-feelings-sounds-parked
- 2026-10-10-connector-directory-readiness
- 2026-10-10-connector-submission-packet
- 2026-10-16-mystery-school-complete-library
- 2026-10-13-mystery-school-plan