--- id: PLN-0089 ticket: vm-render-parallel-execution-boundary title: Introduce Render Handoff Abstraction status: open created: 2026-06-05 ref_decisions: [DEC-0031] tags: [runtime, renderer, handoff, latest-wins] --- ## Briefing `DEC-0031` requires a single-slot latest-wins handoff where the producer never blocks on render ACK and replacement before consumption is observable. ## Objective Introduce a render handoff abstraction that can be used synchronously today and by a worker later. ## Dependencies - Source decision: `DEC-0031`. - `PLN-0093` should define telemetry counters before final instrumentation is wired. ## Scope - Add a small handoff type or trait around one pending owned `RenderSubmission`. - Support publish, take latest, replace pending, and drain/discard operations. - Report replacement/drop events to telemetry hooks. - Integrate the abstraction into `RenderManager` without starting a worker. ## Non-Goals - Do not spawn a thread. - Do not implement frame pacing. - Do not change Shell UI default rendering policy. ## Execution Method 1. Locate `RenderManager::latest_complete_submission` ownership and publication flow. 2. Introduce a handoff module with single pending slot semantics. 3. Move `RenderSubmission` into the slot on publication. 4. Make `take_latest` transfer ownership to the consumer. 5. Count replacement when a pending submission is overwritten before consumption. 6. Keep current synchronous publication working by immediately taking and rendering through the same abstraction. ## Acceptance Criteria - `RenderManager` no longer relies on an unconstrained raw `Option` for the future worker boundary. - Publishing a newer pending submission replaces the old one without blocking. - The consumer receives owned submissions. - Replacement before consume is observable. ## Tests - Unit tests for empty take, publish/take, publish/replace/take, and drain/discard. - Integration smoke test that existing synchronous render still presents frames. ## Affected Artifacts - `crates/console/prometeu-system/src/services/vm_runtime/render_manager.rs` - New or existing render handoff module under `crates/console/prometeu-system`. - Render manager tests.