Identity motion

Plays the owner's selected break-and-repair, assembly and website loops as explanatory brand illustrations, with every frame available to inspect.

Organism · draft · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: Monochrome repair

Rendered by identity-motion.ts

Open example: Identity motion · Do: Monochrome repair Use the full-page example to follow page links.

The same sequence retains its crossing and gaps without colour.

Do: Eight repair frames

Rendered by identity-motion.ts

Open example: Identity motion · Do: Eight repair frames Use the full-page example to follow page links.

The selected sequence with inspectable frames.

Do: Japanese operations

Rendered by identity-motion.ts

Open example: Identity motion · Do: Japanese operations Use the full-page example to follow page links.

The same illustration with translated controls.

Do: Six assembly frames

Rendered by identity-motion.ts

Open example: Identity motion · Do: Six assembly frames Use the full-page example to follow page links.

The final still and available frame declarations expose the complete assembly sequence; playback remains a separate check.

Do: Fragments to a system

Rendered by identity-motion.ts

Open example: Identity motion · Do: Fragments to a system Use the full-page example to follow page links.

This explanatory kind has its own positive specimen, labelled as an illustration.

Do: Review and realign

Rendered by identity-motion.ts

Open example: Identity motion · Do: Review and realign Use the full-page example to follow page links.

The final static scene retains review as part of the explanation, without claiming a real repair.

Don't: Claim the illustration repaired a real system

Rendered by identity-motion.ts

Open example: Identity motion · Don't: Claim the illustration repaired a real system Use the full-page example to follow page links.

The proposed claim "Your system repaired automatically" would mistake an illustration for execution evidence. Retain the illustration caption and use attributable product evidence for any real repair claim. The adjacent native artwork is the valid illustration reference; this warning describes a misuse, not an executed negative test.

Don't: Treat the final frame as approval to release

Rendered by identity-motion.ts

Open example: Identity motion · Don't: Treat the final frame as approval to release Use the full-page example to follow page links.

The proposed instruction "Release without review" would bypass the human decision represented by Review and realign. Keep that review step and obtain a recorded review decision before release. The adjacent native artwork is the valid drift illustration reference; the bypass is described, not rendered or rejected.

Rules

RuleWhyCheck
Positive specimens declare their rendered initial state and document language; each registered visual variant has a positive example.Machine and Library consumers need the same examples without turning declarations into execution evidence.Automated: tests/unit/v4-example-coverage.test.ts
Repeated static instances supply distinct stable instanceKey values; identical inputs are deterministic, and each runtime root scopes all scene/thumbnail masks.Source exports must be reproducible and simultaneous SVG consumers must not share mask identities.Automated: tests/unit/identity-instance-identity.test.ts
Every sequence has pause and frame selection and respects reduced motion.Readers control movement and can inspect the explanation at their pace.Automated: tests/site/identity.spec.ts
Label the sequence as an illustration, never a product result.Brand motion cannot stand in for execution evidence.Automated: tests/unit/site-identity.test.ts

API

PropTypeRequiredDefaultWhat it does
instanceKeystringNo"identity-motion"Stable caller-owned key: a letter followed by letters/digits/underscore/hyphen, at most 64 characters. Repeated static instances of a sequence in one document require distinct keys; identical inputs render identical bytes.
tonecontext | monoNo"context"Context-aware colour or one-colour geometry proof.
kindrepair | assembly | hero | drift | operationsNo"repair"Which selected sequence to show.
langen | jaNo"en"Caption and controls language.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Ididentity-motion
LayerOrganisms
Categoryshowcase
OwnerSite system lead
Statusdraft
Version1.0.0
Sourceapps/showcase/site/system/organisms/identity-motion.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-27Created from the owner-selected V4 direction (D-SITE-019).

Use when

  • Beside the idea the sequence explains. Why: Motion makes the relationship between pieces and rules visible.

Do not use when

  • As evidence of a real audit or repair. Why: These are explicitly labelled illustrations; product demonstrations retain their own evidence.

Anatomy

PartWhat it is
rootNamed figure
sceneSVG geometry
stepsEight repair frames, six assembly frames or four explanation frames
controlsPlay, previous, next, replay and frame slider

Made of: identity-art, caption.

Used in: pages directly.

Variants

VariantWhenWhy
repairBreak and repairUses the same tokens and geometry for a different explanatory job.
assemblyLogo assemblyUses the same tokens and geometry for a different explanatory job.
heroFrom fragments to a systemUses the same tokens and geometry for a different explanatory job.
driftDrift, seen and resolvedUses the same tokens and geometry for a different explanatory job.
operationsA question finds its ownerUses the same tokens and geometry for a different explanatory job.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: The illustration is not interactive, so it has no hover state.
focus-visibleVisible focus on every playback control.
activePlay becomes Pause.
disabledNot applicable: The illustration has nothing to disable.
loadingNot applicable: The illustration is rendered at build time and is complete when the page loads.
emptyNot applicable: The illustration is not rendered without content; the builder skips it.
errorNot applicable: The illustration shows no data that can fail.
currentThe current frame has its label and aria-current.
visitedNot applicable: The illustration is not a link.
expandedNot applicable: The illustration does not open or close.

