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.