2.6 KiB
| id | ticket | title | status | created | completed | ref_decisions | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0114 | real-render-worker-establishment | Add Deterministic Render Worker Test Harness | done | 2026-06-15 |
|
|
Briefing
DEC-0033 requires worker behavior to be proven without a native window and without fragile sleeps. This plan creates reusable deterministic test fixtures for the remaining worker plans.
Decisions de Origem
DEC-0033: Real Render Worker Contract.
Alvo
Add a fake backend and synchronization harness capable of blocking render at controlled points, observing publication, and proving non-blocking VM/producer behavior.
Escopo
- Create test-only synchronization helpers using barriers/condvars.
- Create a fake render backend shape that can block/fail/publish deterministically.
- Add helper functions for constructing owned render submissions and frames.
- Reuse the harness in later worker tests.
Fora de Escopo
- No production worker lifecycle.
- No desktop host integration.
- No real GFX rasterization.
Plano de Execucao
Step 1 - Add test support module
What: Introduce deterministic worker test fixtures.
How: Add test-only helpers under prometeu-system worker tests or a local test module.
File(s): crates/console/prometeu-system/src/services/vm_runtime/*.
Step 2 - Add controllable fake backend
What: Provide backend behavior for tests. How: Fake backend can block at render start, unblock by test signal, return errors, and record published frames. File(s): worker test module.
Step 3 - Add submission/frame builders
What: Make tests concise and consistent.
How: Build Game/Shell submissions with explicit frame ids and ownership metadata; build OwnedRgba8888Frame fixtures.
File(s): worker test module.
Step 4 - Add initial harness self-tests
What: Prove harness itself is deterministic. How: Verify a test can block and release backend render without timing sleeps. File(s): worker test module.
Criterios de Aceite
- Tests can block worker backend render using deterministic synchronization.
- Tests can observe published
OwnedRgba8888Framevalues. - Harness can inject backend errors.
- Harness helpers are scoped to tests or clearly internal.
Tests / Validacao
cargo test -p prometeu-system render_workerrg "sleep\\(|thread::sleep" crates/console/prometeu-system/src/services/vm_runtime -n
Riscos
- Test harness code can become too coupled to implementation internals.
- Overly broad helpers can hide important assertions in later plans.