Rendering parity and experiment ledger

This ledger records current capability and focused evidence. It is not a checklist requiring Babylon to reproduce every Pixi feature before pre-alpha play.

Status values

Current capability

CapabilityPixiBabylonEvidence / owner
One Match-owned rAF and visual clockcompletecompleteBabylon calls scene.render() only from the Match frame seam.
Semantic camera/projectioncompletecompleteFixed perspective and scene-camera coefficients share one snapshot.
Perspective-safe selection/marquee/ground hitscompletecompleteShared SelectionSceneV1 receives the selected camera projection.
Detached fog-filtered dynamic presentationcompletecompleteBoth adapters read only structured-cloneable PresentationFrameV2; Pixi reconstructs private projection/grid helpers.
Babylon backend construction isolationn/amissingMatch currently passes Babylon the broad mutable Pixi-oriented source bag even though the adapter uses only its profiler hook.
Default Pixi and explicit lazy Babylon selectorcompletecompletertsRenderer=babylon is live-player/Lab-only and lazy; replay/spectator matches stay Pixi.
Narrow detached static-map deliverycompletemissingBabylon is passed a broad source bag containing a static-map callback but has no safe narrow contract and does not consume the data.
Sole Pixi module-worker pathcompleten/aLive, replay, spectator, Lab, fixed capture, stress, and Map Editor transfer one visible canvas to the same WebGL-only worker host; architecture checks reject a second Pixi owner, WebGPU path, flag, or fallback.
Render-worker message vocabularycompleten/aRenderWorkerMessageV1 separates initialization, map, durable, revisioned, frame, resize/capture/reset/destroy lifetimes and validates current-generation acknowledgments.
Worker-decodable Pixi assetscompleten/aGround-decal SVG sources generate one checked-in PNG atlas; every runtime raster path uses OffscreenCanvas plus fetch/createImageBitmap with parity-pinned alpha/color decode. Worker readiness waits for all assets.
Map Editor detached Pixi boundarycompleten/aThe viewport keeps camera/input RAF responsive while serializing MapEditorPresentationV1 worker submissions, coalescing terrain by tile, and retaining terrain/overlay revisions until presented; the common Pixi worker owns editor display objects, WebGL, ordered resize, failure, and teardown.
Terrain and resource-site readabilitycompletemissingBabylon draws one flat map-bounds plane and does not present terrain classes or static resource sites.
Current/explored fog, memory, intel, and revealscompletecompleteRevisioned grids, separated presentation layers, and two-recipient secrecy check.
Generic entity presence, team, selection, HP, and progresscompleteplaceholderShared boxes and bars truthfully cover every received entity but are not kind-readable.
Existing PNG/WebP/sprite-sheet/SVG reuse as flat artcompletemissingPlayable catch-up prefers directly reusable checked-in art on Babylon billboards/planes, with primitive fallback.
Unit/building kind, facing, weapon, and setup readabilitycompletemissingBabylon does not visibly distinguish most kinds and ignores weapon-facing/setup presentation.
Entity-backed ability, weapon, and fuel-status cuescompletemissingActive auras, loaded/active states, and low-oil feedback have no Babylon representation.
Basic move/attack/build interaction feedbackcompletepartialMarquee, selected order lines, command/attack markers, and placement footprints work; rallies, ranges/arcs, and specialized target/setup previews are absent.
Trenches, smoke, and ability objectscompletemissingThese gameplay-significant frame records are currently ignored by Babylon.
Existing command, ability, and combat feedback catalogcompletemissingSmoke, mortar, artillery, panzerfaust, muzzle, miss, resource, support-weapon, ability, and Lab feedback still render only in Pixi.
HUD, minimap, lobby, panels, audio, control groupsshared externalshared externalExisting shared surfaces.
New/re-authored art, full rig/animation parity, cosmetic decals, and observer/debug overlayscompletedeferredDirect reuse of existing flat art is in scope; broader fidelity work waits unless playtest evidence shows a blocker.
Replay/spectator Babylon routescompletedeferredFuture product need; these routes stay Pixi and must not load or depend on Babylon.
Benchmarks, pools, vegetation, shadows, quality tiersn/adeferredAdd only from measured need.
Babylon live/Lab default with explicit Pixi rollbackcompletemissingFinal step after a real playtest and a no-selector live canary; selector/fallback checks must prove Pixi routes do not load Babylon.
Pixi removalcompletedeferredKeep Pixi for rollback and replay/spectator until a later product decision.

Completed shared-boundary evidence

P1-camera

node tests/client_contracts/camera_projection_contracts.mjs proves semantic camera operations, CSS-pixel projection, nullable ground hits, snapshots, and Pixi orthographic equivalence.

P1.5-navigation-minimap and P1.75-shared-camera

Minimap/input, audio, replay, Lab, control-group, and architecture contracts prove shared consumers no longer rely on raw orthographic camera representation.

P2-perspective-selection

node tests/client_contracts/selection_projection_contracts.mjs proves fog-filtered detached selection proxies, fake-perspective click/marquee behavior, nullable ground hits, stable admission, and mesh-independent targeting.

P3-presentation-frame and P3.5-pixi-cutover

Presentation-frame, coordinator, Pixi-adapter, renderer-feedback, Lab capture, architecture, and browser-smoke contracts prove one detached frame assembly, exact layers/grids, one render(frame) call, private Pixi compatibility reads, revision-exact durable decal retention, bounded lifecycle failure, and acknowledged-presented-frame selection publication.

renderworker-phase-3

Worker-host lifecycle/message contracts, route browser checks, the architecture ratchet, independent main/worker CPU profiles, the canonical Hellhole stream, and 16 deterministic decoded-RGBA samples prove the atomic Pixi cutover. The host bounds work to one in-flight plus one latest pending frame, keeps decals independently durable, publishes selection only for the acknowledged frame, orders resize/reset/teardown, and reads fixed-capture pixels in the presenting worker task. The Phase 2 main-thread Pixi baseline and worker output are pixel-identical at all required sampled ticks.

P4-babylon-kernel

Selector, fixed-perspective, coordinate, backend lifecycle, client architecture, and Lab browser contracts prove lazy opt-in loading, shared scene/selection projection, centralized world/scene conversion, Match-owned presentation, resize, bounded failure, and idempotent cleanup. Babylon at that checkpoint drew only the authoritative map bounds and bounded visible generic primitives; fog and playable feedback were intentionally left to Phase 5.

P5-fog-interaction-slice

Babylon kernel and real two-recipient contracts prove revisioned current/explored fog, explicit memory/intel/reveal categories, aggregate-only diagnostics, generic entity state, minimal command feedback, and absence of a never-authorized sentinel from the presentation frame, scene, selection candidates, and diagnostics. Shared perspective selection remains mesh-independent; live-player and Lab routes are explicit while Pixi stays the default and owns replay/spectator rendering. This proved the control and secrecy slice; it did not make terrain, entity identity, gameplay zones, or the existing feedback catalog readable enough for a normal live-renderer cutover.

Evidence policy

Each remaining phase records only the commands and inspected Lab capture that cover its central risk. Manual review is appropriate for visual readability; automated checks remain required for authority/secrecy, projection agreement, and loop/teardown ownership.

The active plan in plans/render3d/ owns the flat-art-or-primitive playable catch-up and live-player cutover. Missing or deferred rows outside that plan create no automatic phase, and visual fidelity is not a cutover requirement.