@@ -21,7 +21,8 @@ path uses a DOM, CSSOM, WebView, or framework-owned content renderer.
2121> generic self-drawn layout-to-Scene slice has landed; self-drawn text, input,
2222> IME, accessibility bridges, and real thin-host presentation remain roadmap
2323> work. The TSX runtime, local host session, and npm packages are architecture
24- > only and have not been implemented yet.
24+ > only and have not been implemented yet. React Aria component parity is not
25+ > claimed yet.
2526
2627The target is unambiguous: A3S draws all application content. The existing
2728` appkit-native ` , ` gtk4-native ` , and ` winui-native ` modules create controls only
@@ -55,6 +56,29 @@ The GPU result is local DX12 evidence, not a Metal/Vulkan parity claim. Text and
5556real self-drawn window presentation are not represented by the screenshot
5657above.
5758
59+ ## Complete React Aria scope
60+
61+ The calculator is only the first vertical renderer fixture. The product target
62+ remains every semantic component in the official React Aria catalog. The
63+ versioned [ component matrix] ( docs/react-aria-component-matrix.json ) pins
64+ ` react-aria-components ` 1.19.0 and is schema-checked in CI:
65+
66+ - all 51 official top-level component families map to registered A3S RSX
67+ authoring components;
68+ - ` Button ` currently has scene/software-pixel smoke evidence through the shared
69+ calculator, but no component is self-drawn conformant yet;
70+ - Checkbox, Radio, and Switch Field/Button parts plus ToastList and
71+ ToastContent are recorded as eight explicit API gaps;
72+ - a component reaches ` conformant ` only with behavior, layout/hit, Graphics
73+ scene, deterministic software, accessibility, and real self-drawn macOS,
74+ Windows, and Linux evidence.
75+
76+ Existing AppKit, GTK4, and WinUI control paths cannot satisfy that final gate.
77+ They remain frozen comparison baselines until the equivalent A3S-drawn stories
78+ pass and their content-control code is removed. See the
79+ [ React Aria native direction] ( docs/react-aria-native.md ) for the acceptance
80+ contract.
81+
5882## TSX to native, without a browser
5983
6084The proposed TypeScript path follows
@@ -218,8 +242,10 @@ independently.
218242 bindings, fragments, slots, and spreads
219243- stable semantic identity and ordered prepare/commit/ACK transactions with
220244 rollback, degraded-state recovery, replay, and sensitive-value redaction
221- - a broad built-in ` rsx_ui ` registry covering foundations, forms, collections,
222- overlays, date/time, color, feedback, routing, and drag/drop semantics
245+ - a broad built-in ` rsx_ui ` registry with name-level coverage for all 51 pinned
246+ React Aria families across foundations, forms, collections, overlays,
247+ date/time, color, feedback, routing, and drag/drop semantics; this is
248+ authoring coverage, not a self-drawn parity claim
223249
224250### Interaction and accessibility
225251
@@ -259,6 +285,20 @@ independently.
259285- executable source and Cargo-feature firewalls proving the common contract has
260286 no Graphics, OS toolkit, or legacy renderer dependency
261287
288+ ### Atomic self-drawn frames
289+
290+ - opt-in ` platform-runtime ` orchestration from one owned ` NativeElement ` tree
291+ through layout, hit regions, Graphics Scene, accessibility, and a monotonic
292+ zero-widget host transaction
293+ - a transactional ` PlatformScenePresenter ` seam: pixels are prepared without
294+ exposure, published only after host commit, and discarded on rejection
295+ - retained resize, fractional-scale, damage, occlusion, redraw, delayed
296+ acknowledgement, and surface-loss replay without changing semantic identity
297+ - an identical-frame fast path that performs no layout, scene, host, or
298+ presentation work, plus semantic-only commits that skip pixel presentation
299+ - a software Graphics presenter and shared ` self_drawn_calculator ` smoke that
300+ preserve the reviewed 410x620 layout and scene fingerprints
301+
262302## Roadmap at a glance
263303
264304| Milestone | State | Evidence or next gate |
@@ -269,8 +309,9 @@ independently.
269309| M3 · Layout and Scene | Current | Generic calculator rectangle slice landed; full flex, stacking, redraw scheduling, cross-platform fingerprints, and thin-host presentation remain |
270310| M4 · Text and interaction cutover | Planned | Shaping, glyphs, GUI-owned input, IME, accessibility bridges, overlays, and complete calculator scenarios |
271311| M5 · Default cutover | Planned | Make self-drawn content the default, then delete the three legacy widget renderers |
272- | H0-H5 · Thin platform hosts | H0 complete; H1 next | Zero-widget records, transactions, recording host, target feature markers , and dependency/source firewalls landed; shared window runtime is next |
312+ | H0-H5 · Thin platform hosts | H0 complete; H1 in progress | Atomic shared frames, transactional presentation, lifecycle recovery, zero-toolkit firewalls , and calculator pixels landed; portable input/reducer routing and a real raw-surface presenter remain |
273313| T0-T5 · TSX native authoring | Proposed | Automatic JSX runtime, versioned Node-to-host session, state/event runtime, self-drawn native window, packages, and stable SDK |
314+ | M6-M8 · React Aria components | Catalog pinned; conformance planned | 51/51 families mapped, eight public parts explicitly missing, Button scene smoke only; full software and three-OS self-drawn evidence required |
274315
275316The dependency-ordered plan and acceptance gates are in the
276317[ delivery roadmap] ( docs/roadmap.md ) .
@@ -286,6 +327,7 @@ The default set is `headless + authoring + design-system + software-reference`.
286327| ` software-reference ` | Deterministic retained reference renderer; implies ` graphics ` |
287328| ` gpu ` | Owned offscreen GPU renderer and readback path; implies ` graphics ` |
288329| ` platform-host ` | H0 zero-widget records, transaction trait, recording host, and conformance tests; no Graphics or OS dependency |
330+ | ` platform-runtime ` | H1 Native IR/layout/scene/accessibility frame orchestration over ` platform-host + graphics ` ; no OS toolkit dependency |
289331| ` host-macos ` , ` host-windows ` | H0 target markers over ` platform-host ` ; OS shell implementations land in H2/H3 |
290332| ` host-linux-wayland ` , ` host-linux-x11 ` , ` host-linux ` | H0 target markers over ` platform-host ` ; Linux implementations land in H4 |
291333| ` authoring ` | SWC-backed RSX parsing, ` ComponentCx ` , and explicit component registries |
@@ -305,6 +347,9 @@ cargo check --locked --no-default-features --features software-reference --lib
305347cargo check --locked --no-default-features --features gpu --lib
306348cargo check --locked --no-default-features --features platform-host --lib
307349cargo test --locked --no-default-features --features platform-host --lib platform_host::
350+ cargo check --locked --no-default-features --features platform-runtime --lib
351+ cargo test --locked --no-default-features --features platform-runtime --lib platform_runtime::
352+ cargo test --locked --test react_aria_component_matrix
308353```
309354
310355## Platform hosts: migration baseline and target
@@ -350,6 +395,7 @@ cargo run --locked --example state_loop
350395cargo run --locked --example native_runtime_app
351396cargo run --locked --example dogfood_session
352397cargo run --locked --example component_playground
398+ cargo run --locked --no-default-features --features authoring,platform-runtime,software-reference --example self_drawn_calculator
353399```
354400
355401Host-selecting recipes:
@@ -415,10 +461,11 @@ src/
415461| LayoutSnapshot to Graphics Scene lowering
416462|- render_contract.rs executable field/role/event milestone inventory
417463|- platform_host/ H0 zero-widget records, transactions, recorder, and validation
464+ |- platform_runtime/ H1 atomic frames, presentation lifecycle, and Graphics smoke
418465|- backend/ + platform/ legacy execution/planning migration baseline
419466`- *_native/ AppKit, GTK4, and WinUI control hosts during migration
420467
421- examples/ headless, calculator, dogfood, controls, and playground apps
468+ examples/ headless, self-drawn, calculator, dogfood, controls, and playground apps
422469docs/ architecture, contracts, packaging, language, and roadmap
423470packaging/ unsigned native smoke-bundle assets and validators
424471```
@@ -436,6 +483,7 @@ packaging/ unsigned native smoke-bundle assets and validators
436483- [ TSX to native runtime architecture] ( docs/tsx-native-runtime.md )
437484- [ Native style contract] ( docs/style-contract.md )
438485- [ React Aria native direction] ( docs/react-aria-native.md )
486+ - [ Executable React Aria component matrix] ( docs/react-aria-component-matrix.json )
439487- [ Native app shell] ( docs/app-shell.md )
440488- [ Native packaging] ( docs/packaging.md )
441489- [ Delivery roadmap] ( docs/roadmap.md )
0 commit comments