Thing/docs/renderer-parity.md
2026-06-05 22:07:43 +01:00

3.8 KiB

Eve Renderer Parity

Parity is currently uneven by design. The shared surface contract is forming, but the browser reference is the first renderer that can be used as a practical comparison oracle.

See runtime-app-parity-roadmap.md for the generic Eve app plan across web, Flutter, Fensalir Direct2D, iOS/UIKit, and Android/Kotlin. Repixelizer is the first style-parity target.

Pixel parity is not byte-identical screenshot parity. Text rasterization, antialiasing, GPU backends, and device scale will differ. The target is recognizable CultUI fidelity: the same partitions, fonts, colors, panel treatments, spacing, image sampling intent, and control anatomy lower cleanly enough that Repixelizer remains itself across runtimes.

The shared fixture/report path lives in parity-testing-harness.md. That harness is the current evidence surface for semantic parity and runtime capture gaps.

Current State

Renderer Status Proof Gap
Web reference Active reference/debug renderer web/ renders live VoidBot and fixture surfaces through the provider picker; compiles indentation CultUI; lowers partitions, field rows, and slider anatomy; Chrome headless capture emits phone/tablet/desktop PNGs Needs command round-trip tests
Windows / Flutter Active shared graphical smoke target flutter/eve_parity loads exported gamecult.eve.surface.v1 fixture JSON and emits phone/tablet/desktop golden PNGs through capture-flutter-parity.ps1 Needs native window capture and tighter text/style normalization
Linux / Flutter Active shared graphical smoke target Nightwing runs the Flutter parity goldens over SSH and returns phone/tablet/desktop PNGs Needs native window capture and runner health checks
iOS / UIKit Active native screenshot target SSH capture stages selected fixture JSON, EveCanvas renders it, and emits a PNG from /var/mobile/Library/EveCanvas/latest-screenshot.png Needs real scene composition for vn.stage, Repixelizer token fidelity, and responsive/simulator capture
Android / Kotlin Active device screenshot target APK builds with selected fixture assets; Periwinkle captures phone/tablet/desktop plus native portrait/landscape PNGs through adb Needs text scale/font normalization, image lowering, and command controls
Fensalir Direct2D Specialized native/game-runtime landing zone Existing AquariumUiDocument and DirectWriteOverlay path Needs adapter from Eve surface document to AquariumUiDocument, DirectWrite/Direct2D token lowering, and a clear reason to stay separate from Flutter for desktop UI

Spawned Surfaces

The browser reference runner now exposes local advertisements through the provider picker:

  • VoidBot Live: connects to Mimir's /eve/deck broker and opens voidbot.swarm.
  • Repixelizer: loads web/fixtures/repixelizer.provider-advertisement.json and web/fixtures/repixelizer.eve-surface.json.
  • Fensalir Direct2D: loads web/fixtures/fensalir-client-surface.json, a recorded surface describing the Direct2D client lowering path.
  • Sai VN Surface: loads web/fixtures/sai-vn-surface.json.
  • Huginn .cc: compiles web/fixtures/huginn-cc-surface.eve.
  • Reactive DSL: compiles web/fixtures/reactive-composition.eve.
  • CultUI Inspector: compiles web/fixtures/cultui-slider-inspector.eve and proves partition/field-row/slider-anatomy lowering in the web reference.

The remaining temporary part is the local provider list itself. The runtime app target is the same picker fed by live gamecult.eve.provider_advertisement.v1 documents through CultMesh/Odin.

Start it with:

powershell -ExecutionPolicy Bypass -File .\scripts\start-browser-reference.ps1

Then open:

http://127.0.0.1:8891/