83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
---
|
|
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.
|