Tokens

PartToken
--identity-motion-surfacevar(--cotton)
--identity-motion-inkvar(--ink)
--identity-motion-ink-mutedvar(--ink-2)
--identity-motion-control-surfacevar(--surface)
--identity-motion-control-hovervar(--surface-2)
--identity-motion-linevar(--line-strong)
--identity-motion-rulevar(--rule-hair)
--identity-motion-focus-widthvar(--rule)
--identity-motion-focusvar(--focus)
--identity-motion-focus-offsetvar(--space-2)
--identity-motion-titlevar(--type-h3)
--identity-motion-captionvar(--type-small)
--identity-motion-monovar(--font-mono)
--identity-motion-accentvar(--indigo-ink)
--identity-motion-routevar(--madder-ink)
--identity-motion-gapvar(--space-4)
--identity-motion-gap-smallvar(--space-3)
--identity-motion-gap-sectionvar(--space-6)
--identity-motion-paddingvar(--space-8)
--identity-motion-scene-spacevar(--space-9)
--identity-motion-status-gapvar(--space-5)
--identity-motion-targetvar(--space-11)
--identity-motion-scene-unitvar(--space-13)
--identity-motion-durationvar(--dur-weave)
--identity-motion-easingvar(--ease-standard)

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internal--space-8 scene and --space-6 controls
external--space-9 block spacing
rhythmOne explanatory moment after the section's claim.

Motion

AspectValue
movesIndividual threads, bars or geometric modules.
triggerOnce on entering the viewport, or Play; Replay restarts. No infinite autoplay.
duration4 seconds per authored frame; geometric interpolation over --dur-weave with --ease-standard. One owned animation frame callback; manual frame selection remains immediate.
easing--ease-standard
interruptiblePause, step controls and slider stop immediately; leaving view or hiding the tab pauses.
reducedFinal frame, no autoplay or transitions. Manual frame selection and explicitly requested timed playback remain available without transitions. Changing the preference pauses playback and restores the final frame.
whyThe owner selected the V4 sequences; controlled playback keeps them readable and optional.

Runtime and reuse

  1. stylesheet: /css/site.css. Built Site tokens, core and registered element CSS; preserve modes, focus and responsive rules.

  2. stylesheet: /css/demos.css. Existing legacy demo styles where the rendered specimen uses them.

  3. font: /fonts/. Self-hosted files referenced by Site @font-face, with licences; Japanese locale overrides remain applicable.

  4. Static fallback: Original build-time specimen remains readable before loading and after chunk/initialization failure; enhancement controls retain authored hidden state.

  5. Configured initializer: apps/showcase/site/interactives/identity-motion.ts#init. The host owns transactional static-markup restoration and runtime state.

  6. Consumer module (imports relative to the configured source root):
    import { createRuntimeHost } from "./src/workflows/runtime-host";
    import { SITE_RUNTIMES } from "./apps/showcase/site/runtime-registry";
    const definition = SITE_RUNTIMES.find(entry => entry.binding.id === "identity-motion");
    if (!definition || definition.binding.lifecycle.kind !== "managed") throw new Error("Managed runtime binding unavailable");
    const host = createRuntimeHost([definition]);
    export function mountRuntime(container: ParentNode) { return host.mountAll(container); }
  7. After inserting the rendered markup, call mountRuntime(container) for the container holding [data-demo="identity-motion"]. Retain the returned disposal function and call it before removing, replacing or remounting, including every Storybook args render. The configured host restores captured static markup/attributes on disposal or caught load/initialization failure; retry starts a fresh managed remount.

Accessibility passport

AspectValue
rolefigure
nameVisible caption
keyboardTab to buttons; Space or Enter activates; range arrows and Home/End choose frames.
focus--focus ring
screenReaderFrame slider has the current description; only manual changes are announced politely.
contrastText uses ink on cotton; dyes encode geometry with a written description.
targetControls at least --space-11 tall.

Content

SlotLengthVoice
captionTwo sentencesLabel the sequence as an illustration.

Good: “Illustration of the idea; not a live system result.”

Bad: “Your system repaired automatically.”

Japanese: 全キャプション、フレーム、操作に日本語を用意。 Native language review remains pending.

Icons and illustrations

  • art:v4-repair-1
  • art:v4-repair-2
  • art:v4-repair-3
  • art:v4-repair-4
  • art:v4-repair-5
  • art:v4-repair-6
  • art:v4-repair-7
  • art:v4-repair-8
  • art:v4-assembly-1
  • art:v4-assembly-2
  • art:v4-assembly-3
  • art:v4-assembly-4
  • art:v4-assembly-5
  • art:v4-assembly-6
  • art:v4-hero-1
  • art:v4-hero-2
  • art:v4-hero-3
  • art:v4-hero-4
  • art:v4-drift-1
  • art:v4-drift-2
  • art:v4-drift-3
  • art:v4-drift-4
  • art:v4-operations-1
  • art:v4-operations-2
  • art:v4-operations-3
  • art:v4-operations-4

Decisions and exceptions

Usage

290 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.