Problem
The interaction tier v1 (approvals spine) shipped. The transfer broker is scoped to text/metadata; copying a GPU surface (canvas/composited page) would force a CPU round-trip, which the design forbids. A browser eventually needs zero-copy surface copy/paste.
Current state
src/Skyline.Interaction/Transfer.cs — TransferOffer carries a string payload; no GPU-handle representation.
docs/plans/interaction-tier.md §8 lists Skyline.Interaction.Gpu as v2+ ("yields a wgpu handle … byte-stream would force a processor round-trip, which is forbidden").
What's needed
- A new
Skyline.Interaction.Gpu project (deps: Skyline.Interaction + Skyline.Gpu).
- A wgpu-handle transfer representation (texture handle + format + size + allowed usage) and broker methods to offer/take it, with lifetime tied to the grant.
Acceptance criteria
- A surface can be offered, taken, and revoked through the broker with no CPU round-trip; the taken handle refers to the same texture.
Notes
The rest of interaction v2 (focus graph, targets, commands, Akka runtime) is deferred-by-design and not required to host Starling.
Problem
The interaction tier v1 (approvals spine) shipped. The transfer broker is scoped to text/metadata; copying a GPU surface (canvas/composited page) would force a CPU round-trip, which the design forbids. A browser eventually needs zero-copy surface copy/paste.
Current state
src/Skyline.Interaction/Transfer.cs—TransferOffercarries a string payload; no GPU-handle representation.docs/plans/interaction-tier.md§8 listsSkyline.Interaction.Gpuas v2+ ("yields a wgpu handle … byte-stream would force a processor round-trip, which is forbidden").What's needed
Skyline.Interaction.Gpuproject (deps:Skyline.Interaction+Skyline.Gpu).Acceptance criteria
Notes
The rest of interaction v2 (focus graph, targets, commands, Akka runtime) is deferred-by-design and not required to host Starling.