2.3 KiB
2.3 KiB
| id | ticket | title | status | created | ref_decisions | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| PLN-0080 | render-frame-packet-boundary | Shell UI Packet and GfxUI Domain | open | 2026-05-25 |
|
|
Briefing
Source decision: DEC-0030.
Add gfxui.* command buffering and ShellUiFramePacket for Shell UI primitives while keeping widget/layout policy outside the host/render-surface implementation.
Target
Shell UI emits typed UI primitive commands into a Shell-only packet that render-surface implementations can consume without collapsing UI and Game ABI domains.
Scope
- Define
gfxui.*primitive commands. - Add a mutable Shell UI command buffer.
- Close Shell UI commands into
ShellUiFramePacket. - Enforce Shell-only capability and app-mode access.
- Keep widget/layout policy in Shell/UI code or stdlib layers.
Out of Scope
- Migrating all Shell callsites; that is handled by the Shell/Hub migration plan.
- Game primitive rendering.
- New widget framework.
- Host-owned debug overlay.
Execution Sequence
- Define the
gfxui.*syscall and command vocabulary needed for current Shell UI primitives. - Add a Shell UI command buffer and closure into
ShellUiFramePacket. - Add capability metadata and resolver enforcement for
GFXUI. - Add a render-surface consumer path that can rasterize Shell UI commands as an implementation detail.
- Keep layout/widget decisions above the packet boundary.
- Add tests for closure, app-mode gating, and packet consumption.
Acceptance Criteria
- Shell UI commands close into
ShellUiFramePacket. gfxui.*does not contain widget/layout policy.- Game mode cannot call
gfxui.*. - Host/render-surface code consumes commands without redefining Shell UI product policy.
Tests / Validation
- Add Shell UI command buffer unit tests.
- Add app-mode rejection tests for Game mode.
- Add render-surface consumer tests for representative primitives.
Risks
- It is easy to migrate widget policy into host rendering while adding UI primitives; keep commands low-level and policy-free.
- Shell UI and Game primitives may rasterize similarly, but ABI domains must remain distinct.
Affected Artifacts
- Shell UI render domain modules under
crates/ - Syscall metadata and tests