--- id: PLN-0099 ticket: real-render-worker-establishment title: Introduce Owned RenderSubmissionSink status: done created: 2026-06-06 completed: ref_decisions: [DEC-0032] tags: [runtime, renderer, hal, errors] --- ## Objective Introduce an owned `RenderSubmissionSink` facade with minimal typed submission errors. ## Background `DEC-0032` requires render publication to move away from `HardwareBridge` and to accept owned `RenderSubmission` values so the contract is compatible with async handoff. ## Scope ### Included - Define `RenderSubmissionSink`. - Define minimal `RenderSubmitError`. - Implement the facade for the current local driver path. ### Excluded - Do not migrate all publication call sites yet. - Do not spawn a render worker. - Do not remove `HardwareBridge::publish_render_submission`. ## Execution Steps ### Step 1 - Define sink and error **What:** Add `RenderSubmissionSink` and `RenderSubmitError`. **How:** `submit_render_submission(&mut self, submission: RenderSubmission) -> Result<(), RenderSubmitError>`. **File(s):** `crates/console/prometeu-hal/src/platform.rs` or a render-specific HAL module. ### Step 2 - Implement local sink **What:** Implement the sink for the current local driver implementation. **How:** Adapt owned submission to the existing local `Hardware` publication path. **File(s):** `crates/console/prometeu-drivers/src/hardware.rs`. ### Step 3 - Add tests **What:** Prove owned submission is consumed by the local sink. **How:** Add driver test using `RenderSubmission::game2d` and `RenderSubmission::shell_ui`. **File(s):** `crates/console/prometeu-drivers/src/hardware.rs` or platform test module. ## Test Requirements ### Unit Tests - Local sink accepts owned Game2D and ShellUi submissions. - Error type is constructible and debuggable. ### Integration Tests - `cargo test -p prometeu-hal -p prometeu-drivers`. ### Manual Verification - Confirm the sink does not take `&RenderSubmission`. ## Acceptance Criteria - [ ] `RenderSubmissionSink` takes owned `RenderSubmission`. - [ ] Minimal typed error exists. - [ ] Local driver implements the sink. - [ ] Existing publication behavior remains intact. ## Dependencies - `PLN-0098`. ## Risks - Local paths may still need temporary borrow adaptation. Keep it internal to the implementation.