docs(plan): the raw-handle export change file — approved delta for #1900 - #1904
Conversation
Owner-approved /propose-change artifact implementing the spelling half of the [raw-handle-export-contract] DECIDED entry: export_opaque_fd on the Full surface returning typed OpaqueFdTextureExport, the refusal redirect, two additive surface-share registration fields (vk_memory_type_index, exporting_device_uuid), child-side parse of the recipe fields already on the wire, tests incl. the rig round trip and the fd-outlives-teardown probe. §Packages flipped IN-FLIGHT with the change. ADR arm discharged by the existing docs/decisions/raw-handle-export-contract.md. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 34 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… archive (#1908) The change maps 1:1 to #1900, closed 2026-08-22 by PR #1905, so the milestone precondition is one ticket and it is merged. The removal gate has nothing to verify: the change declares no REMOVED bullets, by design — this was additive spelling over plan text #1903 had already merged. The §Packages raw-handle entry is marked SHIPPED. Most of what the change built was already written there by the align, so the fold adds only the three contract facts the entry did not state: - An export is taken from a resolved surface, never from a name. The fd reaches a helper at checkout, so an acquired-but-unresolved texture is refused telling the caller to resolve its surface id first, and every other refusal names the flavour's own door. - The recipe travels because a raw allocation is consumed as an image. A linear buffer mapping over tiled memory yields block-linear bytes, never pixels — the reason tiling, usage and the mip/layer/sample counts are on the export object rather than being the importer's guess. - A successful import pins the payload past the exporter destroying the texture it came from, which is the useful direction of "the surface-id lifetime guarantees end at export". The OPEN zero-copy-per-frame entry is untouched — it is its own align. The system diagram gains the helper→packages edge. Neither #1903 nor #1904 drew this contract, so the entry was unrepresented against the plan's own rule that every DECIDED entry appears in the diagram. Refs #1900 Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
The owner-approved
/propose-changeartifact for #1900:docs/plan/changes/raw-handle-export-contract.md(142 lines), implementing the spelling half of the merged[raw-handle-export-contract]DECIDED entry. §Packages flips toIN-FLIGHT (→ …, raw-handle-export-contract).The delta, recon-verified at
da1192ba:export_opaque_fdonGpuContextFullAccessreturning typedOpaqueFdTextureExport(answered child-locally from checkout state); theexport_dma_bufrefusal redirect + mirror refusals; two additive JSON registration fields (vk_memory_type_index,exporting_device_uuid) — the image-creation recipe is already on the wire and only needs child-side parsing; tests including #1900's rig round trip and the fd-outlives-teardown probe; one README rot line. NoREMOVEDbullets, no[NEEDS DECISION]. ADR arm discharged by the existingdocs/decisions/raw-handle-export-contract.md.Closes
Closes nothing — #1900 implements against this change next.
Notes for owner
Approved in-session 2026-08-22 ("Approved"). Merge unblocks
/implement 1900; derive-tickets is a no-op — the change maps 1:1 to the existing ticket.