Architecture

One source of truth. Purpose-built interfaces.

The Figma widget, web demo, Canvas Record, exports, and tests use the same typed accessibility state. Each runtime renders that state natively instead of forcing React into Figma.

01Scenario
02Shared rules
03Figma widget
04Web demo
05Canvas Record
06Export
07Release checks

Runtime boundaries

Inspect who owns what.

The system shares product meaning across runtimes while keeping host capabilities, rendering, and failure modes explicit.

Product contracts

Owns
Raw scenario schemas, readiness precedence, contrast assessment, Report 3.1, and quality-matrix types.
Consumes
Measured facts from Figma and deterministic fixtures from tests and product documentation.
Deliberately excludes
Figma globals, DOM APIs, React components, styling, persistence, and network access.
Release proof
Nine fixtures validate on import, then run through domain and renderer assertions.

Decision ledger

Constraints are part of the interface.

Why page-scoped evidence?
It matches how teams review and prevents one page from silently overwriting another.
Why bounded scans?
Figma stays responsive, while explicit partial states prevent false completeness.
Why an immutable record palette?
Five reviewers should produce one legible artifact, regardless of personal widget themes.
Why no shared component library?
The Widget API and DOM have different primitives; sharing behavior is safer than forcing shared rendering.
Why keep a rollback implementation?
The product-site migration can prove parity before deployment while the accepted static v3 artifact remains recoverable.