CNA-VGAP-041: The CNA_STRICT_XNA_API purity check compiles only the Microsoft::Devices sensor surface
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
cmake/Harnesses.cmake— cna_strict_xna_api_check and cna_strict_xna_api_leak_check targets and their teststools/devices/StrictXnaApiSurfaceCheck.cpp— the strict translation unit: Devices and Sensors includes onlytools/devices/StrictXnaApiSurfaceLeakCheck.cpp— the must-fail twin: Accelerometer only
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.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Known issues
- Verification gap index