prometeu-runtime/discussion/workflow/plans/PLN-0102-introduce-game2d-frame-composer-service.md

2.4 KiB

id ticket title status created completed ref_decisions tags
PLN-0102 real-render-worker-establishment Introduce Game2DFrameComposer Logical Service done 2026-06-06
DEC-0032
runtime
composer
game2d
platform

Objective

Introduce Game2DFrameComposer as the logical-side service/facade for Game2D frame preparation.

Background

DEC-0032 states that bind_scene, set_camera, emit_sprite, and close_game2d_packet are logical frame preparation, not physical backend behavior.

Scope

Included

  • Define a Game2DFrameComposer facade.
  • Move or wrap existing FrameComposer behavior under logical-side naming.
  • Migrate composer syscalls to use the facade rather than generic hardware.

Excluded

  • Do not rewrite scene cache internals.
  • Do not move viewport cache across threads.
  • Do not implement worker.

Execution Steps

Step 1 - Define composer facade

What: Add Game2DFrameComposer trait or service contract. How: Include begin_frame, bind_scene, unbind_scene, set_camera, emit_sprite, close_game2d_packet, and required read checks. File(s): crates/console/prometeu-hal/src/platform.rs or composer-specific HAL module.

Step 2 - Implement using current composer

What: Make current local driver composer satisfy the new logical service. How: Reuse FrameComposer implementation under adapter/implementation. File(s): crates/console/prometeu-drivers/src/frame_composer.rs, crates/console/prometeu-drivers/src/hardware.rs.

Step 3 - Migrate composer syscalls

What: Dispatch composer syscalls through Game2DFrameComposer. How: Remove dependency on HardwareBridge methods for composer. File(s): crates/console/prometeu-system/src/services/vm_runtime/dispatch.rs.

Test Requirements

Unit Tests

  • Composer facade closes packets equivalent to previous FrameComposer.
  • Invalid scene/bank behavior remains unchanged.

Integration Tests

  • Existing scene/composer runtime tests pass.

Manual Verification

  • Composer syscalls no longer require &mut dyn HardwareBridge.

Acceptance Criteria

  • Game2DFrameComposer exists as logical service/facade.
  • Composer syscalls route through it.
  • Existing Game2D scene rendering remains correct.

Dependencies

  • PLN-0098.
  • PLN-0101.

Risks

  • Scene cache ownership can be accidentally moved too early. Keep cache behavior local while changing the boundary.