Cross-framework conformance driver contract + parity scenarios for ODS.
Design: ../../docs/adr/0001-conformance-driver-contract.md (ADR-0001, accepted 2026-04-19).
src/contract.ts — the OdsDriver interface every renderer must
implement, plus the framework-neutral ComponentSnapshot types
returned by driver observation methods.src/capabilities.ts — the flat set of capability tags. Drivers
declare which capabilities they support; scenarios declare which
they need.src/scenarios.ts — the shared library of parity scenarios. Each
scenario is a closure taking an OdsDriver and performing actions +
assertions. The runner is framework-specific (see below).Frameworks/react-web/tests/conformance/;
the Flutter driver will land in
Frameworks/flutter-local/test/conformance/
(dart source, separate scenario library per the Phase A plan).flutter test for Flutter).Phase B will consolidate via JSON-RPC so Dart and TS share one scenario library over the wire.
core always applies; add feature tags as
needed — see src/capabilities.ts).src/scenarios.ts — a Scenario object
with name, spec, capabilities, and run(driver).npm test in Frameworks/react-web/ — vitest picks up the
new scenario via the conformance test file and runs it against
the React driver.Because it’s the contract, not any one renderer. When the ODS spec goes public and 3rd-party renderers appear, this package is what they pull to prove conformance. Keeping it framework-agnostic from day one is the bet.