prometeu-runtime/discussion/workflow/plans/PLN-0099-introduce-owned-render-submission-sink.md

83 lines
2.3 KiB
Markdown

---
id: PLN-0099
ticket: real-render-worker-establishment
title: Introduce Owned RenderSubmissionSink
status: open
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.