CNA-GAP-061: No renderer implements IResourcePreviewProvider, and the seam cannot cancel a preview ticket the agent abandons

CNA snapshot 009d40f5  ·  Known Issues › Functional gaps  ·  source links pinned to 009d40f5

✓

Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit 009d40f5; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.

Resource previews are unavailable in every real Inspector session because no CNA renderer installs a preview provider, and when a client disconnects the agent drops its pending tickets without telling the provider.

Identifier
CNA-GAP-061
Category
Functional gap
Subsystem
Diagnostics & Inspector
Status
Open
Verified against
CNA 009d40f5 (009d40f5dd085c4e674d3479675fac84b12b3e0a)
Evidence basis
Source-verified: read at TARGET, not executed
Tests touching this area
Yes: see Current tests
Affected contract
CNA::Inspector::IResourcePreviewProvider (RequestPreview, PollPreview) and AgentConfiguration::previewProvider

Expected behaviour

What the seam describes: explicit, bounded texture and render-target previews through renderer-local non-blocking readback, with outstanding work released when nobody will poll for it.

Actual behaviour at TARGET

IResourcePreviewProvider appears only in modules/inspector (Agent.hpp, its tests and its benchmark); no renderer or example installs one, so Capability::ResourcePreviews is never negotiated in a real session, a deferral docs/inspector.md records. The interface has no cancel method: Agent::Impl::Run clears pendingPreviews_ after each client disconnects without calling the provider, and a reconnecting client may start up to maximumPendingPreviews (default 4, at most 16) new tickets each time. Bounding outstanding readbacks is left to the provider, and the interface's documentation does not say so.

Source locations

Evidence

Checked by searching modules and reading Agent.cpp and docs/inspector.md at 009d40f5. Not executed.

Focused reproduction

No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.

Current tests

PreviewIsExplicitAsynchronousAndBounded, PendingPreviewCountIsBounded, PreviewPollHonorsTheOriginalRequestBounds and InvalidPreviewSourceCannotBreakTheConnection use fake providers; none disconnects with tickets pending.

Regression test

When a provider or a cancel call lands: disconnect with pending tickets and assert the provider is told (or that its documented expiry releases the work).

Blast radius

Inspector users (Preview is always unavailable) and future provider implementers.

Workaround

An application may install its own provider through AgentConfiguration::previewProvider and expire its own outstanding readbacks.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.