CNA-VGAP-041: The CNA_STRICT_XNA_API purity check compiles only the Microsoft::Devices sensor surface

CNA snapshot 009d40f5  ·  Known Issues › Verification 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.

cna_strict_xna_api_check and its must-fail twin include only Microsoft::Devices and Sensors headers, so no automated check covers strict-mode purity or marker completeness of the graphics, content, input, audio, media or runtime surfaces.

Identifier
CNA-VGAP-041
Category
Verification gap
Subsystem
Testing & evidence
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_STRICT_XNA_API and the CNAEXT marker (StrictXnaApiSurfaceCheck_Compile_Run, StrictXnaApiSurfaceLeakCheck_MustFailToCompile)

Expected behaviour

The CNAEXT marker exists so that a strict build can prove a program uses only the XNA 4.0 surface. That promise is framework-wide; the evidence for it should be too.

Actual behaviour at TARGET

Harnesses.cmake builds cna_strict_xna_api_check from StrictXnaApiSurfaceCheck.cpp, which includes VibrateController and the Sensors headers (plus three math value types) and calls only their members. The must-fail twin StrictXnaApiSurfaceLeakCheck.cpp includes only Accelerometer.hpp. No test compiles graphics, content, input, audio, media or runtime calls under the strict macro, and nothing checks that non-XNA members carry the marker at all (the unmarked Texture and GameWindow members listed in a separate Known Issues entry pass unnoticed).

Source locations

Evidence

Checked by reading at 009d40f5; not executed.

Both targets are GCC/Clang-only (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang").

Focused reproduction

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

Current tests

StrictXnaApiSurfaceCheck_Compile_Run (must compile and run) and StrictXnaApiSurfaceLeakCheck_MustFailToCompile (WILL_FAIL), both Microsoft::Devices only.

Regression test

Per-namespace strict translation units that call a representative XNA-only subset (must compile) and one CNAEXT member each (must fail), or a header scanner that compares public members against the XNA census and requires the marker on the rest.

Blast radius

The credibility of strict-mode purity outside Microsoft::Devices. Runtime behaviour is unaffected.

Workaround

No workaround is known.

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