4.0 KiB
| id | ticket | title | status | created | completed | ref_decisions | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0048 | runtime-mode-separation-game-system | Minimal System Hub Pipeline | done | 2026-05-14 |
|
|
Briefing
This plan moves focused System execution out of the game-oriented frame path and into a minimal Runtime/Hub pipeline. The pipeline may initially be thin, but it must be named, testable, and owned by the Hub/WindowManager domain.
Decisions de Origem
DEC-0023- System Pipeline Separation.
Alvo
Create a minimal System profile execution path that handles system execution, events, and presentation through Runtime/Hub concepts instead of the game pipeline.
Escopo
- Add a small system pipeline entry point owned by
prometeu_systemor the firmware Hub domain. - Move focused system VM ticking from generic
HubHomeStepinline logic into that entry point. - Keep rendering oriented around
PrometeuHubandWindowManager. - Preserve the current minimal behavior where a focused system window may tick the VM and render hub windows.
Fora de Escopo
- No final component tree, invalidation model, transition model, lifecycle contract, or multitasking scheduler.
- No public PBS ABI.
- No game pipeline changes.
Plano de Execucao
Step 1 - Define the minimal system pipeline API
What: Introduce a function/type that represents one system-profile update.
How: Create a small API that accepts the runtime, VM, input signals, hardware, and hub/window state needed today, and returns an optional CrashReport.
File(s): crates/console/prometeu-system/src/programs/prometeu_hub/prometeu_hub.rs, possible new module under crates/console/prometeu-system/src/programs/prometeu_hub/.
Step 2 - Move focused system ticking behind the pipeline API
What: Remove direct focused-system ctx.os.tick(...) calls from hub-home or system-running firmware code.
How: Replace inline ticking with the new Runtime/Hub pipeline call. Keep behavior equivalent: hub GUI updates, focused window handling, system app tick, hub render, present.
File(s): crates/console/prometeu-firmware/src/firmware/firmware_step_hub_home.rs, new system-running step from PLN-0047.
Step 3 - Keep game surfaces private to the game profile
What: Ensure the system pipeline does not expose game composition APIs as its public contract.
How: The system pipeline may temporarily use existing internal hardware presentation to preserve behavior, but its public entry point must be named around hub/system concepts and must not accept or return FrameComposer, game banks, sprites, or game input abstractions.
File(s): crates/console/prometeu-system/src/programs/prometeu_hub/, crates/console/prometeu-firmware/src/firmware/.
Step 4 - Add focused-system pipeline tests
What: Prove the system pipeline is invoked for focused system windows.
How: Add tests using existing test support or fakes to assert that a focused system app uses the system pipeline call and returns crashes through the system state, not through GameRunningStep.
File(s): crates/console/prometeu-firmware/src/firmware/firmware.rs, crates/console/prometeu-system/src/programs/prometeu_hub/.
Criterios de Aceite
- Focused
Systemexecution is behind a Runtime/Hub-named pipeline entry point. - Firmware no longer embeds the focused system VM tick as anonymous hub-home logic.
- Game-running code is not modified except for compile integration.
- The system pipeline remains minimal and does not define deferred WindowManager contracts.
Tests / Validacao
cargo test -p prometeu-firmwarecargo test -p prometeu-system- Manual smoke run of a
Systemcartridge should show the hub/window path still presents.
Riscos
- The current system window rendering is simple and hardware-backed; the plan allows internal reuse while preventing it from becoming the public system ABI.
- Test support may need small fakes to observe routing without introducing broad runtime refactors.